Autoit-自动化安装软件

Autoit在线文档:AutoIt 在线文档 

SQL Server的自动化安装仅供参考,SQL Server安装环境较复杂,自动化安装总是出错

#RequireAdmin

#comments-start
	version:1.0
	author:XNN
	date:2022/12/24
	describe:软件自动执行脚本 RunALL.au3
#comments-end

;共7款软件的自动安装

Func RunAll()

	_Install_SQL()
	Sleep(6000)
	_Install_SSMS()
	Sleep(6000)

	_Install_7z()
	Sleep(1000)
	_Install_Everything()
	Sleep(1000)
	_install_Npp()
	Sleep(1000)
	_install_Lockhunter()
	Sleep(1000)

	_Install_Stxihei()


EndFunc

Func _Install_SQL()

;有时会卡在Install Rules
	Opt("MouseCoordMode", 0); 设置激活窗口的相对坐标位置
	Opt("MouseClickDelay", 3000); 设置鼠标点击次数的间隔时长为3s
	Opt("WinDetectHiddenText", 1); 指定是否让隐藏的窗口文本也能被窗口匹配函数检测.
	Local $hTimer=TimerInit();设置程序运行初始时间

	Run("D:/AmberSoftInstallers/software/SQLEXPR_x64_ENU.exe")

	Local $path="D:\AmberSoftInstallers\software\SQLEXPR_x64_ENU\"
	WinWait("Choose Directory For Extracted Files")
	ControlSend("Choose Directory For Extracted Files","","Edit1",$path)
	ControlClick("Choose Directory For Extracted Files","Ok","Button1","left")

	WinWaitActive("SQL Server Installation Center")
	WinSetState("SQL Server Installation Center","",@SW_MAXIMIZE)
	Sleep(1200)
	MouseClick("left",556,48,2)      ;暂时解决,position的问题
	ProcessClose("LANDINGPAGE.EXE")  ;关闭安装起始页

	Local $title="SQL Server 2019 Setup"

	WinWaitActive($title,"License Terms")
	ControlClick($title,"I &accept the license terms and","WindowsForms10.BUTTON.app.0.aec740_r6_ad14","left")
	WinActive($title,"License Terms")
	ControlClick($title,"&Next >","WindowsForms10.BUTTON.app.0.aec740_r6_ad12","left")

	WinWaitActive($title,"Microsoft Update")
	ControlClick($title,"&Next >","WindowsForms10.BUTTON.app.0.aec740_r6_ad12","left")

	WinWaitActive($title,"Product Updates")
	ControlClick($title,"&Next >","WindowsForms10.BUTTON.app.0.aec740_r6_ad12","left")

    WinWait($title,"Install Setup Files")
	Local $ir=WinWaitActive($title,"Install Rules")
	WinActivate($ir)
	Sleep(5000)
	ControlClick($ir,"&Next >","WindowsForms10.BUTTON.app.0.aec740_r6_ad12","left")

	WinWaitActive($title,"Feature Selection")
	ControlClick($title,"&Next >","WindowsForms10.BUTTON.app.0.aec740_r6_ad12","left")

	Local $name="SQLEXPRESS"
	Dim $d=WinWaitActive($title,"Instance Configuration")
	MouseClick("left",630, 170,2)
	ControlSetText($d,"Instance &ID:","WindowsForms10.EDIT.app.0.aec740_r6_ad11",$name)
	ControlClick($title,"&Next >","WindowsForms10.BUTTON.app.0.aec740_r6_ad12","left")

	WinWaitActive($title,"Server Configuration")
	ControlClick($title,"&Next >","WindowsForms10.BUTTON.app.0.aec740_r6_ad12","left")

	Local $password="123456"
	WinWaitActive($title,"Database Engine Configuration")
	ControlClick($title,"&Mixed Mode (SQL Server authentication and Windows authentication)","WindowsForms10.BUTTON.app.0.aec740_r6_ad18","left")
	Dim $dp=WinActive($title,"Database Engine Configuration")
	ControlSetText($dp,"&Enter password:","WindowsForms10.EDIT.app.0.aec740_r6_ad12",$password)
	Sleep(3000)
	ControlSetText($dp,"C&onfirm password:","WindowsForms10.EDIT.app.0.aec740_r6_ad11",$password)
	Sleep(5000)
	ControlClick($dp,"Add &Current User","WindowsForms10.BUTTON.app.0.aec740_r6_ad14","left")
	ControlClick($dp,"&Next >","WindowsForms10.BUTTON.app.0.aec740_r6_ad12","left")

	WinWaitNotActive($title,"Feature Configuration Rules")
	WinWait($title,"Installation Progress")

	Dim $com=WinWait($title,"Complete")
	While 1
		If ProcessExists("SCENARIOENGINE.EXE") Then
			WinActivate($com,"Complete")
			Sleep(5000)
			ControlClick($title,"Close","WindowsForms10.BUTTON.app.0.aec740_r6_ad11","left")
		Else
			ExitLoop
		EndIf
	WEnd
	Sleep(2000)

EndFunc

Func _Install_SSMS()

	Run("D:/AmberSoftInstallers/software/SSMS-Setup-CHS.exe")
	WinWait("Microsoft SQL Server Management Studio(内含Azure Data Studio)")
	WinActivate("Microsoft SQL Server Management Studio(内含Azure Data Studio)")
	Send("{LShift}")
	Send("{I}")
	While 1
		if ProcessExists("SSMS-Setup-CHS.exe") Then
			WinActivate("Microsoft SQL Server Management Studio(内含Azure Data Studio)")
			Sleep(6000)
			Send("{LShift}")
			Send("{C}")
		Else
			ExitLoop
		EndIf
	WEnd
	ProcessClose("SSMS-Setup-CHS.exe")
	MsgBox(4096,"信息提示无需进行操作","安装SQL Server的第二步成功,已成功安装数据库!",2)

EndFunc

Func _Install_7z()
	RunWait(@ScriptDir & "\7z1900-x64.exe /S")
	MsgBox(4096,"信息提示无需进行操作","7z1900-x64安装成功!",2)
EndFunc

;安装Everything-1.4.1.935.x64.msi,总是卡在 I &Agree
Func _Install_Everything()

	Local $hTimer=TimerInit();设置程序运行初始时间
	RunWait(@COMSPEC & " /c Start D:/AmberSoftInstallers/software/Everything-1.4.1.935.x64.msi")

	Local $title="Everything 1.4.1.935 (x64)"
	WinWait($title,"License Agreement")
	ControlClick($title,"I &Agree","Button3","left")
	Sleep(500)
	WinActive($title,"License Agreement")
	ControlClick($title,"&Next >","Button6","left")

	WinWaitActive($title,"Select Installation Folder")
	ControlClick($title,"&Next >","Button1","left")

	WinWaitActive($title,"Confirm Installation")
	ControlClick($title,"&Next >","Button1","left")

	Sleep(Ceiling(TimerDiff($hTimer)) * 2); 在运行完安装程序,打开第2个程序之间所消耗的时间x2倍,来等待主程序的出现
	Local $handleID = WinWaitActive($title,"Installation Complete"); 激活主程序用以获取句柄信息
	ProcessClose(WinGetProcess($handleID)); 杀死进程以达到关闭窗口的目的
	MsgBox(4096,"信息提示无需进行操作","Everything-1.4.1.935.x64.msi已成功安装!",2);2秒后自动关闭提示窗口
	FileDelete("C:/Users/OEM/Desktop/搜索 Everything.lnk") ;删除快捷键,将图标拖入运行框即可知道快捷键的绝对路径

EndFunc

Func _Install_Npp()

	Run("D:/AmberSoftInstallers/software/npp.7.6.6.Installer.exe")
	WinWaitActive("Installer Language")
	Send("{enter}")
	Local $title="Notepad++ v7.6.6 安装"
	WinWaitActive($title,"欢迎使用 Notepad++ v7.6.6 安装向导")
	Send("!n")
	WinWaitActive($title,"许可证协议")
	Send("!i")
	WinWaitActive($title,"选定安装位置")
	Send("!n")

	WinWaitActive($title,"选择组件")
	Send("!n")
	WinActive($title,"选择组件")
	ControlClick($title,"Create Shortcut on Desktop","Button4","left")

	ControlClick($title,"安装(&I)","Button2","left")
	Sleep(100)

	WinWaitActive($title,"正在完成 Notepad++ v7.6.6 安装向导")
	ControlClick($title,"运行 Notepad++ v7.6.6(&R)","Button4","left")
	Send("{enter}")

	MsgBox(4096,"信息提示无需进行操作","npp.7.6.6.Installer.exe已成功安装!",2)
	ProcessClose("npp.7.6.6.Installer.exe")

EndFunc

;安装lockhuntersetup_3-4-3.exe
 Func _Install_Lockhunter()

	Run("D:/AmberSoftInstallers/software/lockhuntersetup_3-4-3.exe")
	Local $title="Setup - LockHunter 3.4, 32/64 bit"
	WinWait($title,"Select Destination Location")
	ControlClick($title,"&Next >","TNewButton2","left")

	WinWaitActive($title,"Completing the LockHunter Setup Wizard")
	Send("{enter}")
	MsgBox(4096,"信息提示无需进行操作","lockhuntersetup_3-4-3.exe已成功安装!",2)
	ProcessClose("iexplore.exe")

 EndFunc



;安装STXIHEI.TTF
 Func _Install_Stxihei()

	RunWait(@COMSPEC & " /c Start D:/AmberSoftInstallers/software/STXIHEI.TTF")
	Local $title="华文细黑 (TrueType) "
	WinWait($title)
	ControlClick($title,"安装(&I)","Button2","left")
	sleep(1000)
	MsgBox(4096,"信息提示无需进行操作","华文细黑字体已成功安装!",2)
	ProcessClose("fontview.exe")

 EndFunc


RunAll()

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
1.兼容msi,自动高亮目标程序,实时生成脚本 2.可导入其他非i-Autoit创建的Au3脚本并编译为EXE 3.自动读取安装程序图标,编译时也可以选择其他图标 4.可自定义编译EXE版本信息 5.支持组件多控件选择(例如标准树形treeviw、列表listview控件)、文本edit控件修改文本(例如安装路径、序列号输入) 6.新增隐藏自动安装模式,不过尚未完美 7.模式切换分为控件模式和鼠标位置模式,切换快捷键和暂停捕捉快捷键均可自定义设置 8.可自定义是否在控件点击时左上角提示相关信息 9.可自定义运行脚本是否需要托盘提示目前代码行数和对应代码 10.其他功能(打包、删除文件,添加、删除启动项,查杀进程和随机窗口)可方便生成相应代码并可一键复制 日后根据反馈陆续推出动画教程,暂时补个简单文字教程: 1.将目标程序拖到“安装程序”的文本框,点击运行 2.程序启动并高亮置顶,此时别太急,尤其是那些需要释放文件的程序,稍等片刻再开始按照正常安装步骤点击相应按钮 3.如果需要修改安装路径或输入注册码,请在第1步前将路径复制好,然后单击文本框,会弹出一个提示框,输入需要修改的路径即可 4.检测到点击其他控件(标准树形treeviw、列表listview控件)会自动转换成相对位置点击 5.某些控件如果发现不支持或者控件结构非常复杂,可以尝试切换为鼠标模式用相对位置模拟点击 6.如果需要关闭进程或者窗口之类的,可以在“其他功能”里面的选项使用对应功能生成代码并一键复制后转到“安装脚本”选择合适位置右键选择粘贴代码即可 7.测试代码:在“安装脚本”界面右键选择“测试代码”即可生成临时测试程序并运行 8.编译代码:选择图标或保留源程序图标后再自定义版本信息(也可不定义)编译即可,在目标程序同目录下生成安装脚本程序 9.导入脚本:将目标脚本拖入“运行编译”的“安装脚本”右侧文本框,点击导入即可 10.隐藏安装模式:部分软件无法兼容,还需继续更新完善,有兴趣的可以自行测试
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值