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

Показать сообщение отдельно

Аватара для semiono

Ветеран


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

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


Код: Выделить весь код
$InstallPath=@ProgramFilesDir & "\MediaStudio"

; Проверка установленной программы, собсно это и хочется закоментировать и пойти другим путём.
If FileExists(@ProgramFilesDir & "\Ulead Systems\Ulead MediaStudio Pro 8.0\veditor.exe") Then Exit
	
; Тута не скажу что ставиться, секрет ;-
ShellExecute("****.exe", "/verysilent", "$ScriptDir")

Blockinput(1)

Run("Ulead MediaStudio Pro 8.0.exe")

WinWaitActive("", "Welcome")
ControlClick("", "", "[Class:Button; Instance:1]", "left", 1)

WinWaitActive("", "License Agreement")
ControlClick("", "", "[Class:Button; Instance:2]", "left", 1)

WinWaitActive("", "Choose Destination Location")
ControlClick("", "", "[Class:Button; Instance:3]", "left", 1)
Send($InstallPath)
Sleep(800)
ControlClick("", "", "[Class:Button; Instance:1]", "left", 1)
Sleep(800)
ControlClick("", "", "[Class:Button; Instance:1]", "left", 1)
Sleep(800)
Send("{BS 32}")
Send($InstallPath & "\Preview")
Sleep(800)
ControlClick("", "", "[Class:Button; Instance:3]", "left", 1)
Sleep(800)
ControlClick("", "", "[Class:Button; Instance:6]", "left", 1)
Sleep(200)
ControlClick("", "", "[Class:Button; Instance:9]", "left", 1)
Sleep(800)
ControlClick("", "", "[Class:Button; Instance:2]", "left", 1)
Sleep(800)
ControlClick("", "", "[Class:Button; Instance:1]", "left", 1)

WinWaitActive("", "InstallShield Wizard Complete")
ControlClick("", "", "[Class:Button; Instance:4]", "left", 1)

Blockinput(0)
Вопросы:
1. Если установленна уже была программа, то при повторной установке откроется MsgBox с заголовком
"Uninstall blah-blah?" и двумя(ми) кнопкоми Yes, No. Довольно частая ситуация, хотелось бы какой нибудь
код предпринять, чтоб напр. Uninstall нажать. Но я не знаю что в If Then... EndIf вписать, подскажите?
Я пробовал так
Код: Выделить весь код
Run("Ulead MediaStudio Pro 8.0.exe")
If
WinWaitActive("Uninstall", "") = 0 Then
....
else 
ControlClick("", "", "[Class:Button; Instance:4]", "left", 1)
EndIf
не получается...
Как кстати указать чтоб все ошибки репортировались? Потому что в данном случае ошибки были, но молча было
2. Что меня удивило тут, то что Sleep действительно нужен! Иначе в многих местах не срабатывает и появляются пропуски... Но почему? Приложение большое - 128 мег, может от этого? Или тут какие-то спецэффекты в окнах. Я помню Sleep не использовал раньше вообще, или лучше всегда и везде так подстраховывать? Хотя я думаю лучше "быстрее" установить чем во время Sleep какоенить посторонее окно может выскочить?
3. Как правильно очищать поле ввода [C:\Program Fils\MyApp] ? Его бы выделить сначала, для уверенности,
но как-то всё коряво получается, того и гляди слетит.... Всё что у меня ума хватило это вбивать Send("{BS 32}")
Но зафокусировать поле ввода вообще не знаю как. ? Пожалуста отвечайте кодом, ато я в хелпе потеряюсь совсем...

-------
Полезное сообщение


Отправлено: 20:02, 05-11-2008 | #1078