[Архив - Часть 1.1] AutoIt скрипты

Ответить
Аватара пользователя
EgOrus

[Архив - Часть 1.1] AutoIt скрипты

Сообщение EgOrus »

Внимание!

Тема переведена в архивное состояние






Архивы старых тем по AutoIt
или они же в
7z архиве (версии для печати) - 846 кб


(настоятельно рекомендуется к прочтению/поиску)





Руководство к действию по работе c AutoIt.

Ну во превых, к моему удивлению, утилита (и компонента activeX) уже успела обновиться до версии 3.1.0 (7 фев 2005) и заполучить множество дополнительных функций (появилась возможность создавать граф. интерфейс к своим скриптам Изображение. К сожалению русскоязычной справки пока нет.

Скачать можно
здесь




Почему лишь руководство? Потомучто к программе прилагается обширная справка с описанием самой программы и команд, в т.ч. и на русском языке. Основные команды используемые в нашем случае в новой версии не поменялись. Я рассмотрю лишь самые азы, кот. необходимы для создания самого простого скрипта, в принципе этого достаточно для установки практически любой программы, просто знание дополнительных команд позволят сделать скрипт более компактным и красивым.



На сегоднящний день имеется 2 распространненых способа по автоматизации установки

1. Использование утилиты AutoIt и файлов скриптов au3, кот. в последствии можно компилировать в исполнимые файлы exe, не требующие утилиты AutoIt.exe

2. Использование VBS и JS скриптов, этот способ можно расширить за счет использования activeX компоненты - autoitX (к слову сказать - я пользуюсь именно этим методом).



Для примера создадим скрипт по установки Alcohol120%. Самое неприятное в его установки это окно с подтверждением установки SCSI драйвера. Это мы и поправим.


Цитата Скрипт alc120.au3:



'Блокировка клавы и мышки

BlockInput(1)



'Ожидание окна установки SCSI адаптера

WinWait ("Мастер нового оборудования","", 0)



'Пауза на 500 мс на всякий случай, для слабых машин, чтобы окно успело обновиться

Sleep(500)



'Послать в активное окно нажатие клавиши ENTER

send("{ENTER}")



WinWait ("Мастер нового оборудования","Для закрытия мастера", 0)



Sleep(1000)



'Послать в указанное окно ControlClick для кнопки с назв. класса Button9

ControlClick ("Мастер нового оборудования","Для закрытия мастера", "Button9")



'Снятие блокировка клавы и мышки

BlockInput(0)



Скрипт и утилита autoit3.exe будет лежать рядом с дистром, и будет запускаться перед запуском дистрибутива.

Создадим файл с названием alc120.au3 в win1251 кодировке

Теперь нужно заблокировать клавиатуру и мышь чтобы наглый пользователь не нажал что-нибудь или не сменил случайно фокус с активного окна во время работы скрипта.



'Блокировка клавы и мышки (многие команды предназначены для посыла в активное окно)

BlockInput(1)



Скрипт запустился и теперь ожидает запуска инсталяра и появление сигнального окна, кот. сообщит скрипту что программа запущена и можно продолжать выполнение скрипта. Для того чтобы узнать название окна нужно использовать спец. утилитку AU3Info.exe, кот. входит в комплект дистрибутива autoit. Запускаем ее, после чего запускаем дистрибутив Alcohol120% и доходим до того места где вылазит окно Мастер нового оборудования с вопросом об установке SCSI адаптера. Активируем его кликнув по заголовку мышкой и жмем CTRL+ALT+F, в результате в окне AU3Info информация о текущем окне зафиксируется:


Цитата:



>>>>>>>>>>>> Window Details
Аватара пользователя
D@nil

Re: [Архив - Часть 1.1] AutoIt скрипты

Сообщение D@nil »

Статья Клас Изображение

Только я непонял чем лучше autoitX
Аватара пользователя
godoo

Re: [Архив - Часть 1.1] AutoIt скрипты

Сообщение godoo »

Madcap, спасибо за совет, но это я пробовал и хелп прочитал...

Вся проблема в том, при такой замене пути установки:

WinWaitActive ( '', 'Выбор директории установки...' )

ControlSetText ( '', 'Выбор директории установки...', 'Edit2', '@ProgramFilesDir\Software\' )

вылезает окно:

Директория @ProgramFilesDir\Software не может быть создана. Укажите другой путь.



Работает только с полным заданием пути.Изображение
Аватара пользователя
ched3n

Re: [Архив - Часть 1.1] AutoIt скрипты

Сообщение ched3n »

могет совместно над чем нить поработаем

хотя .... о чем это я
Аватара пользователя
bogomolv

Re: [Архив - Часть 1.1] AutoIt скрипты

Сообщение bogomolv »

Продолжим разговор об интересных функциях?



Очень понравилась функция StringSplit. Особенно одно ее практическое применение, которое подсмотрел в предлагаемом для include файле File.au3. Теперь одной строчкой считываю содержимое текстового файла в массив $list=StringSplit(FileRead($f,FileGetSize($f)),@CRLF) и делаю с ним, что хочу!



В частности, функция очень пригодилась для считывания структуры каталогов драйверов OEM-установки Windows (папка $oem$\$1\drivers). Раньше приходилось следить и жестко прописывать все пути к драйверам для их автоустановки на стадии CMDLINES (CMDLINES.TXT у меня запускает CMDLINES.AU3, в котором расписан сценарий установки дров и инициализации настроек системы).

Теперь в CMDLINES.AU3 вместо многостраничного перечня действий со всеми своими и чужими драйверами (с которыми когда-либо встречался и могу встретиться еще) у меня стоит красивая конструкция:



Код:

Код: Выделить всё

;Установка драйверов устройств
$f=	 '%temp%\1.txt'
RunWait ('%Comspec% /c dir /ad /s "c:\drivers" | find "c:\drivers\" > $f$','',0)
$dr= StringSplit(StringReplace(FileRead($f,FileGetSize($f)),' ‘®¤Ґа¦Ё¬®Ґ Ї ЇЄЁ ',''),@CRLF)
For $i=1 To $dr[0]
$drr=	$dr[$i]
$srch= FileFindFirstFile('$drr$\*_1.au3') 
If $srch=0 Then RunWait('AutoIt3.exe "$drr$\'&FileFindNextFile($srch)&'"')
FileClose($srch)
Next

Данной процедурой считывается дерево каталога "c:\drivers" (куда копируются в процессе установки драйвера из $oem$\$1\drivers) и проверяется наличие скриптов с именем *_1.au3 с последующим их запуском. Файлы скриптов *_1.au3 - это мои автоустановщики дров и их настроек, которые я теперь храню вместе с дровами (а не в CMDLINES.AU3, как раньше). Не все дрова требуют наличия таких установщиков. И прекрасно! FileFindNextFile() не найдет *_1.au3 и перейдет к следующему каталогу. Есть и такие дрова, которые вообще не любят ставиться в процессе установки Windows (например, IAAraid). Обзываем скрипт их установки *_2.au3 и включаем те же девять строк в начало STARTUP.AU3, который стартует из Автозапуска при первом запуске свежеустановленной Windows (в этом файле у меня расписан сценарий автустановки программного обеспечения).

Теперь подготовка дистрибутива для установки системы на чужой машине сводится к простому копированию из архива заготовок драйверов для $oem$\$1\drivers и небольшой правке unattended.txt. Счастливому же владельцу машины достается комплект автопереустановки системы, похожий на те, что идут с ноутбуками…
Аватара пользователя
SlavaS

Re: [Архив - Часть 1.1] AutoIt скрипты

Сообщение SlavaS »

У меня установка и регистрация проходит нормально, я не могу от мастера нового оборудования избавиться Изображение
Аватара пользователя
EgOrus

Re: [Архив - Часть 1.1] AutoIt скрипты

Сообщение EgOrus »

biork

Правильно в примере, кот. предложил я, если ни одно из условий неверно, то продолжаем работу скрипта дальше. В твоем же как ты правильно сказал, если первое условие неправильно, то в любом случае ждем активное окно ("Заголовок окна", "текст2"), если оно по каким-то причинам не появляется, то придется прерывать скрипт вручную.

Приведи полный пример своего скрипта.
Аватара пользователя
biork

Re: [Архив - Часть 1.1] AutoIt скрипты

Сообщение biork »

Вот маленький скриптик. Работает.



Код:

Код: Выделить всё

Opt("TrayIconDebug",1)
if FileExists("C:\Windows\System32\drivers\ati2mtag.sys") Then
RunWait("Cpanel\Setup.exe /S")
Else
EndIf
Exit

а так - нет. Почему?



Код:

Код: Выделить всё

Opt("TrayIconDebug",1)
if FileExists("@SystemDir\drivers\ati2mtag.sys") Then
RunWait("Setup.exe /S", "@ScriptDir\Cpanel")
Else
EndIf
Exit
Ответить

Вернуться в «AutoIt»