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

» VMware application virtualization (Thinstall)

Автор: Sergey_AV
Дата сообщения: 15.02.2008 14:20
andkh1

Цитата:
А ты как все это делал?

По всякому .
Вариант 1.
Чистая система. Запускаю Монитор (ДО). Ставлю приложение (настраиваю его). Копирую на "c:\Extra\clean.exe". Запускаю Монитор (ПОСЛЕ). Сохраняю проект.
В корневом каталоге сохраненного проекта, там же где находится Package.ini, создаю файл Utility.vbs, приведенный на предыдущей странице. Удостоверяюсь, что в корневом каталоге присутствует папка %drive_c%, содержащая Extra\clean.exe.
Запускаю компиляцию (сборку проекта). Все собралось. Затем проверяю работу приложения. Все работает, но... только до тех пор, пока на реальном диске С (не %drive_c% из проекта) присутствует преусловутый c:\Extra\clean.exe. Естесственно, проверяю на "чистой" (восстановленной) системе.

Вариант 2.
Рабочая проектная папка (ранее собранный проект), с полным набором для компиляции. Я их не удаляю (по крайней мере, не сразу), иногда возникает необходимость "подкорректировать" проект, поэтому они у меня лежат "для дальнейших эксперементов". Но не суть.
Что дальше. Дальше - добавляю в эту "заготовку" %drive_c%, содержащий Extra\clean.exe, и Utility.vbs. Запускаю сборку проекта. Опять же проверяю. Все тоже самое - пока на диске С (реальном) есть Extra\clean.exe, все выполняется (происходит очистка MUICache). Как только "убираем" с диска Extra\clean.exe - все, облом.
Есстественно, перед сборкой ("пересборками") чищу Thinstall-кэш (папку Build) - на эти грабли я давно наступал.
Хотя это актуально только в том случае, если в проекте применяется компрессия - в противном случае кэш не создается.

Что пробовал:
Ну, поскольку по всей логике работы, "ExecuteExternalProcess" соответствует реальному диску, а не виртуальному, заменил на "ExecuteVirtualProcess" - должно бы, по идее, с %drive_c%\Extra\clean.exe работать. Но... Не работает! .
Почему - не понимаю .
Пробовал вообще от применения "файлов" отказаться: как внешних, так и внутренних. Запускал командой (опять же, в разных вариантах):

Цитата:
Function OnLastProcessExit
Set WshShell = CreateObject("WScript.Shell")
id = ExecuteExternalProcess("WshShell.Run ""%comspec% /c REG DELETE HKCU\Software\Microsoft\Windows\ShellNoRoam\MUICache\ /f /va"", 0, True")
WaitForProcess id, 0
End Function

Результата никакого. Уж не знаю, что и придумать - руки опускаются. Ну, не програмист я. Хотя и приходится .



Автор: andkh1
Дата сообщения: 15.02.2008 14:44
Sergey_AV
Может для папки %drive_c%\Extra нужно поставить изоляцию Full? Или еще вариант, может надо найти ветку с MUICache в виртуальном реестре и посмотреть какая там изоляция стоит. Мне кажется это даже скорее проблема свиртуальным реестром. Т.е. может реестр и чистится, но "виртуально". Хотя это только теория проверить сейчас сам не могу...
Автор: Sergey_AV
Дата сообщения: 15.02.2008 14:51
andkh1

Цитата:
Может для папки %drive_c%\Extra нужно поставить изоляцию Full?

Делал. Она такая и по-умолчанию стоит. Менял на Merged и WriteCopy - эффекта тоже не дало.

Цитата:
Или еще вариант, может надо найти ветку с MUICache в виртуальном реестре и посмотреть какая там изоляция стоит.

Можно "ткнуть носом", как это сделать? Я здесь читал что-то об этом, но подробностей, к сожалению, не помню. Скорее всего, просто не понял как...

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

Тогда вопрос: как его чистить не "виртуально"? Нам кузнец не нужен (с)


Автор: andkh1
Дата сообщения: 15.02.2008 15:10
Sergey_AV
Ну, в твоем проекте после всех снимков и установок будут txt-файлы, кажется HKLM и HKCU вот их открываешь в блокноте и ищешь, если там нет, то можно самому прописать попробывать по аналогии с уже имеющимися записями.
Автор: vyachko
Дата сообщения: 15.02.2008 16:04
Sergey_AV

Ну вот и я взялся за скрипты и результат (практически полностью содран с документации на Thinstall: Scripting>Examples>System registry example):


Цитата:
Function OnLastProcessExit
RegFileName = ExpandPath("%Personal%\MUICacheDel.reg")
Set fso = CreateObject("Scripting.FileSystemObject")
Set RegFile = fso.CreateTextFile(RegFileName, true)
RegFile.WriteLine("Windows Registry Editor Version 5.00")
RegFile.WriteBlankLines(1)
RegFile.WriteLine("[-HKEY_CURRENT_USER\Software\Microsoft\Windows\ShellNoRoam\MUICache]")
RegFile.WriteBlankLines(1)
RegFile.Close
RegEditPid = ExecuteExternalProcess("regedit /s " & chr(34) & RegFileName & chr(34))
WaitForProcess RegEditPid, 0
fso.DeleteFile(RegFileName)
End Function


В двух словах: после завершения последнего из процессов в папке Мои Документы (My Documents) текущего пользователя создаётся .reg файл предписывающий удалить всю ветку HKEY_CURRENT_USER\Software\Microsoft\Windows\ShellNoRoam\MUICache, после чего как внешний процесс запускается regedit и импортируется описанный ранее .reg файл, после импорта .reg файл удаляется.

У меня работает.

Добавлено:

Вариант второй, для тех кто хочет, чтобы после удаления ветка MUICache вновь появлялась, но уже девственно-чистой:


Цитата:
Function OnLastProcessExit
RegFileName = ExpandPath("%Personal%\MUICacheDel.reg")
Set fso = CreateObject("Scripting.FileSystemObject")
Set RegFile = fso.CreateTextFile(RegFileName, true)
RegFile.WriteLine("Windows Registry Editor Version 5.00")
RegFile.WriteBlankLines(1)
RegFile.WriteLine("[-HKEY_CURRENT_USER\Software\Microsoft\Windows\ShellNoRoam\MUICache]")
RegFile.WriteBlankLines(1)
RegFile.Close
RegEditPid = ExecuteExternalProcess("regedit /s " & chr(34) & RegFileName & chr(34))
WaitForProcess RegEditPid, 0
fso.DeleteFile(RegFileName)
RegFileName = ExpandPath("%Personal%\MUICacheCreate.reg")
Set fso = CreateObject("Scripting.FileSystemObject")
Set RegFile = fso.CreateTextFile(RegFileName, true)
RegFile.WriteLine("Windows Registry Editor Version 5.00")
RegFile.WriteBlankLines(1)
RegFile.WriteLine("[HKEY_CURRENT_USER\Software\Microsoft\Windows\ShellNoRoam\MUICache]")
RegFile.WriteBlankLines(1)
RegFile.Close
RegEditPid = ExecuteExternalProcess("regedit /s " & chr(34) & RegFileName & chr(34))
WaitForProcess RegEditPid, 0
fso.DeleteFile(RegFileName)
End Function

Автор: Wu Tang
Дата сообщения: 15.02.2008 19:23
sanb
Я, кстати, собирал Articons разных версий и все нормально!
Sergey_AV
А чем моя тулза плоха?
Автор: Sergey_AV
Дата сообщения: 16.02.2008 09:17
vyachko
Огромное спасибо за проделанную работу!
Но у меня и 1-м, и во 2-м случае после закрытия Thinstall-приложения вылазит ошибка:

Я так понимаю, дело не в неправильности скрипта - это у меня где-то косяк. Где?
Мне кажется, что не хватает каких-то путей (возможно, к scripting.dll?), где это все должно прописываться? Хотя, с другой стороны, при наличии же на "c:\Extra\clean.exe" все работает...
Может, все дело в установке самого Thinstall-а? Я просто копирую папку Thinstall.VS на диск С, в Program Files. Версия Thinstall-а - 3.332.

Wu Tang

Цитата:
А чем моя тулза плоха?

А какой тулзе идет речь? Я, вроде, ничего не говорил...



Автор: vyachko
Дата сообщения: 16.02.2008 09:54
Sergey_AV

В снимке есть папка %Personal% с режимом Merged (через ##Attributes.ini)?
Автор: Sergey_AV
Дата сообщения: 16.02.2008 09:59
vyachko

Цитата:
В снимке есть папка %Personal% с режимом Merged (через ##Attributes.ini)?

Есть.
Автор: vyachko
Дата сообщения: 16.02.2008 10:07
Sergey_AV

Я сейчас попробовал преднамеренно задать неверный путь в строках
RegFileName = ExpandPath("%Personal%\MUICacheDel.reg")
и
RegFileName = ExpandPath("%Personal%\MUICacheCreate.reg")
и получил абсолютно такую же ошибку.

Покажи свой .vbs.
Автор: Sergey_AV
Дата сообщения: 16.02.2008 10:18
Кстати, я посмотрел - scripting.dll нормально линкуется при сборке. И это понятно: иначе бы оно вообще не работало. Только что переустановил Thinstall: специально взял инсталлятор от CrazyDeath с "неисправной" иконкой из варезника - эффект тот же самый. Я так понимаю, этот инсталлер все равно в переменные окружения ничего не пишет, т.е. результат "инсталляции" ничем не отличается от результатов распаковки (простого копирования). В общем, пока все безрезультатно .

Цитата:
Я сейчас попробовал преднамеренно задать неверный путь в строках...
и получил абсолютно такую же ошибку.
Покажи свой .vbs.

Дык он не мой, он - твой . Вот:

Цитата:
Function OnLastProcessExit
RegFileName = ExpandPath("%Personal%\MUICacheDel.reg")
Set fso = CreateObject("Scripting.FileSystemObject")
Set RegFile = fso.CreateTextFile(RegFileName, true)
RegFile.WriteLine("Windows Registry Editor Version 5.00")
RegFile.WriteBlankLines(1)
RegFile.WriteLine("[-HKEY_CURRENT_USER\Software\Microsoft\Windows\ShellNoRoam\MUICache]")
RegFile.WriteBlankLines(1)
RegFile.Close
RegEditPid = ExecuteExternalProcess("regedit /s " & chr(34) & RegFileName & chr(34))
WaitForProcess RegEditPid, 0
fso.DeleteFile(RegFileName)
End Function



Автор: vyachko
Дата сообщения: 16.02.2008 10:39
Sergey_AV

После каждой "попытки" удаляешь SandBox?
Автор: Sergey_AV
Дата сообщения: 16.02.2008 10:43
vyachko

Цитата:
После каждой "попытки" удаляешь SandBox?

Естественно. Еще и BuildCache чищу...
Автор: vyachko
Дата сообщения: 16.02.2008 11:01
Sergey_AV

Можно, опять же для эксперимента прописать путь в строке:
RegFileName = ("C:\Documents and Settings\Имя пользователя\My Documents\MUICacheDel.reg")

Соответственно заменив Имя пользователя на своё.

Добавлено:

По поводу создания и изменения файлов чезер VBScript, можно почитать http://www.citforum.ru/programming/digest/fsovb6.shtml.
Автор: Sergey_AV
Дата сообщения: 16.02.2008 11:14
vyachko
Та же самая ошибка, не помогло. Слушай, давай в РМ, а то тут это оффтопиком отдает...


Добавлено:
За ссылку спасибо, но я давно (и успешно) это все пользую - почему-то не работает именно в среде Thinstall. Возможно, особенности конфигурации моей ОС? См. Set [more]
ALLUSERSPROFILE=C:\Profiles\All Users
APPDATA=C:\Profiles\Администратор\Application Data
CLIENTNAME=Console
CommonProgramFiles=C:\Program Files\Common Files
COMPUTERNAME=TEST-XX
ComSpec=C:\WINXP\system32\cmd.exe
FARHOME=C:\Program Files\Far
FARLANG=Russian
FP_NO_HOST_CHECK=NO
HOMEDRIVE=C:
HOMEPATH=\Profiles\Администратор
LOGONSERVER=\\TEST-XX
NUMBER_OF_PROCESSORS=1
OS=Windows_NT
Path=C:\WINXP\system32;C:\WINXP;C:\WINXP\System32\Wbem;C:\ARC;
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
PROCESSOR_ARCHITECTURE=x86
PROCESSOR_IDENTIFIER=x86 Family 6 Model 22 Stepping 1, GenuineIntel
PROCESSOR_LEVEL=6
PROCESSOR_REVISION=1601
ProgramFiles=C:\Program Files
PROMPT=$P$G
SESSIONNAME=Console
SystemDrive=C:
SystemRoot=C:\WINXP
TEMP=C:\TEMP
TMP=C:\TEMP
USERDOMAIN=TEST-XX
USERNAME=Администратор
USERPROFILE=C:\Profiles\Администратор
windir=C:\WINXP [/more]

Автор: Intersolar
Дата сообщения: 16.02.2008 20:23
vyachko

Быть может я гоню волну, но DrWeb выдал следующее:

Start-Apps 1.0.0.1.exe - инфицирован Trojan.PWS.Webmonier

Обычно я не реагирую на подобные выкрики антивирусов на такого плана программы, но что-то меня здесь смутило.
Автор: Sergey_AV
Дата сообщения: 16.02.2008 20:50
Intersolar
Брехня!
Автор: vyachko
Дата сообщения: 18.02.2008 07:58
Sergey_AV

Цитата:
Слушай, давай в РМ, а то тут это оффтопиком отдает...

Ок

Intersolar

Цитата:
Start-Apps 1.0.0.1.exe - инфицирован Trojan.PWS.Webmonier


У меня также ругается, если кому хочется быть уверенным в "чистоте" исходный проект Start-App (*.sha файл) здесь выполнен в HiAsm 3.65b168. Для тех кто не знаком с HiAsm (конструктор программ) можно ознакомиться здесь.
Автор: sanb
Дата сообщения: 18.02.2008 08:12
как можно деликатно остановить процесс (сервис) при выходе из программы, а то он остается в процессах, игрался с Autoshutdownservices не помогло
Автор: andkh1
Дата сообщения: 18.02.2008 08:26
sanb
Посмотри по этому топику ближе к началу... Раньше, когда функции Autoshutdownservices небыло, использовали PsTools (вот здесь он лежит http://www.microsoft.com/technet/sysinternals/ProcessesAndThreads/PsKill.mspx)+

Цитата:
Не каждой собранной Thinstall'ом проге это помогает, если ты хочешь попробовать рекомендации написанные ранее, как:

Перед снятием снимка , создайте следующую папку C:\Extras и поместите kill.exe в нее.
Запустите kill.exe чтобы избавиться от EULA(всплывающие окна) впоследствии.
Создайте пустой txt файл и запишите в него следующее:

Function OnFirstParentExit
ExecuteVirtualProcess "c:\Extras\pskill application.exe"
End Function

Сохраните txt файл как Utility.vbs
Поместите Utility.vbs рядом с Package.ini перед началом задания.

Вот так можно попробывать.
Автор: Intersolar
Дата сообщения: 18.02.2008 15:41
vyachko
Да не вопрос, просто решил уточнить. А то DrWeb так убедительно выразился
Автор: CrazyDeath
Дата сообщения: 19.02.2008 02:19

Цитата:
Я так понимаю, этот инсталлер все равно в переменные окружения ничего не пишет

Угу что мой, что оригинальный.
Автор: gyfhgyfh
Дата сообщения: 19.02.2008 03:32
XPsp2 Notepad.exe Before UPX Pack :

ClamAV 0.92 5879 2008-02-19 0.04 Trojan.Dropper-1206
Prevx V2 20080219 2008-02-19 6.76 TROJAN.DOWNLOADER.GEN


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

XPsp2 Notepad.exe packed with UPX 1.9x :

Fortinet 2.81-3.11 8.769 2008-02-19 2.07 Suspicious
IKARUS T3.1.01.20 2008.02.18.70329 2008-02-18 2.12 Trojan-Dropper.Win32.Microjoin.R
Prevx V2 20080219 2008-02-19 4.55 TROJAN.DOWNLOADER.GEN
SOPHOS 2.70.1 4.26 2008-02-19 8.24 Mal/Behav-160





Серьезные неправильно .
Автор: vyachko
Дата сообщения: 19.02.2008 07:51
Start-Apps 1.0.0.1.rar

34,4кБ, 19.02.2008

Поправил, теперь Dr.Web не ругается.
Автор: Intersolar
Дата сообщения: 19.02.2008 08:29
gyfhgyfh

Цитата:
Fortinet
IKARUS
Prevx


I guess, it's not critical for Russian users
Автор: gyfhgyfh
Дата сообщения: 19.02.2008 08:40
Dr.Web
Kaspersky
VBA32
NOD32
AVGAnti
F-Secure
AntiVir
BitDefender

......


They are Very Good !!!

VB 100% Award Test (http://www.virusbtn.com)

Автор: lemonti3
Дата сообщения: 19.02.2008 12:55
Вопрос: При запуске программы, запускаемый *.exe обращается к файлу registry, который предварительно скидываю в папку data в программе. Однако при сборке в Thinstall и тестировании программы, она снова просит регистрацию. Т.е. не видит данный файл. Как сделать, чтобы *.exe его увидел.
Автор: dj_Diesel
Дата сообщения: 19.02.2008 15:12
lemonti3
как я понял в файле registry значения реестра для регистрации да?

тогда не легче ли ввести их в проекте и все
или скажи название проги

или сделай VBS script чтоб при запуске читался файл registry
Автор: lemonti3
Дата сообщения: 19.02.2008 16:13
Не совсем так. Данный файл registry создался после того как провел регистрацию, через Crack по ID. При этом он имеет тип не *.reg, а *.sys (Register.sys). А при прогоне в файлах реестра отсутствует значение ключа. То есть ключ реестра в Thinstall не повлияет на запуск проги. Мучаюсь над программой АЛГОРИТМ.
Автор: CrazyDeath
Дата сообщения: 19.02.2008 23:56
to lemonti3
Попробуй Thinstall версию зарегистрировать.
и сылку на прогу дай.

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980

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


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