PDA

Показать полную графическую версию : Установка ICQ. Поправьте что не так.


seriych
13-11-2009, 23:58
Автоматическая установка ICQLite: http://ftp.icq.com/pub/ICQLite/install_icqlite.exe
Это мой первый скрипт AutoIt (не считая хеллоувордов :) ). Вроде работает, но может что-то обычно не так делают? Если что- поправьте.
И еще пара вопросов:
2) Если переименовать инсталлятор аськи, то при установке выдает окошко с надписью Чтобы продолжить установку, нужно закрыть программу ICQ. Сделать это сейчас? - жмем да и начинается установка. Но в этом окошке нет заголовка (Au3Info в поле title ничего не показывает). Как обратиться к такому окну?
; Автоустановка ICQ Lite
; Тестировалось на :
; Windows XP Professional SP3 x86,
; Windows Vista Home Basic x86,
; Windows 7 Home Basic x86

$Title = "ICQ Lite - InstallShield Wizard" ; Заголовок окна инсталлятора
$FirstText = "I accept the terms of the Agreements" ; Текст в первом окне (Принять лицензию)
$SecondText = "Custom Installation" ; Текст во втором окне (Настройки)
$ThirdText = "You successfully installed" ; Текст в третьем окне (Готово...)
$Next = "[CLASS:Button; INSTANCE:1]" ; Кнопка "Далее"

AutoItSetOption("WinTextMatchMode", 2) ; Идентификация окна по произвольному фрагменту

; Запуск инсталлятора
Run("install_icqlite.exe") ; Не переименовывайте инсталлятор!

; Ожидание первого окна инсталлятора (Принять лицензию)
WinWait ( $Title, $FirstText)
BlockInput(1) ; Блокировать клавиатуру и мышь
WinActivate ( $Title, "")
WinWaitActive ( $Title, "")
; Принять лицензию
ControlCommand ( $Title, "", "[CLASS:Button; INSTANCE:2]", "Check", "")
ControlClick ( $Title, "", $Next) ; Далее...
BlockInput(0) ; Разблокировать клавиатуру и мышь

; Ожидание второго окна инсталлятора (Настройки)
WinWait($Title, $SecondText)
BlockInput(1) ; Блокировать клавиатуру и мышь
WinActivate($Title, "")
WinWaitActive($Title, "")
; Настройка параметров
ControlCommand ( $Title, "", "[CLASS:Button; INSTANCE:7]", "Check", "")
; Не использовать поиск ICQ
ControlCommand ( $Title, "", "[CLASS:Button; INSTANCE:12]", "UnCheck", "")
; Не ставить поиск ICQ в качестве домашней страницы
ControlCommand ( $Title, "", "[CLASS:Button; INSTANCE:13]", "UnCheck", "")
; Не устанавливать инструментальную панель ICQ
ControlCommand ( $Title, "", "[CLASS:Button; INSTANCE:14]", "UnCheck", "")
ControlClick ( $Title, "", $Next) ; Далее...
BlockInput(0) ; Разблокировать клавиатуру и мышь

; Ожидание третьего окна инсталлятора (Готово...)
WinWait($Title, $ThirdText)
BlockInput(1) ; Блокировать клавиатуру и мышь
WinActivate($Title, "")
WinWaitActive($Title, "")
; Не запускать ICQ после установки
ControlCommand ( $Title, "", "[CLASS:Button; INSTANCE:17]", "UnCheck", "")
; Не помещать иконку ICQ в панель быстрого запуска
ControlCommand ( $Title, "", "[CLASS:Button; INSTANCE:18]", "UnCheck", "")
; Не помещать иконку ICQ на рабочий стол
ControlCommand ( $Title, "", "[CLASS:Button; INSTANCE:19]", "UnCheck", "")
ControlClick ( $Title, "", $Next) ; Завершение установки
BlockInput(0) ; Разблокировать клавиатуру и мышь

; Не загружать ICQ при входе в систему
RegDelete("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run", "icq")

beve
14-11-2009, 01:29
1).если запускаю из батника start /wait "" "AutoIt3.exe" "auto_install_icqlite.au3" , то все работает, а если компилирую, то доходит до первого окна установки и дальше не работает. Почему? »
Если ты используеш в твоем скрипте такую ф-ию:
WinWaitActive ( $Title, ""), то нужно обязательно включить BlockInput(1)
;тут твой код
BlockInput(0)
и так застраховаться от нежелательного действия пользователя (кликнул случайно именно в этот момент user, и активировалось другое окно, а скрипт будет ждать, когда же будет активно именно указанное в скрипте окно.)
2).Если переименовать инсталлятор аськи, то при установке выдает окошко с надписью Чтобы продолжить установку, нужно закрыть программу ICQ. Сделать это сейчас? »
Это не зависит от переменования инсталятора, можеш переменовывать как угодно тебе (не забыв в скрипте это указать), а окошко это может быть выдано только если найден запущенный процес icq. Поэтоу советую в начале установки, проверять наличие запущенного процесса icq, и если таковый найден, то завершить его, и дальше по коду.
3).Вроде работает, но может что-то обычно не так делают? Если что- поправьте. »
У меня, если твой скрипт скомпелировать в exe файл и запустить, после установки автоматом запускается icq, ибо эта функция:; Не запускать ICQ после установки
ControlCommand ( $Title, "",60, "UnCheck", "") не отрабатывается, то есть чекбокс так и остается быть отмечен, а если так в этом месте: ; Не запускать ICQ после установки
ControlCommand ( $Title, "","[CLASS:Button; INSTANCE:17]", "UnCheck", "") то в результате все ОК. Больше замечаний нету, только одно: исходя из вышеописанного, контролы лучше указывать, примерно так: [CLASS:Button; INSTANCE:17], вместо 60, но это наверное просто случайность, но так, как я пробовал установку 2 раза, а случайность повторилась, то делай выводы.

seriych
16-11-2009, 20:43
beve,
Спасибо. Код поправил.
На счет переименовывания остаюсь при своем мнении: окошко выдается только если переименовать инсталлятор. Может процесс ICQ появляется только в этом случае, но как все-таки нажать там на кнопочку "Да"?
А как автоматически раскрасить код для форума? Или ты вручную делаешь?




© OSzone.net 2001-2012