Что нового

[Автоматизация] Скрипт установки\настройки 7zip

CrazyDoc

Новичок
Сообщения
75
Репутация
2
AutoIt: 3.
Категория: Автоматизация

Описание: Пожалуйста посмотрите\оцените скрипт (не считая "привет мир" и т.д. - этот первый написанный мной), подскажите - возможно какие-либо строки можно заменить для улучшения работы?(лично меня смущают ожидания перед нажатием очередных кнопок и собственно сам способ вызова окна настроек)

Код/Пример:
Код:
;установка 7zip
Run('\Soft_for_WS\7Zip\7z442.exe')																;запуск файла установки с флэш карты(в корне лежит скомпилированый скрипт)
WinWaitActive('7-Zip 4.42 Setup ')												;ожидание открытия окна установки
Send('!I')																		;нажатие клавиши Install
WinWaitActive('7-Zip 4.42 Setup ','Click Finish to close this wizard.')			;ожидание открытия окна говорящего об окончании установки
send('!F')																		;нажатие клавиши Finish
Run('C:\Program Files\7-Zip\7zFM.exe')											;открытие 7zip
WinWaitActive('7-Zip File Manager','Выделено объектов: 1')						;ожидание открытия окна 7zip
Send('{ALT}')																	;нажатие клавиши Alt
$i = 0
Do																				;нажатие клавиши вправо четыре раза
    Send('{RIGHT}')
    $i = $i + 1
 Until $i = 4
Send('{DOWN}')																	;нажатие клавиши вниз
Sleep (600)																		;ожидание в течении 600мс
Send('{ENTER}')																	;нажатие клавиши Enter
Sleep (600)
WinWaitActive('Настройки','Ассоциировать 7-Zip с файлами:')						;ожидание открытия окна "Настройки"
Sleep (600)
ControlClick('Настройки','Выделить в&се','[CLASS:Button; INSTANCE:1]')			;нажатие клавиши "Выделить все"
Sleep (600)
ControlClick('Настройки','При&менить','[CLASS:Button; INSTANCE:4]')				;нажатие клавиши "Применить"
Sleep (600)
ControlClick('Настройки','ОК','[CLASS:Button; INSTANCE:2]')						;нажатие клавиши "Ок" - т.е. закрытия окна "Настройки"
Sleep (600)
WinClose('7-Zip File Manager','')												;закрытие окна ?zip
FileCreateShortcut('C:\Program Files\7-Zip\7zFM.exe', @DesktopDir & "\7zip")	;создания ярлыка для 7zFM с именем 7zip по адресу рабочего стола пользователя



Вложение включает в себя последнюю версию скрипта(после всех исправлений предложенных в теме):
 

Вложения

  • 1,1 КБ Просмотры: 19

InnI

AutoIT Гуру
Сообщения
4 158
Репутация
1 100
Re: [Автоматизация] Скрипт установки\настройки 7zip, помогите сделать лучше

CrazyDoc [url_ex=javascript:qq.OpenLink('http://autoit-script.ru/index.php?topic=18260.msg110540#msg110540')][?][/url_ex]
какие-либо строки можно заменить
Функции Send() лучше заменить на ControlClick() или использовать режим "тихой" установки
Код:
RunWait('\Soft_for_WS\7Zip\7z442.exe /S')


способ вызова окна настроек
Код:
WinMenuSelectItem('7-Zip File Manager','Выделено объектов: 1', 'С&ервис', 'Настройки...')


Ну и ожидание 600 мс между кликами - явный перебор. Думаю, можно вообще без ожидания обойтись. Или уменьшить до 30.
 
АТ
C

CrazyDoc

Новичок
Сообщения
75
Репутация
2
Re: [Автоматизация] Скрипт установки\настройки 7zip, помогите сделать лучше

вот что получилось:
Код:
;установка 7zip
Run('\Soft_for_WS\7Zip\7z442.exe')												;запуск файла установки с флэш карты
WinWaitActive('7-Zip 4.42 Setup ')												;ожидание открытия окна установки
ControlClick('7-Zip 4.42 Setup ','&Install','[CLASS:Button; INSTANCE:2]')		;нажатие клавиши Install
WinWaitActive('7-Zip 4.42 Setup ','Click Finish to close this wizard.')			;ожидание открытия окна говорящего об окончании установки
ControlClick('7-Zip 4.42 Setup ','&Finish','[CLASS:Button; INSTANCE:2]')		;нажатие клавиши Finish
Run('C:\Program Files\7-Zip\7zFM.exe')											;открытие 7zip
WinWaitActive('7-Zip File Manager','Выделено объектов: 1')						;ожидание открытия окна 7zip
WinMenuSelectItem('7-Zip File Manager','','С&ервис','Настройки...')				;выбор меню "Сервис -> Настройки"
WinWaitActive('Настройки','Ассоциировать 7-Zip с файлами:')						;ожидание открытия окна "Настройки"
ControlClick('Настройки','Выделить в&се','[CLASS:Button; INSTANCE:1]')			;нажатие клавиши "Выделить все"
ControlClick('Настройки','При&менить','[CLASS:Button; INSTANCE:4]')				;нажатие клавиши "Применить"
ControlClick('Настройки','ОК','[CLASS:Button; INSTANCE:2]')						;нажатие клавиши "Ок" - т.е. закрытия окна "Настройки"
WinClose('7-Zip File Manager','')												;закрытие окна 7zip
FileCreateShortcut('C:\Program Files\7-Zip\7zFM.exe', @DesktopDir & "\7zip")	;создания ярлыка для 7zFM с именем 7zip по адресу рабочего стола пользователя
и еще вопросы по совету использовать RunWait: 1) ключ /S - для чего он? к сожалению не смог понять(и в описании функции не нашел) 2)RunWait('\Soft_for_WS\7Zip\7z442.exe) - запустит установку 7zip, но далее ничего ведь не произойдет - программа сама никуда не денется, а скрипт будет ее ждать... Пробовал заменить Run('\Soft_for_WS\7Zip\7z442.exe') на RunWait('\Soft_for_WS\7Zip\7z442.exe /S') но ничего не заработало.
 

InnI

AutoIT Гуру
Сообщения
4 158
Репутация
1 100
Re: [Автоматизация] Скрипт установки\настройки 7zip, помогите сделать лучше

CrazyDoc [url_ex=javascript:qq.OpenLink('http://autoit-script.ru/index.php?topic=18260.msg110547#msg110547')][?][/url_ex]
ключ /S - для чего он?
Данный ключ используется установщиком 7zip для "тихой" установки: интерфейсные окна не выводятся, настройки используются по умолчанию.

но ничего не заработало
Оно заработало, просто вы ничего не увидели ;) Это и есть "тихая" установка.
 
АТ
C

CrazyDoc

Новичок
Сообщения
75
Репутация
2
Re: [Автоматизация] Скрипт установки\настройки 7zip, помогите сделать лучше

InnI сказал(а):
Данный ключ используется установщиком 7zip для "тихой" установки: интерфейсные окна не выводятся, настройки используются по умолчанию.
С учетом этого поправил:
Код:
RunWait('\Soft_for_WS\7Zip\7z442.exe /S')										;запуск и ожидание завершения установки 7zip( ключ /S - установка в "тихом" режиме(интерфейсные окна не выводятся, настройки используются по умолчанию))
Run('C:\Program Files\7-Zip\7zFM.exe')											;открытие 7zip
WinWaitActive('7-Zip File Manager','Выделено объектов: 1')						;ожидание открытия окна 7zip
WinMenuSelectItem('7-Zip File Manager','','С&ервис','Настройки...')				;выбор меню "Сервис -> Настройки"
WinWaitActive('Настройки','Ассоциировать 7-Zip с файлами:')						;ожидание открытия окна "Настройки"
ControlClick('Настройки','Выделить в&се','[CLASS:Button; INSTANCE:1]')			;нажатие клавиши "Выделить все"
ControlClick('Настройки','При&менить','[CLASS:Button; INSTANCE:4]')				;нажатие клавиши "Применить"
ControlClick('Настройки','ОК','[CLASS:Button; INSTANCE:2]')						;нажатие клавиши "Ок" - т.е. закрытия окна "Настройки"
WinClose('7-Zip File Manager','')												;закрытие окна 7zip
FileCreateShortcut('C:\Program Files\7-Zip\7zFM.exe', @DesktopDir & "\7zip")	;создания ярлыка для 7zFM с именем 7zip по адресу рабочего стола пользователя
данный ключ верен только для 7zip? и если да, то где можно посмотреть подобные ключи для других программ?
убрал все задержки - может ли это повлиять на выполнение если, к примеру, компьютер старый и будет подвисать?
Большое спасибо за советы!
 

InnI

AutoIT Гуру
Сообщения
4 158
Репутация
1 100
Re: [Автоматизация] Скрипт установки\настройки 7zip, помогите сделать лучше

CrazyDoc [url_ex=javascript:qq.OpenLink('http://autoit-script.ru/index.php?topic=18260.msg110553#msg110553')][?][/url_ex]
ключ верен только для 7zip?
7zip - это программа-архиватор. Для его установки используется программа-установщик (инсталлятор). Установщики бывают разные, но большинство из них используют параметры командной строки для управления процессом установки. 7zip использует установщик NSIS.

где можно посмотреть подобные ключи
http://www.oszone.net/2766
http://checkdevice.narod.ru/index/cmdinst/0-27

может ли это повлиять на выполнение
Теоритически, конечно, может. Практически... компьютер должен ОЧЕНЬ сильно "подвисать".

И совершенно нет необходимости перед "ОК" нажимать "Применить". Эта строка лишняя:
Код:
ControlClick('Настройки','При&менить','[CLASS:Button; INSTANCE:4]')
 
АТ
C

CrazyDoc

Новичок
Сообщения
75
Репутация
2
Re: [Автоматизация] Скрипт установки\настройки 7zip, помогите сделать лучше

InnI сказал(а):
И совершенно нет необходимости перед "ОК" нажимать "Применить". Эта строка лишняя:
Код:
ControlClick('Настройки','При&менить','[CLASS:Button; INSTANCE:4]')
действительно нет - проверил, запоминает и без нее=)
остался только один вопрос - возможна ли интеграция для систем хр и 7, 32 и 64. т.е. есть ли отличия между установками в этих системах и если да то подскажите пожалуйста в каком направлении искать эту информацию.
 

InnI

AutoIT Гуру
Сообщения
4 158
Репутация
1 100
Re: [Автоматизация] Скрипт установки\настройки 7zip, помогите сделать лучше

CrazyDoc [url_ex=javascript:qq.OpenLink('http://autoit-script.ru/index.php?topic=18260.msg110556#msg110556')][?][/url_ex]
для систем хр и 7
На системах выше WinXP по умолчанию включён UAC (контроль учётных записей). В этом случае для установки потребуются права администратора. Проблема решается добавлением в начало скрипта
Код:
#RequireAdmin


Данный скрипт будет работать и на Win x64. Только установит он программу в "Program Files (x86)". Поэтому в функциях запуска и создания ярлыка лучше использовать макрос
Код:
@ProgramFilesDir
 
АТ
C

CrazyDoc

Новичок
Сообщения
75
Репутация
2
Re: [Автоматизация] Скрипт установки\настройки 7zip, помогите сделать лучше

исправленная версия:
Код:
#RequireAdmin																	;запрос прав администратора
RunWait('\Soft_for_WS\7Zip\7z442.exe /S')										;запуск и ожидание завершения установки 7zip( ключ /S - установка в "тихом" режиме(параметры установки стандартные, окно установки скрыто))
Run(@ProgramFilesDir & '\7-Zip\7zFM.exe')										;открытие 7zip
WinWaitActive('7-Zip File Manager','Выделено объектов: 1')						;ожидание открытия окна 7zip
WinMenuSelectItem('7-Zip File Manager','','С&ервис','Настройки...')				;выбор меню "Сервис -> Настройки"
WinWaitActive('Настройки','Ассоциировать 7-Zip с файлами:')						;ожидание открытия окна "Настройки"
ControlClick('Настройки','Выделить в&се','[CLASS:Button; INSTANCE:1]')			;нажатие клавиши "Выделить все"
ControlClick('Настройки','ОК','[CLASS:Button; INSTANCE:2]')						;нажатие клавиши "Ок" - т.е. закрытия окна "Настройки" и применения внесенных изменений
WinClose('7-Zip File Manager','')												;закрытие окна 7zip
FileCreateShortcut(@ProgramFilesDir & '\7-Zip\7zFM.exe', 'C:\Documents and Settings\All Users\Рабочий стол\7zip')	;создания ярлыка для 7zFM с именем 7zip на рабочем столе(для всех пользователей)

внесен запрос прав администратора при старте, путь к папке программы изменен(теперь с применением макроса), ярлык на рабочем столе создается для всех пользователей, удалена лишняя строка(нажатие кнопки 'применить')

Кажется все. Еще раз спасибо за помощь, отдельная благодарность за информативные ссылки=)
 

InnI

AutoIT Гуру
Сообщения
4 158
Репутация
1 100
CrazyDoc [url_ex=javascript:qq.OpenLink('http://autoit-script.ru/index.php?topic=18260.msg110738#msg110738')][?][/url_ex]
ярлык на рабочем столе создается для всех пользователей
На Win7 путь к общему рабочему столу "C:\Users\Public\Desktop". Используйте макрос
Код:
@DesktopCommonDir
 
АТ
C

CrazyDoc

Новичок
Сообщения
75
Репутация
2
исправлено:
Код:
#RequireAdmin																			;запрос прав администратора при старте скрипта
RunWait('\Soft_for_WS\7Zip\7z442.exe /S')												;запуск и ожидание завершения установки 7zip( ключ /S - установка в "тихом" режиме(параметры установки стандартные, окно установки скрыто))
Run(@ProgramFilesDir & '\7-Zip\7zFM.exe')												;открытие 7zip
WinWaitActive('7-Zip File Manager','Выделено объектов: 1')								;ожидание открытия окна 7zip
WinMenuSelectItem('7-Zip File Manager','','С&ервис','Настройки...')						;выбор меню "Сервис -> Настройки"
WinWaitActive('Настройки','Ассоциировать 7-Zip с файлами:')								;ожидание открытия окна "Настройки"
ControlClick('Настройки','Выделить в&се','[CLASS:Button; INSTANCE:1]')					;нажатие клавиши "Выделить все"
ControlClick('Настройки','ОК','[CLASS:Button; INSTANCE:2]')								;нажатие клавиши "Ок" - т.е. закрытия окна "Настройки" и применения внесенных изменений
WinClose('7-Zip File Manager','')														;закрытие окна 7zip
FileCreateShortcut(@ProgramFilesDir & '\7-Zip\7zFM.exe', @DesktopCommonDir & '\7zip')	;создания ярлыка для 7zFM с именем 7zip на рабочем столе(для всех пользователей)
 

gora

Новичок
Сообщения
315
Репутация
19
CrazyDoc
У Вас очень старая версия архиватора, в последних версиях установка ассоциаций происходит несколько иначе и скрипт нужно будет корректировать. Для установки х64 версии архиватора придется использовать msi установщик, ибо NSIS версии х64 архиватора не существует. Там другие ключи тихой установки.
 
АТ
C

CrazyDoc

Новичок
Сообщения
75
Репутация
2
версию установщика для 32-х разрядных ОС заменил(изменены имя вызываемого инсталлятора и строка WinWaitActive(убрана строка содержащая текст, остался только заголовок окна)) -
Код:
#RequireAdmin																			;запрос прав администратора при старте скрипта
RunWait('\Soft_for_WS\7Zip\7z920.exe /S')												;запуск и ожидание завершения установки 7zip( ключ /S - установка в "тихом" режиме(параметры установки стандартные, окно установки скрыто))
Run(@ProgramFilesDir & '\7-Zip\7zFM.exe')												;открытие 7zip
WinWaitActive('7-Zip File Manager')														;ожидание открытия окна 7zip
WinMenuSelectItem('7-Zip File Manager','','С&ервис','Настройки...')						;выбор меню "Сервис -> Настройки"
WinWaitActive('Настройки','Ассоциировать 7-Zip с файлами:')								;ожидание открытия окна "Настройки"
ControlClick('Настройки','Выделить в&се','[CLASS:Button; INSTANCE:1]')					;нажатие клавиши "Выделить все"
ControlClick('Настройки','ОК','[CLASS:Button; INSTANCE:2]')								;нажатие клавиши "Ок" - т.е. закрытия окна "Настройки" и применения внесенных изменений
WinClose('7-Zip File Manager','')														;закрытие окна 7zip
FileCreateShortcut(@ProgramFilesDir & '\7-Zip\7zFM.exe', @DesktopCommonDir & '\7zip')	;создания ярлыка для 7zFM с именем 7zip на рабочем столе(для всех пользователей)

на данный момент ищу пути автоматического выбора инсталлятора для разноразрядных систем.
 

damien2008

Осваивающий
Сообщения
157
Репутация
30
моя версия. может кому пригодится :smile:

Код:
#cs ------------------------------------------------------------------------
	Версия AutoIt:  3.3.14.1
	Автор:          myName
	Описание:       автоустановка 7z
#ce ------------------------------------------------------------------------

; Код программы

#NoTrayIcon
#include <Array.au3>
#include <File.au3>
#include <SendMessage.au3>
#include <WindowsConstants.au3>
#include <FileOperations.au3>

Opt('WinTitleMatchMode', 2)

Local $Disk = StringLeft(@WindowsDir, 3)

Switch @OSArch
	Case 'X86'
		ShellExecuteWait(@ScriptDir & '\7z920.exe', '/S', '', '', @SW_HIDE)
	Case 'X64'
		ShellExecuteWait('msiexec.exe', '/i 7z920-x64.msi /qn', '', '', @SW_HIDE)
EndSwitch

$FileList = _FO_FileSearch($Disk, '7zFM.exe', True, 125, 1, 1)

If IsArray($FileList) Then
	ShellExecute($FileList[1]);, '', '', '', @SW_HIDE)
	Local $7zWin = '[Class:FM]', $7zTxt = ''
	WinWait($7zWin, $7zTxt)
	WinActivate($7zWin, $7zTxt)
	WinMenuSelectItem($7zWin, $7zTxt, 'С&ервис', 'Настройки') ;до 6 вложений меню
	Sleep(250)
	ControlClick('Настройки', '', '[CLASS:Button; INSTANCE:1]')
	Sleep(250)
	ControlClick('Настройки', '', '[CLASS:Button; INSTANCE:2]')
	Sleep(250)
	WinClose($7zWin, $7zTxt)
EndIf

FileCreateShortcut($FileList[1], @DesktopDir & '\7z.lnk')
 
Сообщения
7
Репутация
-1
РЕШЕНО Автоматизация Скрипт установкинастройки 7zip

когда выбираешь ключ установки так там несколько вариантов тихой установки под разные инсталяторы. Не правильно перед этим выразился.
 
Верх