Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » VMware ThinApp (formerly Thinstall) часть 4

Модерирует : gyra, Maz

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47

Открыть новую тему     Написать ответ в эту тему

Geroy4ek

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Предыдущие части темы: 1, 2, 3
Смежный топик в Варезнике
 
VMware ThinApp  5.2.5.1
 
Официальный сайт | Форум | Описание | Список изменений | FAQ (PDF, Eng) | Обзор успешно упакованных программ | ThinApp Docs
 
ThinApp (ex Thinstall) используется для виртуализации приложений, позволяет заключить приложения в виртуальный контейнер и использовать их как готовые пакеты, не требующие установки. Внутри контейнера создается виртуальная среда для реестра и файлов.  
Поддерживаемые ОС:    
x32: Windоws 2000/XP/XPE/Server 2003/2008/2012/2012 R2/Vista/7/8/8.1/10  
x64: Windоws  Server 2003/2008/2008R2/Vista/7/8/8.1/10

Скачать программу можно в Варезнике

Полезные утилиты
 
FAQ, статьи, обзоры
 
Полезные ресурсы

Если при запуске готового приложения выскакивает окошко в трее, читайте шапку топика в Варезнике.
 
VMware ThinApp - обсуждение перевода
 
Русский перевод мануала по VMware ThinApp версии 5.1.0 + перевод справочника по параметрам Package.ini от pavlaf
 
Ближайший аналог: Spoon Studio (ex Xenocode Virtual Appliance Studio)

Всего записей: 1 | Зарегистр. 24-04-2015 | Отправлено: 17:26 24-04-2015 | Исправлено: MH100181Q, 20:59 10-05-2019
Proshaa

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
romby
ну очевидно же (или это только мне?)  
GetEnvironmentVariable("THINSTALL_SANDBOX_DIR") = текущий путь до папки, в которой лежит песочница
GetEnvironmentVariable("THINSTALL_SANDBOX_DIR") & "\" & SandboxName = текущий путь прямо в папку песочницы
 
GetBuildOption("SandboxPath") = путь до песочницы, прописанный в Package.ini
GetBuildOption("SandboxPath") & "\" & SandboxName = путь в песочницу, прописанный в Package.ini
 
в общем случае префикс Get - означает "получить". GetEnvironmentVariable = получить текущую переменную
 
суффиксы - то, что отделено точкой.  
в этих примерах & ComputerName - это сетевой путь. для локального использования излишен.
 
строки не начинающиеся с =Get не получают, а задают путь. следовательно к поставленной задаче отношения не имеют.
 
как-то так

Всего записей: 2689 | Зарегистр. 10-01-2011 | Отправлено: 01:44 02-11-2016
romby



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Proshaa
Цитата:
ну очевидно же (или это только мне?)  

Совершенно непонятно, зачем вы написали все эти очевидные вещи, так и не вникнув в суть вопроса.

Всего записей: 1707 | Зарегистр. 09-02-2006 | Отправлено: 11:33 02-11-2016
Proshaa

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
вопрос, как узнать ФАКТИЧЕСКОЕ расположение песочницы


Цитата:
GetEnvironmentVariable("THINSTALL_SANDBOX_DIR") = текущий путь до папки, в которой лежит песочница  

или вас географические координаты интересовали?

Всего записей: 2689 | Зарегистр. 10-01-2011 | Отправлено: 12:03 02-11-2016
romby



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Proshaa
Цитата:
GetEnvironmentVariable("THINSTALL_SANDBOX_DIR") = текущий путь до папки, в которой лежит песочница

Неужели переменная окружения %THINSTALL_SANDBOX_DIR% обязательно существует в виртуальной среде?

Всего записей: 1707 | Зарегистр. 09-02-2006 | Отправлено: 12:57 02-11-2016 | Исправлено: romby, 13:00 02-11-2016
romby



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Proshaa
Цитата:
GetEnvironmentVariable("THINSTALL_SANDBOX_DIR") = текущий путь до папки, в которой лежит песочница  

Хотелось бы мне, чтобы это оказалось правдой, но...
 
   

Код:
Function OnFirstSandboxOwner
  MsgBox "THINSTALL_SANDBOX_DIR = " & """" & GetEnvironmentVariable("THINSTALL_SANDBOX_DIR") & """", VBOKOnly + VBInformation, "ThinApp"
End Function
 
Function OnFirstParentStart
  MsgBox "THINSTALL_SANDBOX_DIR = " & """" & GetEnvironmentVariable("THINSTALL_SANDBOX_DIR") & """", VBOKOnly + VBInformation, "ThinApp"
End Function


Всего записей: 1707 | Зарегистр. 09-02-2006 | Отправлено: 19:05 02-11-2016 | Исправлено: romby, 19:08 02-11-2016
coherent

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
romby
Проверенная конструкция:

Код:
Origin = GetEnvironmentVariable("TS_ORIGIN")
SourcePath = Left(Origin, InStrRev(Origin, "\") - 1)
 
SandboxParent = GetBuildOption("SandboxPath")  
SandboxName = GetBuildOption("SandboxName")  
If SandboxParent = "." Then  
   SandboxPath = SourcePath & Chr(92) & SandboxName
Else  
   SandboxPath = SandboxParent & Chr(92) & SandboxName
End If


Всего записей: 3346 | Зарегистр. 20-02-2007 | Отправлено: 19:47 02-11-2016 | Исправлено: coherent, 19:48 02-11-2016
Proshaa

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
romby
это что-то с руками. вернее, я знаю что, но промолчу.
Подробнее...
 
здесь все варианты получения из вашего поста пронумерованы.
 
как видите - не работает только 1й. но там и на взгляд как-то коряво выписано. разбираться лень.
 
так и быть, не промолчу )))
не вставляйте в msgbox получение переменных. и вообще никогда так не делайте. в смысле - сначала отдельный оператор присвоения значения переменной и только после этого её использование. и никак не иначе, если не хотите постоянно натыкаться на "неработающие" или криво работающие скрипты

Всего записей: 2689 | Зарегистр. 10-01-2011 | Отправлено: 20:38 02-11-2016 | Исправлено: Proshaa, 20:45 02-11-2016
romby



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
не работает только 1й
По картинке видно, что все одиннадцать сработали исправно, а по первым трём – что переменные %Motivate Clock_SANDBOX_DIR% и %THINSTALL_SANDBOX_DIR% не заданы.

Цитата:
не вставляйте в msgbox получение переменных. и вообще никогда так не делайте. в смысле - сначала отдельный оператор присвоения значения переменной и только после этого её использование. и никак не иначе, если не хотите постоянно натыкаться на "неработающие" или криво работающие скрипты

Спасибо за урок по VBS, я в нём очень слаб. Переписал кодрезультат не изменился. Что ещё я делаю не так?

Всего записей: 1707 | Зарегистр. 09-02-2006 | Отправлено: 23:10 02-11-2016 | Исправлено: romby, 23:29 02-11-2016
romby



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Кстати, в шапке вроде бы нет PDF-книги VMware ThinApp 4.7 Essentials от P. Bjork за 2012 год. Упоминалась в теме пару лет назад и благополучно забыта. Почему бы не добавить? К примеру, вот пара магнетов:

Код:
magnet:?xt=urn:btih:9d788f9265d9475161a635d11b3294e531fc988d&tr=udp://tracker.openbittorrent.com:80&tr=udp://open.demonii.com:1337&dn=Packt%20VMware%20ThinApp%204%207%20Essentials%202012%20RETAIL%20eBook%20ELOHiM

Код:
magnet:?xt=urn:btih:97153f19f260c63399c6d1a16c7c092b168921ab&dn=VMware+ThinApp+4.7+Essentials&tr=udp%3A%2F%2Ftracker.leechers-paradise.org%3A6969&tr=udp%3A%2F%2Fzer0day.ch%3A1337&tr=udp%3A%2F%2Fopen.demonii.com%3A1337&tr=udp%3A%2F%2Ftracker.coppersurfer.tk%3A6969&tr=udp%3A%2F%2Fexodus.desync.com%3A6969

Всего записей: 1707 | Зарегистр. 09-02-2006 | Отправлено: 02:31 03-11-2016 | Исправлено: romby, 22:21 03-11-2016
Proshaa

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
romby
вот честное слово - придумали мне занятие...
отдыхаю я после ударного месяца, так нет ))
ладно. начинаем разборки полётов.
THINSTALL_SANDBOX_DIR - переменная задающая путь к песочнице в рантайме (в процессе исполнения) она и должна быть пустой - что вам, собственно, и показывает скрипт. согласно мануала: если задать эту переменную, все песочницы будут создаваться по указанному там пути. задать её можно двумя путями: прописать в систему - так же, как и все другие переменные окружения, либо скриптом. скрипт тоже можно "включить" двумя путями: при сборке (какой в этом смысл - я хз) или поместив его в папку Program Files/ThinstallPlugins.
в свете озвученной вами задачи - её надо проверять, вдруг она существует у юзера.
также проверяется наличие переменной окружения <sandbox_name>_SANDBOX_DIR.
способы задания - те же.
 
опять же, согласно мануала - ThinApp ищет песочницу в такой последовательности:
  1. <sandbox_name>_SANDBOX_DIR
  2. THINSTALL_SANDBOX_DIR
  3. <exe_directory>\<sandbox_name>.<computer_name>
  4. <exe_directory>\<sandbox_name>
  5. <exe_directory>\Thinstall\<sandbox_name>.<computer_name>
  6. <exe_directory>\Thinstall\<sandbox_name>
  7. <sandbox_path>\<sandbox_name>.<computer_name>
  8. <sandbox_path>\<sandbox_name>
  9. %AppData%\Thinstall\<sandbox_name>.<computer_name>
10. %AppData%\Thinstall\<sandbox_name>
 
первая найденная используется. если ничего не найдено - создаётся новая, согласно Package.ini
 
отсюда у вас должен быть такой же алгоритм поиска песочницы: последовательно проверяем всё и если там пусто - читаем Package.ini
примерно так:

Код:
ThinstallSandboxDir = GetEnvironmentVariable("<sandbox_name>_SANDBOX_DIR")
if ThinstallSandboxDir ="" then
MsgBox "пусто", VBOKOnly + VBInformation, "ThinApp"
else
MsgBox "путь: " & ThinstallSandboxDir , VBOKOnly + VBInformation, "ThinApp"
end if

 
вместо <sandbox_name> подставляете реальное имя песочницы.
и далее - по всем пунктам, подставляя вместо <...> реальные имена.
если "одноразово" - можно вписать руками. для автоматизации:

Код:
tempName = GetBuildOption("SandboxName") + "_SANDBOX_DIR"
ThinstallSandboxDir = GetEnvironmentVariable(tempName)
...

пояснение: для строковых переменных знаки "+" и "&" равнозначны
 
P.S. а в vbs я вовсе не гуру - просто существуют общие правила программирования и это - одно из них. кроме того, что строгое следование ему гарантирует беспроблемность в плане работы программы, написанной на любом языке, гораздо проще разбираться и модифицировать программу, когда она чётко структурирована - даже если пишешь для себя. уж поверьте - это подсказывает мой собственный опыт. когда-то я тоже грешил многоэтажными конструкциями, ведь кажется, что так проще и быстрей. только когда через время пытаешься во всём этом разобраться...
 
P.P.S.чтобы магнет был магнетом, а не непонятно чем - снимите галку "разрешить смайлики" в сообщении.
а книга - не лучше мануала от Astra55. я её просматривал в своё время и ничего нового не нашёл - по сравнению с мануалом

Всего записей: 2689 | Зарегистр. 10-01-2011 | Отправлено: 22:05 03-11-2016 | Исправлено: Proshaa, 22:08 03-11-2016
AVanti473



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Друзья, что не час - то "веселье". Прилюбопытнейший эксперимент у меня получился. Собираю в ThinApp портабельный браузер с подключением к нему плагина флешплеера PPAPI. Дошёл до весьма забавной точки. Плагин флешплеера прекрасно подключается к браузеру и отлично отображается ровно до того момента, как в сборку необходимо добавить vbs-скрипт. Причём любой vbs-скрипт (специально пробовал разные - запуск сторонних файлов при создании песочницы, или, убивание процесса при выходе из программы - не важно). С этого момента портабельный браузер видит флешплагин в настройках, как и прежде, но на веб-страничках пишет что не может загрузить этот плагин - "Couldn't load plug-in".
Это, конечно, весёлый баг, и многое объясняет, НО, как с этим жить и бороться - ума не приложу! Без vbs в сборке я обойтись не могу, равно как и в работе браузера без этого флешплагина.

 
P.S. В самой сборке плагина флешплеера никаких скриптов нет - конфликтовать нечему. Версии ThinApp сборки портабельной программы и плагина одинаковы - 4.7.3 Настройки изоляции (папок, реестра и вообще) портабельной сборки и сборки плагина одинаковы. Результат одинаков на разных системах, хоть х32, хоть х64.
 
P.P.S. Я конечно понимаю, что половина проблем связана с новым, ежанутым до безобразия, PPAPI. Но проблема вылезла именно на использовании VBS в ThinApp. Что тут за загадочный механизм, и какая в этом всём связь - я в тупике. Можно, конечно, рискнуть обойтись без VBS вообще, делая сторонние точки входа для нужных скриптов, но, согласитесь, тот же автоматизированный функционал завершения зависших процессов через VBS весьма удобен. К тому же, может быть, в будущем, придётся подключить к сборке какой-нибудь плагин, собранный с VBS скриптом на борту...

Всего записей: 1061 | Зарегистр. 05-04-2011 | Отправлено: 22:46 12-11-2016 | Исправлено: AVanti473, 23:19 12-11-2016
Proshaa

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
веселье было, когда я пытался применить vbs в одной сборке, а он не хотел запускаться никак. все версии ТА перепробовал - толку ноль.
должен сказать, что сборка проги которая как раз работает с vbs. пораскинув мозгами по стенам - пришёл к выводу, что рыть надо в реестре, в ассоциациях файлов и OLE. просто забил, там скрипт мне не был особо нужен.
очевидно, у вас - подобная ситуация: ТА подключает модуль обработки скриптов и он как-то конфликтует со скриптером браузера. связь прослеживается чётко: сейчас практически нет ни одной страницы без скриптов, правда обычно там ява. но как реализован движок в браузере - хз.
могу напомнить, что при добавлении vbs, в сборку встраивается папка %ProgramFilesDir%\ThinstallPlugins, куда, собственно и попадает сам скрипт. туда же ложится и scripting.dll - имя как бы однозначно намекает ))  
уверен, что и в реестр что-то добавляется. и это "что-то" перенаправляет обработку скриптов на эту dll
самому искать лень, ибо мне не надь.
есть ещё вариант, что в плагине меняется/добавляется изоляция некоторых папок, однако вариант с реестром мне представляется более правдоподобным. кстати - может и в реестре меняется изоляция

Всего записей: 2689 | Зарегистр. 10-01-2011 | Отправлено: 00:35 13-11-2016
AVanti473



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Proshaa

Цитата:
 ТА подключает модуль обработки скриптов и он как-то конфликтует со скриптером браузера.

 

Цитата:
уверен, что и в реестр что-то добавляется. и это "что-то" перенаправляет обработку скриптов на эту dll

 
Несмотря на то, что в браузерах скрипты обычно на java и jQuery - очень даже логично (ведь реализация самого браузерного движка, при всей открытости его кода, мне, один фиг не понять). Хм, если так, то даже не знаю с какого конца начинать подход...
Первое что приходит на ум - делать ещё две точки входа на два разных (не vbs-ных) скрипта. Первый скрипт вынесет архив библиотеки словарей для правки орфографии в песочницу (ибо этот функционал работает лишь при выносе в реал, и никак иначе), а второй точкой будет скрипт, убивающий основной процесс приложения, в случае его висяка после закрытия портабельной программы (а такие случаи, на разных системах, возникают)... И будет три точки входа. Но это не удобно в варианте, когда сам портабельный браузер будет подключаться плагином, скажем, к менеджеру паролей. И здесь ключевой для меня момент неудобства!...

Всего записей: 1061 | Зарегистр. 05-04-2011 | Отправлено: 08:52 13-11-2016 | Исправлено: AVanti473, 08:53 13-11-2016
vasevase

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Proshaa: я её просматривал в своё время и ничего нового не нашёл - по сравнению с мануалом

Злые языки в своё время говорили, что Bjork чуть ли не с того мануала плагиатил!

Всего записей: 2530 | Зарегистр. 28-08-2010 | Отправлено: 16:46 13-11-2016
AVanti473



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Кино! С каждым разом исследования становятся всё "веселее". При пересборке проекта браузера на ThinApp 5.1.1 и старта результата вообще без подключения каких-либо плагинов картина маслом:
- Если в сборке нет никаких VBS-скриптов - браузер запускается и нормально работает.
- Если в проект положить даже пустой скрипт с содержимым:
Function OnFirstParentExit
End Function

и пересобрать, браузер запускается, но работать в нём невозможно, так как не получается загрузить ни одну страницу, включая страницы настроек, закладок, истории и т.п.
 
Вообще эта вся ситуация крайне занимательна! Конечно, я понимаю, что по большому счёту эти изыски нафиг никому не сдались, но именно они, на мой взгляд, объясняют кучу косяков, которые ранее записывались в некие загадочные факторы версий, билдов и самих портабелизируемых программ...

Всего записей: 1061 | Зарегистр. 05-04-2011 | Отправлено: 19:51 13-11-2016 | Исправлено: AVanti473, 19:52 13-11-2016
AVanti473



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Proshaa

Цитата:
уверен, что и в реестр что-то добавляется. и это "что-то" перенаправляет обработку скриптов на эту dll  самому искать лень, ибо мне не надь.

 
Понимаю, я глянул. Сделал пустышку с запуском CMD.EXE и положил в проект такой же скрипт пустышку с:
 

Код:
Function OnFirstParentExit
End Function

 
В виртуальный реестр попало:
 

Код:
[HKEY_LOCAL_MACHINE\Software]
 
[HKEY_LOCAL_MACHINE\Software\Thinstall]
 
[HKEY_LOCAL_MACHINE\Software\Thinstall\ProcessList]
"1580"="C:\\WINDOWS\\system32\\cmd.exe"
 
[HKEY_LOCAL_MACHINE\Software\Thinstall\RuntimeObjects]
 
[HKEY_LOCAL_MACHINE\Software\Thinstall\RuntimeObjects\Notifications]
 
[HKEY_LOCAL_MACHINE\Software\Thinstall\StubProcessList]
"708"="C:\\1\\bin\\cmd.exe"
 
[HKEY_LOCAL_MACHINE\Software\Thinstall\SxS]
"Platform"=dword:0a280105
 
[HKEY_LOCAL_MACHINE\Software\Thinstall\VirtualObjectNamespace]
 
[HKEY_CURRENT_USER\Software]
 
[HKEY_CURRENT_USER\Software\Microsoft]
 
[HKEY_CURRENT_USER\Software\Microsoft\Windows Script]
 
[HKEY_CURRENT_USER\Software\Microsoft\Windows Script\Settings]
"JITDebug"=dword:00000000

 
Последние строчки весьма занимательны... Удаление их из виртуальной среды ничего не даёт, а при каждом запуске эти ключи создаются снова.
 
Тогда, а что если подумать немного шире. Допустим очень надо обойтись без vbs-скриптов, не потеряв функционал. Делать лаунчер не вариант, так как портабелизируемая программа, в будущем, может сама подключаться плагином, и запускаться через ассоциации в виртуальном реестре, разумеется минуя лаунчер. Тогда вопрос - можно ли запустить одной точкой входа сразу две программы (в ThinApp разумеется)? Первая будет основной, а вторая, скомпилированным в exe скриптом. Скажем, используя параметр CommandLine= в Package.ini Правда, тогда, и в реестре надо придумать как запускать ассоциированное приложение вместе с другим екзешником.
Но на самом деле, мне кажется, это решило бы сразу несколько проблем в использовании ThinApp...

Всего записей: 1061 | Зарегистр. 05-04-2011 | Отправлено: 23:25 13-11-2016 | Исправлено: AVanti473, 23:27 13-11-2016
Proshaa

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
строчка действительно занимательная. и наверняка там стоит изоляция FULL
попробуйте вручную добавить все эти строки с изоляцией WriteCopy

Код:
[HKEY_CURRENT_USER\Software]
 
[HKEY_CURRENT_USER\Software\Microsoft]
 
[HKEY_CURRENT_USER\Software\Microsoft\Windows Script]
 
[HKEY_CURRENT_USER\Software\Microsoft\Windows Script\Settings]  

но тут тоже есть интересный момент: в ХР изначально такого параметра нет, а вот в Win-7 он присутствует. на какой ОС ставите эксперименты?
 
командная строка, имхо - достаточный инструмент в данном случае. зачем вам пляски с запуском двух программ одновременно через реестр (хотя и это довольно просто решаемо) непонятно. хватит и ТА-ярлыка с прописанной комстрокой.

Всего записей: 2689 | Зарегистр. 10-01-2011 | Отправлено: 00:40 14-11-2016
AVanti473



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Proshaa

Цитата:
в ХР изначально такого параметра нет, а вот в Win-7 он присутствует. на какой ОС ставите эксперименты?

 
на XP. Позже проверяю результаты на семёрках разной битности, и финально уже прогоняю портабл на восьмой.
 

Цитата:
зачем вам пляски с запуском двух программ одновременно через реестр

 
Скажем:
 

Код:
isolation_writecopy HKEY_LOCAL_MACHINE\Software\Classes\http\DefaultIcon
  Value=
  REG_SZ~%ProgramFilesDir%\MyProg\prog.exe,0#2300

 
И, когда браузер стартует не сам по себе, а запускается плагином через менеджер паролей, который вызывает его по ассоциации в виртуальном реестре, то старт будет, разумеется только самого браузера, а нужно же, чтобы ещё и скрипты отработали (которые не vbs, а сторонние, скомпиленые в екзешник)...

Всего записей: 1061 | Зарегистр. 05-04-2011 | Отправлено: 06:42 14-11-2016
AVanti473



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Proshaa

Цитата:
командная строка, имхо - достаточный инструмент в данном случае. зачем вам пляски с запуском двух программ одновременно через реестр (хотя и это довольно просто решаемо) непонятно. хватит и ТА-ярлыка с прописанной комстрокой.

 
Если Вас не затруднит, помогите пожалуйста с конкретными примерами, а именно: Вот сделал я два тестовых екзешника, которые просто выдают сообщение при запуске - "Запущена программа 1" и "Запущена программа 2"
 
Подробнее
 
Первый вопрос: Как сделать так, чтобы при старте портабельной программы через её екзешник, сразу стартовали MyProg_1.exe и MyProg_2.exe ? Что для этого прописать в CommandLine ?
 
Второй вопрос: Если портабельная программа MyProg_1.exe сама вдруг оказывается подключена в качестве плагина, и запускается другим портабельным приложением на основе её ассоциации с принадлежащим ей расширением .exempl или протоколом exempl в реестре, то как там в реестре оформить одновременный запуск для MyProg_1.exe и MyProg_2.exe для этого расширения и протокола?
 
Если возможно, с конкретными примерами по ситуации. Вот архив с примером проекта (вышеуказанными MyProg_1.exe и MyProg_2.exe, импровизированными ассоциациями в реестре и т.п.): https://yadi.sk/d/ZoxLWgbLyc5oH Заранее благодарю!

Всего записей: 1061 | Зарегистр. 05-04-2011 | Отправлено: 18:50 14-11-2016 | Исправлено: AVanti473, 18:53 14-11-2016
AVanti473



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Чтобы читающие не думали, что вопрос повис в воздухе, расскажу решение и даже поделюсь одной полезняшкой!
 
Решение: Конечно же ThinApp не даёт одновременно запустить две точки входа наподобие функционала автостарта в Spoon. Это нереально сделать, ни в Package.ini, ни в виртуальном реестре самой программы. Во всяком случае, я такого решения не нашёл и практически уверен, что его попросту нет. Разумеется всё решается с помощью лаунчера, который и будет запускать нужную программу, а по пути выполнять ещё ряд функций! Основная трудность, напомню читателям, в том, что портабельный софт может запускаться в виде плагинов. И в таком случае, он запускается по ассоциации в виртуальном реестре, где, как правило, пути указывают прямо на исполнительный файл целевого приложения, но никак не на лаунчер. И даже, если пути исправить на лаунчер, то лаунчер должен уметь передавать исполнительному файлу целевого приложения параметры запуска, они же - аргументы командной строки. Чтобы их передать, их ещё нужно уметь получить! Кому-то в помощь морока с VBS, AutoIT, PowerShell, C++ или иными нагромождениями программных и скриптовых кодов, а я решил эту задачку элегантно и просто в vTask Studio.
 
Собственно обещанная полезняшка:
https://yadi.sk/d/a1eDOEAxynckT
Подменив временно файлом из архива (файл скрипта можно переименовывать как угодно) любой исполнительный файл, вы получите сообщение с полным текстом командной строки, которая была передана ему при запуске. По сочетанию клавиш Ctrl+C вы можете скопировать всё содержимое окна сообщения в буфер обмена, для дальнейшего изучения. Особенно это полезно, когда исполнительный файл какой-нибудь программы запускается не напрямую, или даже не по ассоциации в реестре, а через какой-нибудь сторонний лаунчер, который непонятно что передаёт в командной строке при запуске основного файла приложения. Или ещё круче - когда какому-нибудь системному екзешнику типа "C:\Windows\System32\rundll32.exe" могут передаваться абсолютно разные параметры запуска, в зависимости от конкретной ситуации...
В общем-то в полезняшке содержится ещё и полноценный, закомментированный (отключённый) код лаунчера, который способен передать любому целевому файлу приложения полученные аргументы командной строки, но, это уже для тех, кому очень надо, и кто способен расковырять зашифрованный vTask(ом) екзешник

Всего записей: 1061 | Зарегистр. 05-04-2011 | Отправлено: 22:34 16-11-2016 | Исправлено: AVanti473, 23:23 16-11-2016
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47

Компьютерный форум Ru.Board » Компьютеры » Программы » VMware ThinApp (formerly Thinstall) часть 4

Имя:
Пароль:
Сообщение

Для вставки имени, кликните на нем.

Опции сообщенияДобавить свою подпись
Подписаться на получение ответов по e-mail
Добавить тему в личные закладки
Разрешить смайлики?
Запретить коды


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.Board
© Ru.Board 2000-2018

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru