Что нового

Installer - Инсталлятор софта (пример, с комментариями)

c-n1x

Новичок
Сообщения
26
Репутация
1
AutoIt: 3.3.6.1
Версия: 1.0
Категория: Автоматизация
Описание: Автоматизированная установка и настройка корпоративного ПО

[box title=Примечание]Выкладываю исходник инсталлятора софта.
В нем использованы различные методы установки. Надеюсь кому нибудь пригодиться.
Скрипт устанавливает как в обычном режиме, так и в тихом, так же используется ребут после установки и последующая настройка.
Антивирус тут устанавливается самым последним, после ребута, для того, что бы вдруг случайно не блокнул скрипт.
[/box]

Код: Пример
Код:
;Свойства файла
#Region
#AutoIt3Wrapper_Icon=CV.ico
#AutoIt3Wrapper_Res_Comment=Работает с серверами main и belochka
#AutoIt3Wrapper_Res_Description=Автоматизированная установка и настройка корпоративного ПО
#AutoIt3Wrapper_Res_Fileversion=1.0
#AutoIt3Wrapper_Res_LegalCopyright=©2011 C-n1x.
#AutoIt3Wrapper_Res_Language=1049 ; 1033 - Английский
#AutoIt3Wrapper_Res_Field=Компания|******
#AutoIt3Wrapper_Res_Field=Адрес|************
#AutoIt3Wrapper_Res_Field=email|[email protected]
#EndRegion

; Запускаем скрипт с админскими правами
#requireadmin

;указываем, что нужно использовать координаты окна программы, а не рабочего стола
Opt("MouseCoordMode", 2)
Opt("PixelCoordMode", 2)

;эти инклуды нужны для используемых нами функций
#include <GUIConstants.au3>
#include <file.au3>

;Графическая оболочка (Гуи)
$hGUI = GUICreate('Инсталлер', 200, 430)
$h_1 = GUICtrlCreateCheckbox('7zip', 10, 20, 190, 17)
$h_2 = GUICtrlCreateCheckbox('AcrobatReader_rus', 10, 40, 190, 17)
$h_3 = GUICtrlCreateCheckbox('FSImage', 10, 60, 190, 17)
$h_4 = GUICtrlCreateCheckbox('ICQ_Lite 6.5', 10, 80, 190, 17)
$h_5 = GUICtrlCreateCheckbox('Directum', 10, 100, 190, 17)
$h_6 = GUICtrlCreateCheckbox('1Cv8.1', 10, 120, 190, 17)
$h_7 = GUICtrlCreateCheckbox('SAP', 10, 140, 100, 17)
$h_8 = GUICtrlCreateCheckbox('MS Office2010 x 86', 10, 160, 190, 17)
$h_9 = GUICtrlCreateCheckbox('MS Office2010 x 64', 10, 180, 190, 17)
$h_10 = GUICtrlCreateCheckbox('TrueCrypt', 10, 200, 190, 17)
$h_11 = GUICtrlCreateCheckbox('Antivir Workstation x 86', 10, 220, 190, 17)
$h_12 = GUICtrlCreateCheckbox('Antivir Workstation x 64', 10, 240, 190, 17)
$h_13 = GUICtrlCreateCheckbox('Antivir Notebook x 86', 10, 260, 190, 17)
$h_14 = GUICtrlCreateCheckbox('Antivir Notebook x 64', 10, 280, 190, 17)
$h_15 = GUICtrlCreateCheckbox('PGP x 32', 10, 300, 190, 17)
$h_16 = GUICtrlCreateCheckbox('PGP x 64', 10, 320, 190, 17)
$h_17 = GUICtrlCreateCheckbox('Reboot', 10, 340, 190, 17)
$hLabel = GUICtrlCreateLabel('Выберите софт и нажмите СТАРТ!', 10, 380, 180, 17)
$hButtonGo = GUICtrlCreateButton('СТАРТ', 10, 400, 80, 25)
$hButtonQuit = GUICtrlCreateButton('ВЫХОД', 100, 400, 80, 25)
GUISetState()

;Проверка есть ли наш скрипт в авторане
If RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run", @ScriptName) Then
	MyFunc2()
Else
	Myfunc()
EndIf

;Установка программ
Func Myfunc()
	;Первый список программ, в которых требуется перезагрузка. Дальше запись в автозапуск

	While 1
		$msg = GUIGetMsg()
		Select
			Case $msg = $GUI_EVENT_CLOSE Or $msg = $hButtonQuit
				Exit
			Case $msg = $hButtonGo
				GUISetState(@SW_DISABLE)

				If GUICtrlRead($h_1) = $GUI_UNCHECKED And GUICtrlRead($h_2) = $GUI_UNCHECKED And GUICtrlRead($h_3) = $GUI_UNCHECKED And GUICtrlRead($h_4) = $GUI_UNCHECKED And GUICtrlRead($h_5) = $GUI_UNCHECKED And GUICtrlRead($h_6) = $GUI_UNCHECKED And GUICtrlRead($h_7) = $GUI_UNCHECKED = $GUI_UNCHECKED And GUICtrlRead($h_8) = $GUI_UNCHECKED And GUICtrlRead($h_9) = $GUI_UNCHECKED And GUICtrlRead($h_10) = $GUI_UNCHECKED And GUICtrlRead($h_11) = $GUI_UNCHECKED And GUICtrlRead($h_12) = $GUI_UNCHECKED And GUICtrlRead($h_13) = $GUI_UNCHECKED And GUICtrlRead($h_14) = $GUI_UNCHECKED And GUICtrlRead($h_15) = $GUI_UNCHECKED And GUICtrlRead($h_16) = $GUI_UNCHECKED Then
					MsgBox(0, 'Error', 'Ни одного пункта не выбрано!')
				Else
					If GUICtrlRead($h_1) = $GUI_CHECKED Then
						GUICtrlSetData($hLabel, 'Устанавливаем 7zip')
						; устанавливаем 7zip
						Run("\\main\Inst_\7-Zip\7z920.exe")
						WinWaitActive("7-Zip 9.20 Setup", "Choose Install Location")
						MouseClick("left", 365, 339)
						WinWaitActive("7-Zip 9.20 Setup", "Completing the 7-Zip 9.20 Setup Wizard")
						send("{ENTER}")
						Run(@ProgramFilesDir & "\7-Zip\7zFM.exe")
						WinWaitActive("7-Zip File Manager")
						send("!е")
						send("{ENTER}")
						MouseClick("left", 81, 356)
						MouseClick("left", 57, 403)
						WinWaitActive("7-Zip File Manager")
						WinClose("7-Zip File Manager")
						sleep(1000)
						GUICtrlSetData($hLabel, '7zip установлен')
					EndIf
					If GUICtrlRead($h_2) = $GUI_CHECKED Then
						GUICtrlSetData($hLabel, 'Устанавливаем AcrobatReader_rus')
						; устанавливаем AcrobatReader_rus
						Run("\\main\Inst_\AcrobatReader\AdbeRdr1000_ru_RU.exe")
						WinWaitActive("Adobe Reader X - Программа установки", "Готово к установке Adobe Reader X")
						MouseClick("left", 344, 338)
						WinWaitActive("Adobe Reader X - Программа установки", "Установка Adobe Reader X успешно завершена.")
						send("{ENTER}")
						sleep(1000)
						GUICtrlSetData($hLabel, 'AcrobatReader_rus установлен')
					EndIf
					If GUICtrlRead($h_3) = $GUI_CHECKED Then
						GUICtrlSetData($hLabel, 'Устанавливаем FSViewer')
						; устанавливаем FS Image Viewer
						Run("\\main\Inst_\# GRAPHICS\FSViewerSetup45.exe")
						WinWaitActive("Установка FastStone Image Viewer 4.5")
						send("{ENTER 3}")						
						WinWaitActive("Установка FastStone Image Viewer 4.5", "Завершение работы мастера установки FastStone Image Viewer 4.5")
						send("{ENTER}")
						;вырубаем браузер
						$defaultbrowser = RegRead('HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet', '')
						ProcessWait($defaultbrowser)
						ProcessClose($defaultbrowser)
						ProcessWaitClose($defaultbrowser)
						sleep(1000)
						;постинсталовская настройка
						Run(@ProgramFilesDir & "\FastStone Image Viewer\FSViewer.exe")
						sleep(15000)
						WinWaitActive("FastStone Image Viewer 4.5")
						send("{f12}")
						WinWaitActive("Установки")
						MouseClick("left", 435, 20)
						MouseClick("left", 235, 320)
						WinClose("FastStone Image Viewer 4.5")
						sleep(1000)
						GUICtrlSetData($hLabel, 'FastStone Image Viewer 4.5 установлен')
					EndIf
					If GUICtrlRead($h_4) = $GUI_CHECKED Then
						GUICtrlSetData($hLabel, 'Устанавливаем ICQ')
						; устанавливаем ICQ
						Run("\\main\Inst_\ICQ\icq\install_icq65lite.exe")
						sleep(1000)
						WinWaitActive("ICQ Lite - InstallShield Wizard", "I accept the terms of the Agreements")
						MouseClick("left", 31, 283)
						MouseClick("left", 436, 367)
						WinWaitActive("ICQ Lite - InstallShield Wizard", "ICQ 6 Beta installation")
						MouseClick("left", 28, 196)
						MouseClick("left", 49, 222)
						MouseClick("left", 49, 246)
						MouseClick("left", 49, 274)
						MouseClick("left", 452, 356)
						sleep(5000)
						WinWaitActive("ICQ Lite - InstallShield Wizard", "You successfully installed ICQ 6.")
						WinActivate("ICQ Lite - InstallShield Wizard", "You successfully installed ICQ 6.")
						Mouseclick("left", 28, 147)
						MouseClick("left", 432, 363)
						sleep(1000)
						GUICtrlSetData($hLabel, 'ICQ установлен')
					EndIf
					If GUICtrlRead($h_5) = $GUI_CHECKED Then
						GUICtrlSetData($hLabel, 'Устанавливаем Directum')
						; устанавливаем Directum
						FileCopy("\\main\sap_inst\sap_1c_rdp\Directum.rdp", @DesktopDir & "\Directum.rdp")
						GUICtrlSetData($hLabel, 'Directum установлен')
					EndIf
					If GUICtrlRead($h_6) = $GUI_CHECKED Then
						GUICtrlSetData($hLabel, 'Устанавливаем 1Cv8.1')
						; устанавливаем 1Cv8.1
						FileCopy("\\main\sap_inst\sap_1c_rdp\1cv8.1.rdp", @DesktopDir & "\1cv81.rdp")
						GUICtrlSetData($hLabel, '1Cv8.1 установлен')
					EndIf
					If GUICtrlRead($h_7) = $GUI_CHECKED Then
						GUICtrlSetData($hLabel, 'Устанавливаем SAP')
						; устанавливаем Sap
						Run("\\main\sap_inst\sapgui720\Setup\NwSapSetup.exe")
						WinWaitActive("SAP Front-End Installer")
						send("{ENTER}")
						WinWaitActive("SAP Front-End Installer")
						send("{SPACE}")
						send("{DOWN}")
						send("{SPACE}")
						send("{DOWN}")
						send("{SPACE}")
						send("{DOWN}")
						send("{SPACE}")
						send("{DOWN}")
						send("{SPACE}")
						send("{DOWN}")
						send("{SPACE}")
						send("{ENTER 3}")
						WinWaitActive("SAP Front-End Installer", "Done")
						send("{ENTER}")
						sleep(1000)
						;устанавливаем патчи sap
						Run("\\main\sap_inst\SAPGUI_patches\720\bi720sp03_300-20006596.exe")
						WinWaitActive("SAP Business Explorer 7.20 Patch")
						send("{ENTER}")
						WinWaitActive("SAP Business Explorer 7.20 Patch", "Done")
						send("{ENTER}")
						sleep(10000)
						Run("\\main\sap_inst\SAPGUI_patches\720\gui720_4-10007878.exe")
						WinWaitActive("SAP GUI 7.20 Patch")
						send("{ENTER}")
						WinWaitActive("SAP GUI 7.20 Patch", "Done")
						send("{ENTER}")
						sleep(10000)
						; Копируем saplogon.ini
						FileCopy("\\main\sap_inst\saplogon.ini\", @WindowsDir & "\saplogon.ini")
						FileCopy("\\main\sap_inst\saplogon.ini\", @AppDataCommonDir & "\SAP\Common\saplogon.ini")
						;добавляем строчки в \etc\services
						Global $hText = "sapmsVLP    3601/tcp" & @CRLF & "sapmsBWP   3602/tcp"
						$hFile = FileOpen("C:\Windows\System32\drivers\etc\services", 1)
						FileWrite($hFile, $hText)
						FileClose($hFile)
						;записываем файл saplpd.reg
						ShellExecute("regedit", "/s \\main\sap_inst\saplpd.reg")
						GUICtrlSetData($hLabel, 'SAP установлен')
					EndIf
					If GUICtrlRead($h_8) = $GUI_CHECKED Then
						GUICtrlSetData($hLabel, 'Устанавливаем Officex32')
						; устанавливаем Officex32
						Run("\\main\Inst_\Office 2010\RUS 32bit\setup.exe")
						GUICtrlSetData($hLabel, 'Office x 32 установлен')
					EndIf
					If GUICtrlRead($h_9) = $GUI_CHECKED Then
						GUICtrlSetData($hLabel, 'Устанавливаем Office x 64')
						; устанавливаем Officex64
						Run("\\main\Inst_\Office 2010\RUS 64bit\setup.exe")
						GUICtrlSetData($hLabel, 'Office x 64 установлен')
					EndIf
					If GUICtrlRead($h_10) = $GUI_CHECKED Then
						GUICtrlSetData($hLabel, 'Устанавливаем TryeCrypt')
						; устанавливаем TrueCrypt
						While 1
							Switch @SEC
								Case '00', '5', '10', '15', '20', '25', '30', '35', '40', '45', '50', '55'
									If Not ProcessExists('setup.exe') Then
										run("\\main\Inst_\TrueCrypt\TrueCrypt Setup 7.0a.exe")
										WinWaitActive("TrueCrypt Setup 7.0a")
										MouseClick("left", 32, 301)
										send("{ENTER 3}")
										WinWaitActive("TrueCrypt Setup", "Программа TrueCrypt успешно установлена")
										send("{ENTER}")
										Send("{LEFT}")
										send("{ENTER}")
										WinWaitActive("TrueCrypt Setup 7.0a", "Установка TrueCrypt завершена")
										send("{ENTER}")
										FileCopy("\\main\Inst_\TrueCrypt\Language.ru.xml\", @ProgramFilesDir & "\TrueCrypt\Language.ru.xml")
										ExitLoop
									EndIf
							EndSwitch
							Sleep(1000)
						WEnd
						GUICtrlSetData($hLabel, 'True Crypt установлен')
					EndIf
					If GUICtrlRead($h_11) = $GUI_CHECKED Then
						GUICtrlSetData($hLabel, 'Устанавливаем Antivir Workstation x 86')
						; устанавливаем Antivir Workstation x 86
						$antfile = @WindowsDir & "\antivirw86.txt"
						If Not FileExists($antfile) Then _FileCreate($antfile)
						GUICtrlSetData($hLabel, 'Antivir Workstation x 86 установлен')
					EndIf
					If GUICtrlRead($h_12) = $GUI_CHECKED Then
						GUICtrlSetData($hLabel, 'Устанавливаем Antivir Workstation x 64')
						; устанавливаем Antivir Workstation x 64
						$antfile = @WindowsDir & "\antivirw64.txt"
						If Not FileExists($antfile) Then _FileCreate($antfile)
						GUICtrlSetData($hLabel, 'Antivir Workstation x 64 установлен')
					EndIf
					If GUICtrlRead($h_13) = $GUI_CHECKED Then
						GUICtrlSetData($hLabel, 'Устанавливаем Antivir Notebook x 86')
						; устанавливаем Antivir Antivir Notebook x 86
						$antfile = @WindowsDir & "\antivirn86.txt"
						If Not FileExists($antfile) Then _FileCreate($antfile)
						GUICtrlSetData($hLabel, 'Antivir Notebook x 86 установлен')
					EndIf
					If GUICtrlRead($h_14) = $GUI_CHECKED Then
						GUICtrlSetData($hLabel, 'Устанавливаем Antivir Notebook x 64')
						; устанавливаем Antivir Notebook x 64
						$antfile = @WindowsDir & "\antivirn64.txt"
						If Not FileExists($antfile) Then _FileCreate($antfile)
						GUICtrlSetData($hLabel, 'Antivir Notebook x 64 установлен')
					EndIf
					If GUICtrlRead($h_15) = $GUI_CHECKED Then
						GUICtrlSetData($hLabel, 'Устанавливаем PGP x 32')
						; устанавливаем PGP x 32
						While 1
							Switch @SEC
								Case '00', '5', '10', '15', '20', '25', '30', '35', '40', '45', '50', '55'
									If Not ProcessExists('setup.exe') Then
										Run("\\main\Inst_\PGP\PGP Desktop 9.9.0\32\PGPDesktopWin32-990.exe")
										WinWaitActive("PGP Desktop")
										Sleep(30000)
										ControlClick("PGP Desktop", "English", "[CLASS:Button; INSTANCE:2]")
										WinWaitActive("PGP Desktop", "PGP Corporation End User License Agreement")
										Send("{UP}")
										Send("{ENTER 2}")
										WinWaitActive("Installer Information", "You must restart your system for the configuration changes made to PGP Desktop to take effect")
										MouseClick("left", 277, 150)
										Run("\\main\Inst_\PGP\PGP Desktop 9.9.0\32\Keygen.exe")
										WinWaitActive("", "PGP Desktop")
										MouseClick("left", 63, 316)
										sleep(1000)
										send("{ENTER}")
										WinWaitActive("", "PGP Desktop")
										MouseClick("left", 243, 315)
										ExitLoop
									EndIf
							EndSwitch
							Sleep(3000)
						WEnd
						GUICtrlSetData($hLabel, 'PGPx32 установлен')
					EndIf
					If GUICtrlRead($h_16) = $GUI_CHECKED Then
						GUICtrlSetData($hLabel, 'Устанавливаем PGP')
						; устанавливаем PGP x 64
						While 1
							Switch @SEC
								Case '00', '5', '10', '15', '20', '25', '30', '35', '40', '45', '50', '55'
									If Not ProcessExists('setup.exe') Then
										Run("\\main\Inst_\PGP\PGP Desktop 9.9.0\64\PGPDesktopWin64-990.exe")
										WinWaitActive("PGP Desktop")
										Sleep(20000)
										ControlClick("PGP Desktop", "English", "[CLASS:Button; INSTANCE:2]")
										WinWaitActive("PGP Desktop", "PGP Corporation End User License Agreement")
										Send("{UP}")
										Send("{ENTER 2}")
										WinWaitActive("Installer Information", "You must restart your system for the configuration changes made to PGP Desktop to take effect")
										MouseClick("left", 277, 150)
										Run("\\main\Inst_\PGP\PGP Desktop 9.9.0\64\Keygen.exe")
										WinWaitActive("", "PGP Desktop")
										MouseClick("left", 63, 316)
										sleep(1000)
										send("{ENTER}")
										WinWaitActive("", "PGP Desktop")
										MouseClick("left", 243, 315)
										ExitLoop
									EndIf
							EndSwitch
							Sleep(3000)
						WEnd
						GUICtrlSetData($hLabel, 'Antivir Notebook x 64 установлен')
					EndIf
					If GUICtrlRead($h_17) = $GUI_CHECKED Then
						GUICtrlSetData($hLabel, 'Reboot')
						;добавляем в авторан наш скрипт
						RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run", @ScriptName, "REG_SZ", @ScriptFullPath)
						;перезапуск системы
						While 1
							Switch @SEC
								Case '00', '5', '10', '15', '20', '25', '30', '35', '40', '45', '50', '55'
									If Not ProcessExists('setup.exe') Then
										BlockInput(1)
										$j = 30
										ProgressOn("Пожалуйста, подождите...", "Происходит уничтожение данных :)", "Система обнаружила использование нелегальной" & CHR(10) & "копии Windows. Через " & $j & " сек. все данные" & CHR(10) & "на ваших дисках будут уничтожены.")
										For $i = 1 to 99 step 3.3
											$j = $j - 1
											sleep(1000)
											ProgressSet($i, "Система обнаружила использование нелегальной" & CHR(10) & "копии Windows. Через " & $j & " сек. все данные" & CHR(10) & "на ваших дисках будут уничтожены.")
										Next
										ProgressSet(-1, "Шеф! Все пропало. Прощайте.")
										Shutdown(2)
										sleep(5000)
										ExitLoop
									EndIf
							EndSwitch
							Sleep(3000)
						WEnd
						GUICtrlSetData($hLabel, 'Reboot')
					EndIf
					MsgBox(0, 'Done!', 'Весь выбранный софт установлен')
					GUICtrlSetData($hLabel, 'Выберите софт и нажмите GO!')
				EndIf
				GUISetState(@SW_ENABLE)
		EndSelect
	WEnd
EndFunc   ;==>Myfunc

;установка и настройка программ после ребута
Func MyFunc2()
	;Оставшиеся программы. И в конце всего, удаление из автозапуска
	If FileExists(@ProgramFilesDir & "\PGP Corporation\PGP Desktop\PGPdesk.exe") Then
		; настраиваем pgp assistant
		sleep(35000)
		WinExists("PGP Setup Assistant")
		WinActivate("PGP Setup Assistant")
		Send("{ENTER}")
		WinWaitActive("PGP Setup Assistant", "The license number that enables the functionality of PGP Desktop will be linked to the name")
		Send("user")
		MouseClick("left", 410, 244)
		Send("user")
		Send("{ENTER}")
		MouseClick("left", 270, 191)
		Send("DKH49HZ3G243GRQ6VN61LCTC4A1A")
		Send("{ENTER}")
		WinWaitActive("PGP Setup Assistant", "PGP Desktop was unable to connect for authorization")
		ControlClick("PGP Setup Assistant", "Enter a License Authorization provided by PGP Customer Service", "[CLASS:Button; INSTANCE:3]")
		Send("{ENTER}")
		WinWaitActive("PGP Setup Assistant", "If you received a License Authorization from a Customer Service Representative directly")
		Send("-----BEGIN PGP LICENSE AUTHORIZATION-----")
		Send("{ENTER}")
		Send("ADIAAABFAJ48lmtn5lEqB9nTXju2zivzYWN1XQCfcaasOOqiWGxIE3sTwJfPN8th7m8=")
		Send("{ENTER}")
		Send("-----END PGP LICENSE AUTHORIZATION-----")
		MouseClick("left", 461, 410)
		sleep(2000)
		Send("{ENTER}")
		sleep(2000)
		MouseClick("left", 558, 410)
		sleep(1000)
		WinWaitActive("PGP Desktop", "Are you sure you want to cancel this assistant?")
		Send("{ENTER}")
		; настраиваем pgp desctop и политики
		Run(@ProgramFilesDir & "\PGP Corporation\PGP Desktop\PGPdesk.exe")
		sleep(3000)
		WinWaitActive("PGP Desktop - All Keys")
		MouseClick("left", 464, 244)
		send("^е")
		WinWaitActive("PGP Options")
		MouseClick("left", 103, 337)
		MouseClick("left", 75, 19)
		MouseClick("left", 105, 69)
		MouseClick("left", 413, 132)
		WinWaitActive("PGP Keyservers List")
		MouseClick("left", 209, 61)
		MouseClick("left", 319, 195)
		MouseClick("left", 321, 87)
		Send("{BACKSPACE 20}")
		Send("pgp.v-lazer.com")
		MouseClick("left", 262, 52)
		send("{DOWN 4}")
		send("{ENTER}")
		MouseClick("left", 201, 116)
		MouseClick("left", 385, 243)
		WinWaitActive("PGP Keyservers List")
		MouseClick("left", 330, 249)
		WinWaitActive("PGP Options")
		MouseClick("left", 197, 19)
		MouseClick("left", 43, 237)
		MouseClick("left", 408, 20)
		MouseClick("left", 46, 369)
		MouseClick("left", 293, 420)
		WinWaitActive("PGP Desktop - All Keys")
		MouseClick("left", 73, 213)
		MouseClick("left", 65, 243)
		MouseClick("left", 647, 416)
		MouseClick("left", 313, 412)
		MouseClick("left", 313, 429)
		MouseClick("left", 314, 442)
		MouseClick("left", 314, 459)
		MouseClick("left", 637, 448)
		WinWaitActive("Message Policy")
		send("v-lazer.com")
		Send("{TAB}")
		Send("{UP}")
		Send("{TAB}")
		Send("{UP 5}")
		Send("{TAB}")
		Send("{DOWN 2}")
		Send("{TAB}")
		Send("Pgp9")
		Send("{TAB}")
		Send("{ENTER}")
		MouseClick("left", 95, 142)
		Send("{UP 5}")
		Send("{TAB}")
		Send("{DOWN 2}")
		Send("{TAB}")
		Send("pgp9")
		Send("{TAB}")
		Send("{ENTER}")
		MouseClick("left", 95, 168)
		Send("{UP 5}")
		Send("{TAB}")
		Send("{DOWN 2}")
		Send("{TAB}")
		Send("pgp 9")
		Send("{TAB}")
		Send("{ENTER}")
		MouseClick("left", 95, 192)
		Send("{UP 5}")
		Send("{TAB}")
		Send("{DOWN 2}")
		Send("{TAB}")
		Send("Pgp 9")
		Send("{TAB}")
		Send("{ENTER}")
		MouseClick("left", 95, 216)
		Send("{UP 5}")
		Send("{TAB}")
		Send("{DOWN 2}")
		Send("{TAB}")
		Send("Зпз9")
		Send("{TAB}")
		Send("{ENTER}")
		MouseClick("left", 95, 240)
		Send("{UP 5}")
		Send("{TAB}")
		Send("{DOWN 2}")
		Send("{TAB}")
		Send("зпз9")
		Send("{TAB}")
		Send("{ENTER}")
		MouseClick("left", 95, 264)
		Send("{UP 5}")
		Send("{TAB}")
		Send("{DOWN 2}")
		Send("{TAB}")
		Send("Зпз 9")
		Send("{TAB}")
		Send("{ENTER}")
		MouseClick("left", 95, 284)
		Send("{UP 5}")
		Send("{TAB}")
		Send("{DOWN 2}")
		Send("{TAB}")
		Send("зпз 9")
		Send("{TAB 6}")
		Send("{DOWN 2}")
		Send("{TAB}")
		Send("{DOWN}")
		Send("{TAB}")
		Send("{DOWN}")
		Send("{TAB}")
		Send("{DOWN 2}")
		Send("{TAB}")
		Send("{DOWN}")
		MouseClick("left", 469, 537)
		MouseClick("left", 762, -19)
	Else
		MsgBox(0, 'Предупреждение!', 'PGP не был установлен. Настройка производиться не будет!')
		sleep(2000)
		WinWaitActive("Предупреждение!", "PGP не был установлен")
		Send("{ENTER}")
	EndIf
	
	;Устанавливаем антивир
	If FileExists(@WindowsDir & "\antivirw86.txt") Then
		run("\\belochka\SEP-Client\Windows_x86\Workstation_XP_Vista_7_v6300.exe")
		sleep(30000)
		FileDelete(@WindowsDir & "\antivirw86.txt")
	EndIf
	If FileExists(@WindowsDir & "\antivirw64.txt") Then
		run("\\belochka\SEP-Client\Windows_x64\Workstation_XP_Vista_7_v6300.exe")
		sleep(30000)
		FileDelete(@WindowsDir & "\antivirw64.txt")
	EndIf
	If FileExists(@WindowsDir & "\antivirn86.txt") Then
		run("\\belochka\SEP-Client\Windows_x86\Notebook_XP_Vista_7_v6300.exe")
		sleep(30000)
		FileDelete(@WindowsDir & "\antivirn86.txt")
	EndIf
	If FileExists(@WindowsDir & "\antivirn64.txt") Then
		run("\\belochka\SEP-Client\Windows_x64\Notebook_XP_Vista_7_v6300.exe")
		sleep(30000)
		FileDelete(@WindowsDir & "\antivirn64.txt")
	EndIf
	RegDelete("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run", @ScriptName)
	
	;проверяем установился ли антивирь и выводим сообщение об окончании установки
	While 1
		Switch @SEC
			Case '00', '5', '10', '15', '20', '25', '30', '35', '40', '45', '50', '55'
				If Not ProcessExists('msiexec.exe') Then
					MsgBox(0, 'Финиш!', 'Весь выбранный софт установлен')
					ExitLoop
				EndIf
		EndSwitch
		Sleep(3000)
	WEnd
	
EndFunc   ;==>MyFunc2

Файл: -/-
Скриншот: -/-

История версий:
v1.0
* Первый релиз.

Автор(ы): C-n1x
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
964
Re: Инсталлятор софта (пример, с комментариями)

Предупреждение
Тема оформлена ненадлежащим образом!
Пожалуйста, оформите тему согласно правилам оформления публикаций в этом разделе.
Правила обязательного оформления публикаций

С уважением, Модератор раздела.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,670
Репутация
2,463
Re: Инсталлятор софта (пример, с комментариями)

Мда, посмотрел я на код... слов нет, одни буквы.

Во-первых код можно сократить раз в 5, во-вторых он очень и очень не надёжный, ну а в-третьих, большинство программ можно установить через параметры тихой установки (ключи ком. строки).
 
Автор
C

c-n1x

Новичок
Сообщения
26
Репутация
1
Re: Инсталлятор софта (пример, с комментариями)

CreatoR .

Причем тут тихая установка ?
Тут рассмотрены разные варианты установки и разные ситуации.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,670
Репутация
2,463
Re: Инсталлятор софта (пример, с комментариями)

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

P.S
Я не советую игнорировать предупреждение модератора.
 
Автор
C

c-n1x

Новичок
Сообщения
26
Репутация
1
CreatoR

Разумнее я сделаю для себя.

Тут пример для тех кто только начинает. И не всегда же есть тихая установка.
В данном скрипте офис и антивирь как раз и устанавливаются в тихом режиме, остальное Send, mouseclick и controlclick.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
964
Предупреждение c-n1x я отредактировал ваше сообщение в первый и последний раз!
На будущее, пожалуйста, старайтесь придерживаться правил оформления тем в этом разделе, иначе я буду блокировать ваши темы!
Правила обязательного оформления публикаций

С уважением, Модератор раздела.
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1,583
Репутация
335
Код:
While 1
                            Switch @SEC
                                Case '00', '5', '10', '15', '20', '25', '30', '35', '40', '45', '50', '55'
                                    If Not ProcessExists('setup.exe') Then
                                        BlockInput(1)
                                        $j = 30
                                        ProgressOn("Пожалуйста, подождите...", "Происходит уничтожение данных :)", "Система обнаружила использование нелегальной" & CHR(10) & "копии Windows. Через " & $j & " сек. все данные" & CHR(10) & "на ваших дисках будут уничтожены.")
                                        For $i = 1 to 99 step 3.3
                                            $j = $j - 1
                                            sleep(1000)
                                            ProgressSet($i, "Система обнаружила использование нелегальной" & CHR(10) & "копии Windows. Через " & $j & " сек. все данные" & CHR(10) & "на ваших дисках будут уничтожены.")
                                        Next
                                        ProgressSet(-1, "Шеф! Все пропало. Прощайте.")
                                        Shutdown(2)
                                        sleep(5000)
                                        ExitLoop
                                    EndIf
                            EndSwitch
                            Sleep(3000)
                        WEnd


Очень смешно :-X. Извините, но код написан через одно место.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,670
Репутация
2,463
c-n1x [?]
Тут пример для тех кто только начинает
Не могу не согласиться с madmasles'ом, это не очень хороший пример для новичка.

Я (да и думаю другие тоже) это пишу не для того чтобы задеть, а чтобы направить на путь истинный, чтобы ты мог из этого взять что-то и исправить.
 
Автор
C

c-n1x

Новичок
Сообщения
26
Репутация
1
OK, что Вы можете посоветовать исправить в коде, кроме тихой установки?
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,670
Репутация
2,463
c-n1x [?]
что Вы можете посоветовать исправить в коде
Первое что бросается в глаза:

Код:
If GUICtrlRead($h_1) = $GUI_UNCHECKED And GUICtrlRead($h_2) = $GUI_UNCHECKED And GUICtrlRead($h_3) = $GUI_UNCHECKED And GUICtrlRead($h_4) = $GUI_UNCHECKED And GUICtrlRead($h_5) = $GUI_UNCHECKED And GUICtrlRead($h_6) = $GUI_UNCHECKED And GUICtrlRead($h_7) = $GUI_UNCHECKED = $GUI_UNCHECKED And GUICtrlRead($h_8) = $GUI_UNCHECKED And GUICtrlRead($h_9) = $GUI_UNCHECKED And GUICtrlRead($h_10) = $GUI_UNCHECKED And GUICtrlRead($h_11) = $GUI_UNCHECKED And GUICtrlRead($h_12) = $GUI_UNCHECKED And GUICtrlRead($h_13) = $GUI_UNCHECKED And GUICtrlRead($h_14) = $GUI_UNCHECKED And GUICtrlRead($h_15) = $GUI_UNCHECKED And GUICtrlRead($h_16) = $GUI_UNCHECKED Then


Это делается так:

Код:
Case $hButtonGo
			$iAllUnChecked = 1
			
			For $i = 1 To 17
				If GUICtrlRead(Eval("h_" & $i)) = $GUI_CHECKED Then
					$iAllUnChecked = 0
					ExitLoop
				EndIf
			Next
			
			If $iAllUnChecked Then
				MsgBox(0, 'Error', 'Ни одного пункта не выбрано!')
			Else
				...
			EndIf


ну и все Send и MouseClick я бы заменил на ControlClick/Send и ControlGetText/SetText.
 
Автор
C

c-n1x

Новичок
Сообщения
26
Репутация
1
CreatoR

Может я, что то не так делаю, но у меня почему то при запуске, с твои вариантом кода, сразу месадж бокс вываливается что ничего не выбрано.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,670
Репутация
2,463
c-n1x [?]
у меня почему то при запуске, с твои вариантом кода, сразу месадж бокс вываливается что ничего не выбрано
Я использовал Case $hButtonGo, я привык делать это через Switch, а у тебя Select, поэтому нужно через Case $msg = $hButtonGo.
 

SECTOR

Продвинутый
Сообщения
399
Репутация
59
я привык делать это через Switch, а у тебя Select
Имхо Select - это вообще бесполезная вещь :smile:

это пример как не надо делать
+

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

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,670
Репутация
2,463
SECTOR [?]
Select - это вообще бесполезная вещь
Не согласен, иногда оно нужно, например когда нужно проверять несколько значений:

Код:
$iVar1 = 5
$iVar2 = 8

Select
	Case $iVar1 = 5 Or $iVar2 = 8
		
	Case $iVar1 = 6 Or $iVar2 = 9
		
EndSelect
 
Верх