Что нового

[Процессы] Правильный порядок запуска установки программ

NetRanger

Новичок
Сообщения
3
Репутация
0
Всем привет. Такая задача - идет разархвация архива (WinRAR'ом) с программами для скрипта, после чего сразу же запускается exe файл, конвертированный из au3 скрипта. Проблема в том, что он не отрабатывает. Появляется в трее иконка файла и на этом всё заканчивается. Как можно понять что это и как это исправить? Испытания проводятся на Windows 7 x32 Enterprise.
Код:
Local $deltmpdir="rmdir /S /Q C:\Temp\Install"
Local $delmain="del /S /Q C:\Temp\main_x32.exe"
Local $delsrc1="del /S /Q C:\Temp\Src.exe"
Local $delsrc2="del /S /Q C:\Temp\x32.exe"
Local $Install="Setup - Unreal Commander"
Local $Install_Dj="DjVuLibre+DjView 3.5.25.3+4.9 Setup"
Local $DelTempFiles = 'rmdir /S /Q "D:\Рабочий стол\OpenOffice 4.1.0 (ru) Installation Files"'
Run("C:\Temp\Install\AdbeRdr11000_ru_RU.exe")
WinWaitActive("Adobe Reader XI", "&Далее")
Send("{ENTER}")
Send("{ENTER}")
Sleep(2000)
Run("C:\Temp\Install\Apache_OpenOffice_4.1.0_Win_x86_install_ru.exe")
WinWaitActive("Подготовка к установке OpenOffice 4.1.0","&Далее")
Send("{ENTER}")
WinWaitActive("Подготовка к установке OpenOffice 4.1.0","&Распаковать")
Send("{ENTER}")
Sleep(30000)
Send("{ENTER}")
WinWaitActive("OpenOffice 4.1.0 - Мастер установки","Информация о пользователе")
Send("{ENTER}")
WinWaitActive("OpenOffice 4.1.0 - Мастер установки","Тип установки")
Send("{ENTER}")
WinWaitActive("OpenOffice 4.1.0 - Мастер установки","Готов к установке")
Send("{ENTER}")
WinWaitActive("OpenOffice 4.1.0 - Мастер установки","Работа мастера установки завершена")
Send("{ENTER}")
RunWait('"' & @ComSpec & '" /c ' & $DelTempFiles)
Sleep(2000)
Run("C:\Temp\Install\DjVuLibre+DjView-3.5.25.3+4.9-Setup.exe")
WinWaitActive($Install_Dj, "&Next")
Send("{ENTER}")
Send("{ENTER}")
WinWaitActive($Install_Dj, "&Install")
Send("{ENTER}")
WinWaitActive($Install_Dj, "&Finish")
Send("{ENTER}")
Sleep(2000)
Run("C:\Temp\Install\Lync\setup.exe")
WinWaitActive ("Microsoft Lync 2013", "")
Send ("{SPACE}{ENTER}")
WinWaitActive ("Microsoft Lync 2013", "")
Send ("{ENTER}")
Sleep(215000)
Send ("{TAB}{ENTER}")
Sleep(2000)
Switch @OSVersion
Case Win_XP to Win_7
Run("C:\Temp\Install\SetupVSE.exe")
Case Else
Run("C:\Temp\Install\SetupVSE_Win8.exe")
EndSwitch
Send("{ENTER}")
WinWaitActive("McAfee VirusScan Enterprise Setup","&Next")
Send("{ENTER}")
WinWaitActive("Лицезирование McAfee","Лицензионное соглашение McAfee с конечным пользователем")
Send("{UP}{ENTER}")
WinWaitActive("McAfee VirusScan Enterprise Setup","Select Setup Type")
Send("{ENTER}")
WinWaitActive("McAfee VirusScan Enterprise Setup","Select Acess Protection Level")
Send("{ENTER}")
WinWaitActive("McAfee VirusScan Enterprise Setup","Ready to install")
Send("{ENTER}")
WinWaitActive("McAfee VirusScan Enterprise Setup","McAfee VirusScan Enterprise setup has completed successfully")
Send("{TAB}{SPACE}{ENTER}")
Sleep(2000)
Run("C:\Temp\Install\uncomsetup0.96(build787).exe")
Sleep(500)
Send("{UP 1}{ENTER}")
WinWaitActive($Install, "&Next")
Send("{ENTER}")
WinWaitActive($Install, "&Next")
Send("{TAB}{UP 1}{ENTER}")
WinWaitActive($Install, "&Next")
Send("{ENTER}")
WinWaitActive($Install, "&Next")
Send("{ENTER}")
WinWaitActive($Install, "&Next")
Send("{ENTER}")
WinWaitActive($Install, "&Install")
Send("{ENTER}")
WinWaitActive($Install, "&Finish")
Send("{SPACE}{TAB}{SPACE}")
Sleep(2000)
Run("C:\Temp\Install\wrar390ru.exe")
Sleep(250)
Send("{ENTER}")
Sleep(250)
Send("{ENTER}")
Sleep(250)
Send("{ENTER}")
Sleep(250)
Send("{ENTER}")
Sleep(350)
Send("{ENTER}")
Run("C:\Temp\Install\rarreg.exe")
Sleep(250)
Send("{ENTER}")
Sleep(250)
Send("{ENTER}")
RunWait(@ComSpec & " /C " & $deltmpdir, "", @SW_HIDE)
RunWait(@ComSpec & " /C " & $delmain, "", @SW_HIDE)
RunWait(@ComSpec & " /C " & $delsrc1, "", @SW_HIDE)
RunWait(@ComSpec & " /C " & $delsrc2, "", @SW_HIDE)

Папка C:\Temp\Install создается средствами WinRAR до распаковки архива с программами для скрипта.
 

vovsla

Осваивающий
Сообщения
607
Репутация
36
Отладку лучше всего делать не с ехе, а с au3, перед участками кода где могут быть проблемы нужно прописать вывод в консоль контрольной информации, и тогда можно увидеть на чем останавливается скрипт.
Например
Код:
If FileExists("C:\Temp\Install\AdbeRdr11000_ru_RU.exe") Then ConsoleWrite('Файл найден '&@CRLF)
Run("C:\Temp\Install\AdbeRdr11000_ru_RU.exe")
ConsoleWrite('Жду окно '&@CRLF)
WinWaitActive("Adobe Reader XI", "&Далее")

В данном случае я бы поставил активацию окна до ожидания активации

Вместо фиксированного пути лучше использовать переменные такие как @HomeDrive

Посылать нажатие кнопок в активное окно и делать паузу с фиксированным временем - не самый хороший вариант.
Лучше посмотреть ID контрольных кнопок и обращаться прямо к ним через ControlClick, в крайнем случае можно использовать ControlSend

Для установки различного ПО лучше использовать ключи для тихой установки
У каждого инсталлятора свои ключи http://www.oszone.net/2766
 
Верх