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

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

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

articlebot (28-02-2016 18:11): VMware ThinApp (formerly Thinstall) часть 4  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224

   

AVanti473



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

Цитата:
наверно все таки не то что замена удалению, а типа не уверен исключи

 
Да, я это и имел в виду, только возможно иначе выразился. Я бы сравнил этот параметр с работой в Spoon, когда файлы в программе удаляются из состава сборки, но остаются в проекте.

Всего записей: 1179 | Зарегистр. 05-04-2011 | Отправлено: 10:14 20-08-2014
AVanti473



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вопрос: Нужно убить процесс Workspace Macro Pro X.X.exe (где X.X просто номер версии, убрал, чтобы не смущали цифры).
 
Что мною для этого было сделано:
- Пример из бессмертного FAQ отпал сразу, т.к. не сработал.
- В Package.ini в [BuildOptions] были вставлены параметры:
ChildProcessEnvironmentDefault=External
ProcessExternalNameBehaviour=Original

(в любой комбинации их добавления в процессах висит Workspace Macro Pro X.X.exe)
 
- На http://blogs.vmware.com/thinapp/2008/10/using-ie-7-on-v.html найден соответствующий скрипт, который должен был помочь:

Код:
Function OnFirstParentExit
    Dim objWMIService, objProcess, colProcess
    Dim strComputer, strProcessKill
    strComputer = "."
    strProcessKill = "’Workspace Macro Pro X.X.exe’"
    Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colProcess = objWMIService.ExecQuery ("Select * from Win32_Process Where Name = " & strProcessKill )
    For Each objProcess in colProcess
        objProcess.Terminate()
    Next
End Function

НО, он не помогает!
- Для исследования ситуации была взята программа Sysinternals Process Explorer, которая, собственно, по поиску .rw так же выводит на Workspace Macro Pro X.X.exe
- Программа Unlocker, при работе портабельного приложения, выдаёт PID(ы) блокированных процессов 4468, 4384, 5804 которые так же выводят на Workspace Macro Pro X.X.exe А при закрытии портабельного приложения остаётся висеть процесс Workspace Macro Pro X.X.exe с PID-5804
 
Как эту хрень выгрузить при помощи скрипта?

 
Примечание: Нужную мне портабельную сборку делаю на VMware ThinApp v4.7.3-891762 (7101)

Всего записей: 1179 | Зарегистр. 05-04-2011 | Отправлено: 15:35 30-08-2014 | Исправлено: AVanti473, 15:45 30-08-2014
dinis124

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

Посмотреть

Всего записей: 143 | Зарегистр. 12-09-2011 | Отправлено: 16:32 31-08-2014 | Исправлено: dinis124, 16:39 31-08-2014
AVanti473



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

Цитата:
Вопрос: Нужно убить процесс Workspace Macro Pro X.X.exe

 
Неубиваем, НО - застрелил гада )))))))!
 
Как? С помощью pavlaf! За что ему огромное спасибо!
Дело в том, что параметр:
ProcessExternalNameBehaviour=Original
я брал здесь, а там он идёт с ошибкой!
Правильно он пишется:
ProcessExternalNameBehavior=Original
Разница в одну букву, но как существенна! В итоге, все процессы стали видны как на ладони! И весящим оказался WMPHotkeys.exe
Далее, не заморачиваясь опять таки на стандартах я забрёл для разнообразия сюда, где в блоке "Use the Win32_Process class and the Terminate method" можно увидеть видимо исходник вышеприведённого мною скрипта, но немного в модифицированном виде, без переменной strProcessKill, а напрямую с объявлением имени выгружаемого процесса. Ну для полной кашерности объявил ещё в начале все Dim и получилось так:
 

Код:
Function OnFirstParentExit
Dim objWMIService, objProcess, colProcessList
Dim strComputer
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" _
    & strComputer & "\root\cimv2")
Set colProcessList = objWMIService.ExecQuery _
    ("Select * from Win32_Process Where Name = 'WMPHotkeys.exe'")
For Each objProcess in colProcessList
    objProcess.Terminate()
Next
End Function

 
Собсно ))) Эта конструкция и завершает программу, выгружая висящий процесс.
 
Добавлено:
dinis124
 
Искренне благодарю, но похоже ситуация разрешилась. Остались мелкие тесты, и если не будет сюрпрайзов с другими висящими процессами, то вопрос можно будет считать закрытым! Но ваши варианты безусловно интересны, возьму в коллекцию!

Всего записей: 1179 | Зарегистр. 05-04-2011 | Отправлено: 19:08 31-08-2014 | Исправлено: AVanti473, 19:12 31-08-2014
pavlaf

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
AVanti473
Вам нравится экспериментировать с виртуальными приложениями. Предлагаю попробовать решить одну маленькую проблемку:
Те, которые говорят, что виртуальные приложения можно запускать на чужих компах и не оставлять следов, слегка лукавят или не знают, что после запуска абсолютно любого исполняемого файла создаётся маленький файл в системной папке и запись в системном реестре. Они предназначены для ускорения повторного запуска. Нужно придумать скрипт, удаляющий эти элементы при закрытии виртуального ThinApp-приложения. Тогда работа приложения на самом деле не оставит несанкционированных следов.

Всего записей: 90 | Зарегистр. 06-01-2014 | Отправлено: 20:57 04-09-2014
regist123



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
pavlaf 20:57 04-09-2014
Цитата:
Те, которые говорят, что виртуальные приложения можно запускать на чужих компах и не оставлять следов, слегка лукавят или не знают, что после запуска абсолютно любого исполняемого файла создаётся маленький файл в системной папке и запись в системном реестре. Они предназначены для ускорения повторного запуска. Нужно придумать скрипт, удаляющий эти элементы при закрытии виртуального ThinApp-приложения. Тогда работа приложения на самом деле не оставит несанкционированных следов.

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

Цитата:
и вообще без запуска каких-либо посторонних экзешников. И реестр чистится без regedit, и файлы в Prefetch удаляются по маске.


----------
Раздачи и акции

Всего записей: 7189 | Зарегистр. 20-03-2009 | Отправлено: 00:00 05-09-2014
AVanti473



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

Цитата:
создаётся маленький файл в системной папке и запись в системном реестре

Вы про C:\Windows\Prefetch ?
 

Цитата:
Нужно придумать скрипт, удаляющий эти элементы при закрытии виртуального ThinApp-приложения.

 
В данном скрипте, по завершению работы портабельной программы, удаляется папка "Folder to delete"

Код:
Function OnFirstParentExit
Dim fso, demoFolder
Set fso = CreateObject("Scripting.FileSystemObject")
demoFolder = ExpandPath("%UserProfile%\AppData\Local\Folder to delete")
If fso.FolderExists(demoFolder) then
 fso.DeleteFolder(demoFolder)
End if
End Function

 
Удаление ключей из реестра по завершению программы, из файла uninstall.reg

Код:
Origin = GetEnvironmentVariable("TS_ORIGIN")
RegFilesPath = Left(Origin, InStrRev(Origin, "\") - 1)
UninstallReg = RegFilesPath + "\Script\uninstall.reg"
Function OnFirstParentExit
id = ExecuteExternalProcess("regedit /s " & chr(34) & UninstallReg & chr(34))
WaitForProcess id, 0
End Function

 
Ессесно содержимое uninstall.reg что-то вроде:

Код:
Windows Registry Editor Version 5.00
 
[-HKEY_LOCAL_MACHINE\SOFTWARE\раздел]

 
А сам uninstall.reg должен находится в папке Script, рядом с исполнительным файлом готовой портабельной сборки. Или можете прописать другой путь в скрипте...
 
Как-то вот такие вот решения были найдены в предыдущих беседах с помощью других участников форума. Возможно, они Вам помогут...

Всего записей: 1179 | Зарегистр. 05-04-2011 | Отправлено: 00:13 05-09-2014 | Исправлено: AVanti473, 00:20 05-09-2014
AVanti473



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Кто подскажет?:
 
Программа, при установке и регистрации, создаёт такой вот хитрый ключик:

Код:
Windows Registry Editor Version 5.00
 
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\Ey4w    h-
`{{]
"D1"=dword:00000001
"D2"="54332236444D2E3C"
"D3"="54332236444D2E3C"
"R1"="B4F7879D849025AE9598938583480773176E5F04090B531A0F6C"
"R2"="53375447354D5A4C4B383B4D244B2542452826442449453D5134"

 
ThinApp, при создании сборки, понимать его не желает, и сбрасывает сборку в failed.
Казалось бы, можно внедрить этот ключ в систему скриптом, но при простой попытке импорта этого ключа, следующие значения:
"R1"="B4F7879D849025AE9598938583480773176E5F04090B531A0F6C"
"R2"="53375447354D5A4C4B383B4D244B2542452826442449453D5134"

НЕ ИМПОРТИРУЮТСЯ!
Именно эти два последних значения не импортируются, и как следствие, программа стартует незарегистрированной.
 
Почему это происходит, и как это всё обойти?
 
P.S. Первый раз сталкиваюсь с таким выкрутасом программы. Ладно бы если все значения ключа не импортировались и тогда можно было бы грешить на его хитрое название, но когда часть значений импортируется, а часть нивкакую...... такого ещё не видел...

Всего записей: 1179 | Зарегистр. 05-04-2011 | Отправлено: 23:26 10-09-2014 | Исправлено: AVanti473, 23:27 10-09-2014
coherent

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

Цитата:
Программа, при установке и регистрации, создаёт такой вот хитрый ключик:

Что за программа?

Цитата:
ThinApp, при создании сборки, понимать его не желает

На разных версиях так? Какой версией делался снимок?

Всего записей: 3881 | Зарегистр. 20-02-2007 | Отправлено: 14:41 11-09-2014
AVanti473



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

Цитата:
На разных версиях так? Какой версией делался снимок?

 
Это не зависит от версий ThinApp, так как такой ключ при установки программы попадает в физический реестр. А программа ))) вот тут:
http://forum.ru-board.com/topic.cgi?forum=55&topic=11525&start=3840#13
там же ниже рег.данные.

Всего записей: 1179 | Зарегистр. 05-04-2011 | Отправлено: 15:12 11-09-2014
coherent

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Да, сборка, если ее зарегистрировать после запуска, с таким "некошерным" реестром работает без проблем. А если конвертнуть рабочий tvr в txt и закинуть его в проект, то уже выкидывает ошибку.

Всего записей: 3881 | Зарегистр. 20-02-2007 | Отправлено: 17:10 11-09-2014
AVanti473



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

Цитата:
то уже выкидывает ошибку

 
Вот собственно что за ключик хитровымученный такой? Хотелось бы конечно разобраться, да только моей компетенции здесь явно маловато... Поскольку ключик находится в CLSID, он, по идее, должен иметь такой формат {XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}. Мне больше интересно, если даже расшифровать юникод в этот формат, то, примет программа такой ключ, или только в виде юникода? Если только в виде юникода, то программу надо ломать, а это уже не просто снифер для ключей регистрации, а работа с кодом программы. Нужны знатоки...

Всего записей: 1179 | Зарегистр. 05-04-2011 | Отправлено: 20:04 11-09-2014 | Исправлено: AVanti473, 20:05 11-09-2014
pavlaf

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Русский перевод мануалов ThinApp 5.0:
https://yadi.sk/d/O3G7WIqGbSDYh
В одном файле объединены Руководство пользователя и Справочник по параметрам в файле Package.ini. Особенности перевода изложены в предисловии.
Если Вы раньше скачали отдельный перевод справочника, удалите его.
Последнее обновление: 2014.09.13, 03:00
Спасибо всем, кто присылает замечания.
 
Вся подборка русских мануалов по ThinApp:
http://yadi.sk/d/eNhwrj3YRAV84
Не переведена пока только книга Бьорка, но перевод будет.
Вся подборка русских мануалов по виртуализации:
https://yadi.sk/d/xia4d6yibLxMA

Всего записей: 90 | Зарегистр. 06-01-2014 | Отправлено: 12:46 12-09-2014 | Исправлено: pavlaf, 03:08 13-09-2014
AVanti473



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
pavlaf
 
Супер!    
 
Теперь надо всё внимательно изучить и закинуть в шапку!
 
Я же говорил, что всё получится!!!    

Всего записей: 1179 | Зарегистр. 05-04-2011 | Отправлено: 13:28 12-09-2014
dinis124

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Привет парни. нет случайно в загашничке  плагина для VMware ThinApp flash player active x 10, для опытов.  

Всего записей: 143 | Зарегистр. 12-09-2011 | Отправлено: 13:28 15-09-2014
AVanti473



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
coherent, по вышеизложенной проблеме с ключом реестра. Вы писали:
 

Цитата:
Да, сборка, если ее зарегистрировать после запуска, с таким "некошерным" реестром работает без проблем.

 
Раз так, возникла такая вот мысль: Что если скриптом добавлять значения не в физический реестр из файла реестра рядом с сборкой, а в виртуальный реестр при помощи скрипта при первом создании песочницы. Одно только НО, я не уверен как это сделать правильно. Согласно мануала, должно быть как-то так:
 

Код:
Function OnFirstSandboxOwner
Origin = GetEnvironmentVariable("TS_ORIGIN")
Set WSHShell = CreateObject("Wscript.Shell")
WSHShell.RegWrite "HKEY_LOCAL_MACHINE\Software\Classes\CLSID\Ey4w    h-
`{{,"
End Function

 
Но как прописать в этот скрипт добавляемые значения? В мануале дан пример только с выносной dll-кой, и там в ключе видимо только одно значение в виде пути к файлу. А если нужно вписать шесть значений? Через запятую? В кавычках? Или как правильно?
 
Добавлено:
--------------

 
Впрочем, уже ответил сам себе практикой...
 

 
Ошибка на 75 символе, где-то на середине крякозябров юникода... Интересно, а есть какие-нибудь обратные слеши, как в PHP, чтобы экранировать непонятный скрипту символ?...

Всего записей: 1179 | Зарегистр. 05-04-2011 | Отправлено: 21:07 15-09-2014 | Исправлено: AVanti473, 21:19 15-09-2014
dinis124

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

Цитата:
Да, сборка, если ее зарегистрировать после запуска, с таким "некошерным" реестром работает без проблем.  

 
Вот и не проще удалить данные из реестра после закрытия портативки? По моему проще. Зажали Flash плагин мне Пошел сам делать.

Всего записей: 143 | Зарегистр. 12-09-2011 | Отправлено: 21:33 15-09-2014 | Исправлено: dinis124, 21:35 15-09-2014
AVanti473



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

Цитата:
Вот и не проще удалить данные из реестра после закрытия портативки?

Вопрос не в этом, а в том, как корректно добавить такие данные в реестр при старте программы, без участия пользователя... На екзелабе тоже предложили ряд решений, но они, как показала практика, не вшиваются нормально в виртуальный контейнер, а могут корректно сработать лишь в физической среде. Лаунчер в виртуале не запускается, а curvekey.exe не может из виртуального контейнера добавить в ключ все значения, как будто это обычный регфайл. Всё сводится к тому, что надо патчить программу, а этого как раз и не особо хочется. Остаются ещё танцы с ,bat файлами типа:
 

Код:
Добавить значение  
REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v Path /t REG_EXPAND_SZ /d "%systemroot%\Path.exe" /f  
 
 Удалить значение (достаточно имени ключа)  
reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v "Path" /f  
 
Где:  
 /v -имя  
 /t -тип  
 /d -значение  
 /f -не запрашивать подтверждение у пользователя

 
И то неясно, как это всё будет работать... Загвоздка в юникоде (названии ключа). Вполне возможно, что из виртуального контейнера с ним вообще ничего сделать будет нельзя... Тогда останется физическая среда.
Ещё хочу попробовать один финт, но пока не выбрал нужную программу... Что-то типа автоустановки, на подобии самой Easy AutoInstaller, чтобы при старте сама ввела все данные в нужные поля окна регистрации. Но там и окно тоже мудрёное, непонятно получится, или нет...

Всего записей: 1179 | Зарегистр. 05-04-2011 | Отправлено: 22:31 15-09-2014
coherent

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

Цитата:
 Вполне возможно, что из виртуального контейнера с ним вообще ничего сделать будет нельзя...

Если регистрировать виртуально запущенное приложение, то этот ключ без проблем создается в виртуальном реестре.

Цитата:
Интересно, а есть какие-нибудь обратные слеши, как в PHP, чтобы экранировать непонятный скрипту символ?...

Попробуйте тут поспрашивать. Там более предметно занимаются vbs-скриптами.

Всего записей: 3881 | Зарегистр. 20-02-2007 | Отправлено: 11:14 16-09-2014
AVanti473



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

Цитата:
Если регистрировать виртуально запущенное приложение, то этот ключ без проблем создается в виртуальном реестре.

 
Это-то как раз я уже заметил и изучил
 

Цитата:
Попробуйте тут поспрашивать. Там более предметно занимаются vbs-скриптами.

 
Ок! Спасибо! Сегодня вечерком туда наведаюсь...

Всего записей: 1179 | Зарегистр. 05-04-2011 | Отправлено: 13:12 16-09-2014
   

Страницы: 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 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224

Компьютерный форум Ru.Board » Компьютеры » Программы » VMware ThinApp (formerly Thinstall) 3
articlebot (28-02-2016 18:11): VMware ThinApp (formerly Thinstall) часть 4


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

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru