Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   Установка ICQ. Поправьте что не так. (http://forum.oszone.net/showthread.php?t=156990)

seriych 13-11-2009 23:58 1269776

Установка ICQ. Поправьте что не так.
 
Автоматическая установка 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 1269834

1).
Цитата:

Цитата seriych
если запускаю из батника start /wait "" "AutoIt3.exe" "auto_install_icqlite.au3" , то все работает, а если компилирую, то доходит до первого окна установки и дальше не работает. Почему? »

Если ты используеш в твоем скрипте такую ф-ию:
WinWaitActive ( $Title, ""), то нужно обязательно включить
Код:

BlockInput(1)
;тут твой код
BlockInput
(0)

и так застраховаться от нежелательного действия пользователя (кликнул случайно именно в этот момент user, и активировалось другое окно, а скрипт будет ждать, когда же будет активно именно указанное в скрипте окно.)
2).
Цитата:

Цитата seriych
Если переименовать инсталлятор аськи, то при установке выдает окошко с надписью Чтобы продолжить установку, нужно закрыть программу ICQ. Сделать это сейчас? »

Это не зависит от переменования инсталятора, можеш переменовывать как угодно тебе (не забыв в скрипте это указать), а окошко это может быть выдано только если найден запущенный процес icq. Поэтоу советую в начале установки, проверять наличие запущенного процесса icq, и если таковый найден, то завершить его, и дальше по коду.
3).
Цитата:

Цитата seriych
Вроде работает, но может что-то обычно не так делают? Если что- поправьте. »

У меня, если твой скрипт скомпелировать в 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 1272020

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


Время: 22:55.

Время: 22:55.
© OSzone.net 2001-