Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Название темы: Вопросы По WPI
Показать сообщение отдельно

Аватара для Sanja Alone

Ищу Человека…


Сообщения: 420
Благодарности: 67

Профиль | Сайт | Отправить PM | Цитировать


Цитата МИШАНЧИК:
cmd2[pn]=['TASKKILL.EXE /F /IM IEXPLORE.EXE'];
cmd3[pn]=['TASKKILL.EXE /F /IM MusicStudio3.EXE']; >
В подобных ситуациях проще установку делать посредством AutoIt скрипта (autoit-ashampoo.au3):

Простой вариант (если процесс ashampoo.exe завершается до открытия браузера):
Код: Выделить весь код
$defaultbrowser = RegRead ('HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet','')
RunWait ( @ScriptDir & '\ashampoo.exe /s' )
RunWait ( @Comspec & ' /C taskkill.exe /F /IM MusicStudio3.EXE /IM ' & $defaultbrowser, '', @SW_HIDE )
RunWait ('regedit /S "' & @ScriptDir & '\Ashampoo.reg"', '', @SW_HIDE )
Более хитрый вариант (если ashampoo.exe висит в памяти до закрытия процесса браузера):
Код: Выделить весь код
;читаем из реестра имя процесса браузера по умолчанию (описано в AutoIt FAQ: раздел Отлов "случайных" окон, пункт 4)
$defaultbrowser = RegRead ('HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet','')

Dim $processes[2] = [$defaultbrowser, "MusicStudio3.EXE"] ; массив процессов для "убийства"

;установка в тихом режиме
AdlibEnable ("_CloseProcesses",2000)
RunWait ( @ScriptDir & '\ashampoo.exe /s' )
AdlibDisable()

;импорт reg-файла
RunWait ('regedit /S "' & @ScriptDir & '\Ashampoo.reg"', '', @SW_HIDE )


Func _CloseProcesses()
	For $process In $processes
		If ProcessExists($process) Then
			ProcessClose($process)
			ProcessWaitClose($process)
		EndIf
	Next
EndFunc
Далее скрипт компилируется и из WPI юзается так:
Код: Выделить весь код
cmd1[pn]=['%cdrom%\\Soft\\autoit-ashampoo.exe'];

В кач-ве альтернативы можно исп-ть cmd-файл (ashampoo.cmd):
Код: Выделить весь код
start "Install" /wait "%~dp0ashampoo.exe" /s
rem rem !ВАЖНО! - в кач-ве разделителя нужно указать только символ табуляции 
rem (ASCII-код символа после знака "равно" в выделенном фрагменте должен быть 09)
for /f "tokens=3 delims=	" %%j in ('reg query HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet /ve') do set defbrowser=%%j
taskkill /F /IM MusicStudio3.EXE /IM %defbrowser%
regedit /s "%~dp0Ashampoo.reg"
Использование из WPI:
Код: Выделить весь код
cmd1[pn]=['%cdrom%\\Soft\\ashampoo.cmd'];
P.S. Конкретно на Ashampoo я все это не проверял, но я описал возможные варианты решения для любых приложений, установщики которых ведут себя подобным образом.

-------
Sanja Alone's site (ConvRegToAU3, OEsr, RSA, AutoIt скрипты)

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:02, 25-10-2008 | #870

Название темы: Вопросы По WPI