Что нового

[Автоматизация] Установка CCleaner 4.03 средствами AutoIT

Kolunt

Новичок
Сообщения
13
Репутация
0
Предпредисловие:

Начал интересоваться AutoIT`шничеством около недели назад, для теста выбрал пару стандартных программ, которые мы устанавливаем на работе. Одна из них - CCleaner v.4.03.
Почитав слегка мануалы, пришёл к выводу, что стоит начать с Send, чтобы по крайней мере получить некое представление о данной среде.
Ну и оператор Sleep("100"), так как меня просто радует анимация того, как программа устанавливается сама :D

Но вот с CCleaner началась проблема. Скачать можно здесь: http://www.piriform.com/ccleaner/download/standard

В какой-то момент в установке он предлагает установить Chrome и Toolbar. И там команда Send('[Tab}') не работает. Мечется между "Назад" и "Установить"

B4h1T4B37y.jpg


Тут я понял, что галочки надо снимать с помощью команды ControlClick по координатам.

ControlClick ( "title", "text", controlID [, button [, clicks [, x [, y]]]] )

AutoIT Info показал вот это:

[info]
>>>> Window <<<<
Title: Установка CCleaner v4.03
Class: #32770
Position: 358, 210
Size: 503, 389
Style: 0x94CA084C
ExStyle: 0x00010100
Handle: 0x000A0268
>>>> Control <<<<
Class: Internet Explorer_Server
Instance: 1
ClassnameNN: Internet Explorer_Server1
Name:
Advanced (Class): [CLASS:Internet Explorer_Server; INSTANCE:1]
ID:
Text:
Position: 23, 73
Size: 450, 228
ControlClick Coords: 30, 165
Style: 0x56000000
ExStyle: 0x00000000
Handle: 0x000602A2
>>>> Mouse <<<<
Position: 414, 473
Cursor ID: 0
Color: 0xFFFFFF
>>>> StatusBar <<<<
>>>> ToolsBar <<<<
>>>> Visible Text <<<<
< &Назад
&Установить
www.piriform.com
www.piriform.com
Дополнительные параметры

>>>> Hidden Text <<<<
Отмена
Параметры установки
Дополнительно
[/info]


Ввиду того, что AutoIT Info распознаёт данный элемент как единый, не отличая чекбоксов, button прописать не смог. А ControlID просто не нашёл в Info. В итоге получился вот такой "урезок" :smile:

Код:
ControlClick('Уcтановка CCleaner v4.03' [, clicks [, 30 [, 165]]])


При запуске скрипта установка доходит до момента, когда нужно убрать чекбоксы Google курсор устанавливает в центр окна и через несколько секунд выдаётся ошибка:

Line 44 (File "c:\Users\AutoIT\Desktop\AutoIT\CCleaner.exe"):

Error: Error parsing function call.


Вот полный код:

Код:
;Установка CCleaner v4.03 средствами AutoIT
Run('C:\Users\AutoIT\Downloads\ccsetup403.exe')
WinWaitActive ('CCleaner v4.03 Setup', "Welcome to the CCleaner v4.03 Setup")
Sleep('3000')
Send("{Tab}")
Sleep("100")
Send("{Tab}")
Sleep("100")
Send("{Tab}")
Sleep("100")
Send("{Р}")
Sleep("500")
Send("{Enter}")
WinWaitActive ('Установка CCleaner v4.03', "Вас приветствует мастер установки CCleaner v4.03")
Sleep("100")
Send('{Enter}')
WinWaitActive("Установка CCleaner v4.03", "Параметры установки")
Sleep("1000")
Send("{Tab}")
Sleep("100")
Send("{Tab}")
Sleep("100")
Send("{Space}")
Sleep("100")
Send("{Down}")
Sleep("100")
Send("{Down}")
Sleep("100")
Send("{Space}")
Sleep("100")
Send("{Down}")
Sleep("100")
Send("{Space}")
Sleep("100")
Send("{Down}")
Sleep("100")
Send("{Space}")
Sleep("100")
Send("{Tab}")
Sleep("100")
Send("{Tab}")
Sleep("1000")
Send("{Enter}")
Sleep("3000")
ControlClick('Уcтановка CCleaner v4.03' [, clicks [, 131 [, 167]]])
Exit



Как видно, в 44 строке ничего особенного нет.

Был бы признателен за любую помощь :IL_AutoIt_1:
 

SyDr

Сидра
Сообщения
651
Репутация
158
Эм... Ничего особенного? Во первых, вместо clicks должно стоять конкретное число, а во вторых квадратные скобки не нужны при вызове функции.
Код:
ControlClick('Уcтановка CCleaner v4.03', 1, 131, 167)
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Kolunt [?]
Был бы признателен за любую помощь
Код:
#RequireAdmin
Opt("MouseCoordMode", 2)

Run("C:\Users\AutoIT\Downloads\ccsetup403.exe")
WinWaitActive("CCleaner", "Welcome")
ControlClick("CCleaner", "", "Button2")
WinWaitActive("CCleaner", "Install Options")
ControlClick("CCleaner", "", "Button5")
;~ ControlClick("CCleaner", "", "Button6")
ControlClick("CCleaner", "", "Button7")
ControlClick("CCleaner", "", "Button8")
ControlClick("CCleaner", "", "Button9")
If ControlGetText("CCleaner", "", "Button2") = "&Next >" Then
  ControlClick("CCleaner", "", "Button2")
  WinWaitActive("CCleaner", "&Install")
  MouseClick("primary", 54, 240, 1, 0)
  MouseClick("primary", 54, 260, 1, 0)
  ControlClick("CCleaner", "", "Button2")
Else
  ControlClick("CCleaner", "", "Button2")
EndIf
WinWaitActive("CCleaner", "Completing")
ControlClick("CCleaner", "", "Button5")
ControlClick("CCleaner", "", "Button6")
ControlClick("CCleaner", "", "Button2")
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
если цель тренировка, то можно
а если нужна тихая установка, то для этой программы есть ключ установки
Код:
ccsetup403.exe /S
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
joiner [?]
если нужна тихая установка, то для этой программы есть ключ установки
Использование данного ключа означает согласие с опциями по умолчанию. В итоге пользователь получит и Google Chrome и Панель. На сколько я понял, как раз этого и требуется избежать. К тому же, судя по коду Kolunt, при установке должны быть отключены некоторые опции. Поэтому тихая установка, я думаю, не подходит.
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
InnI
таких опций вообще нет в установке.
на скринах видно, что при установке программы только два окна. и ничего из вышеописанного нет
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
joiner [?]
таких опций вообще нет в установке
При отказе от установки браузера и панели данные действия сохраняются в реестре
Код:
[HKEY_LOCAL_MACHINE\SOFTWARE\Google\No Toolbar Offer Until]
"Piriform Ltd"=dword:01335055
[HKEY_LOCAL_MACHINE\SOFTWARE\Google\No Chrome Offer Until]
"Piriform Ltd"=dword:01335055
и при следующей (пере)установке не отображаются. После удаления данных ключей появится дополнительная вкладка.
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
в таком случае. перед установкой внести запись в реестр и применить ключ тихой установки. это надежнее чем кликальщик.
можно распаковать программу установки через 7zip . вытащить нужные файлы и сделать самому инсталятор
 
Автор
K

Kolunt

Новичок
Сообщения
13
Репутация
0
SyDr, спасибо за мини ликбез по ControlClick, но просто 44-ая строка это последний Send('{Enter') :smile:

InnI, большое спасибо за данный скриптик, сейчас буду сидеть и разбирать его по частям.. Чтобы понять принцип действия :smile:

joiner, пока что именно тренировка, но спасибо за инфу, буду знать :whistle:


Добавлено:
Сообщение автоматически объединено:

joiner, у меня на основной машине уже установлен Chrome и тоже данное окошко не предлагается. А вот на чистой виртуалке (там, где нет Chrome) предлагается.
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
Kolunt
я уже писал выше, что можно перед установкой сделать запись в реестр.
или перепаковать программу.
 
Автор
K

Kolunt

Новичок
Сообщения
13
Репутация
0
Joiner, в общем да. По логике можно избежать данного рекламного предложения, занеся в реестр соответствующую запись. Но решение Inni мне показалось более элегантным :smile:

Код:
If ControlGetText("CCleaner", "", "Button2") = "&Next >" Then
  ControlClick("CCleaner", "", "Button2")
  WinWaitActive("CCleaner", "&Install")
  MouseClick("primary", 54, 240, 1, 0)
  MouseClick("primary", 54, 260, 1, 0)
  ControlClick("CCleaner", "", "Button2")
Else
  ControlClick("CCleaner", "", "Button2")
EndIf


Inni, если не затруднит, объясни пожалуйста несколько моментов:

1. Вот в этом моменте
Код:
MouseClick("primary", 54, 240, 1, 0)

primary - означает, что в зависимости от настроек пользователя клик будет левой или правой кнопкой, верно?
54, 240 - Где ты взял эти координаты?:smile: Облазял всё AutoIT Info, но не нашёл даже приблизительно похожих цифр :smile:
1 - видимо означает один клик
0 - Скорость перемещения курсора (максимальная)

2.
Код:
Opt("MouseCoordMode", 2)


FAQ прочитал, но можно своими словами: какие координаты он берёт? Самой программы?
 

atlake

Новичок
Сообщения
40
Репутация
0
OffTopic:
InnI [?]
данные действия сохраняются в реестре
Какой программой пользовались для определения что и куда записывает/читает программа установки?
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
Kolunt [?]
мне показалось более элегантным
если не забросишь программирование, то через время поймешь, что все как раз наоборот и по элегантности и по точности и по эффективности :smile:
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Kolunt [?]
primary - означает, что в зависимости от настроек пользователя клик будет левой или правой кнопкой, верно?
Верно.
54, 240 - Где ты взял эти координаты?
На вкладке Mouse. Но сначала нужно переключить режим отсчёта координат "Options - Coord Mode - Client".
1 - видимо означает один клик
0 - Скорость перемещения курсора (максимальная)
Верно.
какие координаты он берёт?
Координаты относительно клиентской области активного окна.

OffTopic:
atlake [?]
Какой программой пользовались для определения что и куда записывает/читает программа установки?
Редактором реестра. Искал "piriform" - нашёл google :smile:
 
Автор
K

Kolunt

Новичок
Сообщения
13
Репутация
0
joiner, не исключаю этого :smile: Спасибо за ответы :smile:

Inni, спасибо за ликбез, не успел ещё разобраться с координатами, но в ближайшее время займусь этим :laugh:
 
Верх