Ru-Board.club
← Вернуться в раздел «Программы»

» VMware application virtualization (Thinstall)

Автор: Angel Hranite
Дата сообщения: 19.05.2008 10:52
ПОЛУЧИЛОСЬ!!! Теперь все кидает на сервер и реестр не гадит!!! спасибо за помощь! только ломать надо на каждом компе ... весит 125 метров
Автор: vv07
Дата сообщения: 19.05.2008 11:15
В оющем,придеться каждый раз активировать.Она действительно к железу привязываеться.
Ну да ладно,для себя делал.
Автор: uDavBoa
Дата сообщения: 19.05.2008 12:37
Повторюсь

Я сделал Portable программу MS SQL Server 2000 заработала но требует реальных сервисов, можно как нибудь сделать чтобы эта версия была полностью виртуальной. (сделать сервисы виртуальными)

Сделал так как написал dj_Diesel

в папке где находится запускной файл службы поставьте атрибут.ini Merged
и до этой папки везде Merged
и пересобери

Может еще что то надо подправить, всеравно требует реальный сервис


Автор: hpoint
Дата сообщения: 19.05.2008 13:15
Ребята, учите лучше английский, это все-же не китайский. За год реально выучить, а пригодится на всю жизнь.
Смотрел я ради интереса на эту Прагму, бредово переводит.

Добавлено:
grinchukav

Цитата:
Вопрос, как отмониторить эти штуковины (в первую очередь драйвера и глубокую интеграцию в оболочку)? Надоело пользоваться методом втыка и гадать о причинах очередной неудачи.
Вопрос не совсем ясен. Как его надо понимать? Как узнать, включил ли разработчик в свое приложение что-то препятстаующее портабилизации?
Это можно только предполагать, в зависимости от задач, решаемых софтом. Но точно Вам никто не скажет, кроме испытаний. А испытания предполагают установку. Так не проще ли попытаться, чем думать, получится или нет?!


Добавлено:

Цитата:
Может еще что то надо подправить, всеравно требует реальный сервис

Не каждое приложение позволяет себя за'thinstall'ить. Иногда, вроде как, ничего не должно мешать этому, ан нет, хоть тресни, и атрибуты какие надо, а она, зараза, не работает. Думаю, надо вздохнуть, и... идти дальше.
А с новой версией thinstall'а попробовать снова.
Автор: dj_Diesel
Дата сообщения: 19.05.2008 14:44
hpoint
Просто MS sql специфичная прога)
Автор: ynbIpb
Дата сообщения: 19.05.2008 15:33
Angel Hranite
Можно по порядку всё разъяснить для общественности. так сказать мини справка и в шапку можно потом впихнуть?
Как я понимаю реализована задача: когда юзер запускает программу то его песочница сохраняется на серваке и для каждого юзара песочница уникальна? у каждого свои настройки?
Автор: hpoint
Дата сообщения: 19.05.2008 16:19
ynbIpb
Я не Ангел, но постараюсь ответить.

1. Поведение песочницы (Sandbox) определяется параметрами задаваемыми в файле проекта Package.ini.
Основные из них:
SandboxName=Имя песочницы
SandboxPath=Каталог, где распологается песочница
;RemoveSandboxOnExit=1, если раскомментарен (удален символ ';'), то песочница очищается по завершении приложения.

Если SandboxPath не определен, то его значение по умолчанию равно:
SandboxPath=%USERPROFILE%\Application Data\Thinstall

2. Если установлена переменная окружения THINSTALL_SANDBOX_DIR, то значение SandboxPath переопределяется на ее значение.
Переменную THINSTALL_SANDBOX_DIR можно задать в:
Панель управления -> Система -> Дополнительно -> Переменные среды -> Создать для Переменные среды пользователя или Системные переменные.
Затем компьютер перегрузить.

или, для тестирования (или если так вам надо), переменную можно определить в командном файле (AnyName.bat), например так:

@echo off
rem где X: - это, например, сетевой диск, а MySandbox - имя вашей песочницы,
set THINSTALL_SANDBOX_DIR=X:\MySandbox
rem YourThinstalledApplication.exe - имя вашего приложения
YourThinstalledApplication.exe

затем запустить этот командный файл.
Как избавиться от консоли? Это вопрос другого раздела форума.

Автор: dj_Diesel
Дата сообщения: 19.05.2008 17:08
hpoint
от консоли избавиться легко есть довольно много программ весом около 50 кб
которые скрывают консоль т.е. будет silent run)
Автор: hpoint
Дата сообщения: 19.05.2008 17:41
dj_Diesel
Я знаю, поэтому и говорю, что не в этой теме.
Автор: ynbIpb
Дата сообщения: 19.05.2008 18:42
hpoint
Спаибо! Всё понял. Метод замечательный, так как сборка будет одна, а у каждого юзера своя переменная и ссобветственно свой путь к песочнице. супер. На серваке диск покриптую и всё в ажуре.
Автор: Vik12J
Дата сообщения: 19.05.2008 21:26
Всем привет. Вообщем такая проблема. Создаю программу все работает, но когда жму на кнопку помощь не чего не открывается. А должен открыться файл справки в формате CHM. Подскажите что я делаю не так. Спасибо.
Автор: Angel Hranite
Дата сообщения: 19.05.2008 22:04
hpoint

Цитата:
Я не Ангел, но постараюсь ответить.

спасибо, но я уточню пару моментов. Я сделал "SandboxPath=." плюс в том, что если ты забудешь создать переменную и запустишь, то все распакуется в папку Thinstall (ставлю возле каждого приложения).

и еще от hpoint

Цитата:
В корне проекта создайте ##Attributes.ini:
[Isolation]
DirectoryIsolationMode=Merged
RegistryIsolationMode=WriteCopy

это позволяет не гадить в реестре ключами
ну вот пожалуй и все!

---------------------------------------------

подскажите пожалуйста, как вскрыть собраный проект чтобы увидеть именно Package.ini ?

"как можно пересобрать пакет, если нету исходного Build а [?] от AmonRaaa" прочитал, но это не то!!! нашел софтинку, которая состаит из одного файла и без дополнительных переменных делает сама себе путь на сервере с именем компа! КАК ЭТО МОЖНО УВИДИТЬ???
Автор: Stendvik
Дата сообщения: 20.05.2008 01:47

Цитата:
нашел софтинку, которая состаит из одного файла и без дополнительных переменных делает сама себе путь на сервере с именем компа! КАК ЭТО МОЖНО УВИДИТЬ???


Увидеть что? Переменные? Из командной строки set без параметров или в свойствах компьютера -> дополнительно -> переменные среды.
Автор: CrazyDeath
Дата сообщения: 20.05.2008 02:51
to Angel Hranite
Выложи софтинку, посмотрим.
Автор: dj_Diesel
Дата сообщения: 20.05.2008 05:14
Vik12J
что то я не пойму Тебе просто справка чтоб работала нужно да?
и что за программа кстати
Автор: Angel Hranite
Дата сообщения: 20.05.2008 07:19
CrazyDeath, у меня жопорез и софтинка весит 100 метров, без вариантов.

хотел бы посмотреть что там в пути разпаковки написано... просто файл 1, а в пути появляется имя компа без создания переменных
Автор: Vik12J
Дата сообщения: 20.05.2008 13:53
dj_Diesel

Цитата:
что то я не пойму Тебе просто справка чтоб работала нужно да?
и что за программа кстати

Любая программа, например в в папке с программой лежит файл справки формата CHM и когда в программе нажимаешь на справку или помощь он открывается. После того как я делаю портативную программу ( неважно какую, любую) и запускаю ее, то после нажатия на кнопку справки или помощи она не открывается. Не запускается файл CHM. Скачивал для интереса с инета на пробу другие портативные программы, там все открывается нормально. Наверное делаю что то не не так. Вообщем такая вот проблема.
Автор: hpoint
Дата сообщения: 20.05.2008 15:51
Возникла неожиданная проблема В VBS.
Многие thinstalled приложения не закрываются окончательно при их закрытии и "зависают" в системе. Производитель предложил для решения этой проблемы использовать VBS.
Самое простое решение - это использование подобного скрипта:

Цитата:
Function OnFirstParentExit
ExecuteVirtualProcess "c:\Utils\RunHiddenConsole.exe c:\Utils\pskill.exe -t ""Your Thinstalled Application.exe"""
End Function

Это работает, но проблема в том, может быть создано несколько приложений. Например, проект MS Office: Word, Excel итд.
Как их закрыть? Excel зависает, Power Point -тоже. Как их закрыть?
Почитав ru-board нашел такой замечательный скрипт:

Цитата:

Set Processes = GetObject("winmgmts://localhost")
Set myProcEnum = Processes.ExecQuery("select * from Win32_Process")
For Each Proc In myProcEnum
If Proc.Name = "Your Thinstalled Application.exe" Then
' пример действий если найден заданный процесс
WScript.Echo "Я вижу что запущен процесс Your Thinstalled Application.exe!" & vbNewLine & "Сейчас процесс будет закрыт..."
Proc.Terminate
' Здесь можно завершать другие процессы...
End If
Next

Все замечательно, скрипт работает, но... стоит из него сделать функцию для нашего приложения, т.е. заключить его в:
Function OnFirstParentExit
...
End Function
как возникает ошибка выполнения. Вы спми можете это проверить.
Вопрос. Как вы решаете проблему закрытия многих приложений проекта, если они не закрываются штатно?
Или другой вопрос. Почему скрипт дает ошибку и как заставить его работать?


Добавлено:
Angel Hranite

Цитата:
у меня жопорез и софтинка весит 100 метров, без вариантов.

Вариант - дать ссылку на софтинку или, как минимум, дать ее полное название и версию.
Тогда можно самим поискаить.



Добавлено:

Цитата:
А должен открыться файл справки в формате CHM. Подскажите что я делаю не так.

Реально ли положить проект на рапиду или еще куда? Тогда можно посмотреть и понять причину.
Думаю, что где-то с изоляцией накосячено, или стоят дефолтовые значения, а для данного проекта их недостаточно.

Добавлено:

Цитата:
...уточню пару моментов. Я сделал "SandboxPath=." плюс в том, что если ты забудешь создать переменную и запустишь, то все распакуется в папку Thinstall (ставлю возле каждого приложения).

Уточню уточнение.
Я тоже так всегда делаю. Точка - это частный случай пути и изначает текущую папку. Если при этом, соответственно, не создавать папку Thinstall, то песочница будет создана в папке запуска thinstalled приложения.
Автор: CrazyDeath
Дата сообщения: 20.05.2008 20:30

Цитата:
Производитель предложил для решения этой проблемы использовать VBS.

Такое тхинсталл предложить не мог , так как это ихний баг, который надо исправлять
соответственно и родилось такое решение у наших умельцов.

а чем тебе OnLastProcessExit не нравится?
Автор: Angel Hranite
Дата сообщения: 20.05.2008 20:34
hpoint

Цитата:
Все замечательно, скрипт работает, но... стоит из него сделать функцию для нашего приложения, т.е. заключить его в:
Function OnFirstParentExit
...
End Function
как возникает ошибка выполнения. Вы спми можете это проверить.
Вопрос. Как вы решаете проблему закрытия многих приложений проекта, если они не закрываются штатно?
Или другой вопрос. Почему скрипт дает ошибку и как заставить его работать?

может я не правельно понял что Вы хотите сделать, в оф.хелпе написано

Цитата:
This script will stop a virtual or real service when the "main" application quits

Function OnFirstParentExit
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run "net stop ""iPod Service"""
End Function
Автор: hpoint
Дата сообщения: 20.05.2008 21:47

Цитата:
Такое тхинсталл предложить не мог

Слишком много последнее время прочитал, но вроде как на их буржуйском форуме читал про это.

Цитата:
а чем тебе OnLastProcessExit не нравится?

Он бы мне понравился, но не знаю почему, но скрипт не вызывается вообще. T.е. никакой скрипт! Т.е. факта события не происходит!
Не вызывается элементарное:

Цитата:
Function OnLastProcessExit
msgbox "Завершение последнего процесса"
End Function

Или ты имел что-то другое?
Как его использовать чтобы решить пробему закрытия?

Добавлено:
Вот нашел в этой ветке обсуждение.


Цитата:
в оф.хелпе написано...
Останавливает содержимое скрипта, конкретно - 'net stop', а не то, когда он вызывается.

Автор: CrazyDeath
Дата сообщения: 20.05.2008 22:39
to hpoint

Цитата:
Вот нашел в этой ветке обсуждение.

Это были ньюансы неправильного патча.
На даный момент у меня с закрытием прог проблем нету, разве со службами.
просмотри всю страницу

Автор: hpoint
Дата сообщения: 20.05.2008 23:07
Спасибо CrazyDeath, завтра (уже сегодня) посмотрю.
надеюсь, что поможет.


Добавлено:
Не смог заснуть не попробовав.
Сделал вот такой скрипт

Цитата:
Function OnFirstParentExit
ProcessKiller("My Thinstalled Application.exe")
End Function

Function ProcessKiller(ProcessName)
If ProcessExists(ProcessName) Then ProcessClose(ProcessName)
End Function

Function ProcessExists(ProcessName)
msgbox "1"
Set Processes = GetObject("winmgmts://localhost")
msgbox "2"

Set myProcEnum = Processes.ExecQuery("select * from Win32_Process")
For Each Proc In myProcEnum
If StrComp(Proc.Name, ProcessName, 1) = 0 Or StrComp(Proc.ProcessID, ProcessName, 1) = 0 Then
ProcessExists = True
Exit Function
End If
Next
ProcessExists = False
End Function

Function ProcessClose(ProcessName)
Set Processes = GetObject("winmgmts://localhost")
Set myProcEnum = Processes.ExecQuery("select * from Win32_Process")
For Each Proc In myProcEnum
If StrComp(Proc.Name, ProcessName, 1) = 0 Or StrComp(Proc.ProcessID, ProcessName, 1) = 0 Then
Proc.Terminate
End If
Next
End Function


Вызов ProcessKiller как скрипта - работает, а вызов в составе функции OnFirstParentExit - нет.
Пробовал оттрассировать:
msgbox "1" - выводит,
msgbox "2" - уже нет.
При этом не выводит ошибок. Просто тишина.


Какой у тебя скрипт работает? Раскроешь "секрет" ? Мне не хватает знаний и опыта разобраться.
Автор: CrazyDeath
Дата сообщения: 21.05.2008 02:25
to hpoint
твой же Portable Calculator,
выводит и msgbox "1" и msgbox "2"
Автор: hpoint
Дата сообщения: 21.05.2008 09:13
CrazyDeath
Согласен, такое примитивное приложение работает.
Оттрассировал полностью до Proc.Terminate, но более сложное приложение (я сейчас работаю над Microsoft Office 2003) - нет! Не доходит и до msgbox "2".

Но даже, если бы это и работало, я не мог бы вызвать типа:

Цитата:
Function OnFirstParentExit
ProcessKiller("My Thinstalled Application 1.exe")
ProcessKiller("My Thinstalled Application 2.exe")
ProcessKiller("My Thinstalled Application 3.exe")
End Function

так как, например, если у меня запущено приложение "My Thinstalled Application 1.exe", а я хотел поработать с "My Thinstalled Application 2.exe", то закрытие "My Thinstalled Application 2.exe" приведет к закрытию "My Thinstalled Application 1.exe", а это не верно.
Я же не знаю имя ТЕКУЩЕГО приложения.
Как ты этот вопрос решил?

Протестируй у себя с более сложным приложением. Если скажешь, то я могу положить и проект своего офиса 124Mb на рапиду.

Или может дашь свой скриптик?
Автор: dj_Diesel
Дата сообщения: 21.05.2008 10:49
hpoint
оффтоп
вопрос а зачем запускать два приложения сразу
я лично по одному запускаю и нет проблемм
Автор: hpoint
Дата сообщения: 21.05.2008 11:05

Цитата:
вопрос а зачем запускать два приложения сразу
я лично по одному запускаю и нет проблемм
Как зачем?
Например, работаешь в Ворде и параллельно в Excel'e. Что, надо не забыть закрыть, например, Excel, прежде, чем запускать Word? Если забудешь, то убъешь всю свою работу!
Или, например, надо вставить что-либо из Excel в Word или из Word в Power Point.

Надо чтобы все приложения ОДНОГО (!) проекта могли работать одновременно! Это ЗАВИСИМЫЕ thinstalled приложения.


CrazyDeath
Можно было-бы сделать послабление на НЕзакрытие приложений, если бы можно было бы закрыть (фактически убить) ВСЕ приложения, после закрытия ПОСЛЕДНЕГО приложения проекта.

Добавлено:
Хотя это тоже неверно, т.к. приложения "плодятся" (остаются в памяти) при каждом новом пуске-завершении.
Автор: older
Дата сообщения: 21.05.2008 19:45
hpoint

а что, если весь проект упаковать в неисполняемый файл, например, office.dat
а все приложения word, excel и т.д. - без ReadOnlyData=bin\Package.ro.tvr
а?
Автор: hpoint
Дата сообщения: 21.05.2008 20:08
older
А у меня собственно так и есть. Один большой файл .bin и ссылки.exe по 35-40kb.
Word закрывается стандартно безо всяких премудростей, а Excel, Power Point, Access - подвисают.

Добавлено:
Дело то не в офисе, а как решить проблему закрытия многих приложений одного проекта.
Автор: hpoint
Дата сообщения: 22.05.2008 11:56
ПРОБЛЕМА ЗАКРЫТИЯ МНОГИХ ПРИЛОЖЕНИЙ РЕШЕНА!

Нашел простое решение отрабатывающее на 100%!

В папке проекта создать:

1. папку %drive_c%\Utils
Положить в нее:
a. RunHiddenConsole.exe
b. pskill.exe
c. ##Attributes.ini следующего содержания:

Цитата:

[Isolation]
DirectoryIsolationMode=Full


2. файл utils.vbs следующего содержания:

Цитата:

Function OnFirstParentExit
'MsgBox "Running Process is " + GetCurrentProcessName
ProcessKiller "c:\program files\Microsoft Office\OFFICE11\WINWORD.EXE", "Portable Microsoft Office Word 2003.exe"
ProcessKiller "c:\program files\Microsoft Office\OFFICE11\EXCEL.EXE", "Portable Microsoft Office Excel 2003.exe"
ProcessKiller"c:\program files\Microsoft Office\OFFICE11\POWERPNT.EXE", "Portable Microsoft Office PowerPoint 2003.exe"
End Function

Function ProcessKiller(CurrentProcess, ProcessName)
If StrComp(GetCurrentProcessName,CurrentProcess,1) = 0 Then
ExecuteVirtualProcess "c:\Utils\RunHiddenConsole.exe c:\Utils\pskill.exe -t " + ProcessName
End If
End Function

Естественно, его надо отредактировать под свои нужды. Количество строк определяется количеством НЕзакрываемых (или всех, как хотите) приложений проекта.
Первый параметр - полный путь запускаемого приложения
Второй параметр - имя thinstalled приложения

Скачать комплект можно на рапиде

Добавлено:
Конечно, если доработать вот этот скрипт, чтобы он отрабатывал всегда, то это было бы более красивое решение.
Текущий скрипт - решает проблему закрытия, но переименовывать thinstalled приложения нельзя!

Может кто сможет решить этот вопрос?

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980

Предыдущая тема: Программа для поднятия трубки модемом


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.