AutoIt3制作自动安装脚本


出处:https://zhuanlan.zhihu.com/p/38309640

下面以使用脚本自动安装极品五笔为例。
文章头部提供的地址是集成了会用到的工具。
首先,脚本的第一步是运行程序。这一步要用到AU3的Run函数。
查询了下函数手册
Run ( "程序" , "工作目录" , 显示标志, 可选标志)
其中,工作目录、显示标志、可选标志为可选选项,可以不添加。
我们将脚本放置在极品五笔安装程序所在目录,这样就不需要添加工作目录这个参数了。

1Run("jpwb_7.0.exe")
上面的代码用于运行极品五笔的安装程序,运行安装程序,接下来,就要对安装程序的界面进行操作了。
使用窗口信息工具可以帮助分析窗口,这个程序在AutoIT工具箱中有,大家可以自己试用下,很方便的说~很简单的,通俗易懂,是居家旅游的必备工具啊。


运行安装程序之后,脚本需要知道接下来的操作是对那个窗口进行操作。
这一步使用到两个函数,大家可以根据自己的需要来挑选使用哪一个。
WinWait
暂停脚本的执行直至指定窗口存在(出现)为止.
WinWait ( "窗口标题" , "窗口文本" , 超时时间)
WinWaitActive
暂停脚本的执行直至指定窗口被激活(成为活动状态)为止.
WinWaitActive ( "窗口标题", "窗口文本", 超时时间 )
其中,窗口文本和超时时间为可选选项。
窗口脚本可以更好地帮助脚本确认窗口,超时时间可以让脚本在暂停一段时间之后跳过该函数继续执行。


1WinWait("下载吧 - 极品五笔 Win2000/Xp/Windows 7通用型 安装","欢迎使用 “极品五笔” 安装向导")
上面这句就是让脚本程序等待一个标题为
下载吧 - 极品五笔 Win2000/Xp/Windows 7通用型 安装
窗口文本为
欢迎使用 “极品五笔” 安装向导
的窗口,等窗口出现之后,我们就要点击下一步的按钮了。


在这里,我们需要用到的函数是
ControlClick
向指定控件发送鼠标点击命令.
ControlClick ( "标题", "文本", 控件ID , 按钮 , 点击次数 , X坐标 , Y坐标 )
以上参数中,按钮即为鼠标的左右键,点击次数,X坐标,Y坐标,均为可选参数。


1ControlClick("下载吧 - 极品五笔 Win2000/Xp/Windows 7通用型 安装","","[CLASS:Button; INSTANCE:2]","left",1)
上面语句完成了点击安装这个步骤,认真的童鞋肯定发现了大D在“控件ID”这个参数上没有使用“1”。而是使用了"[CLASS:Button; INSTANCE:2]"这个高级模式的ID,至于为什么这么用,大D将会在后续文章中说到。敬请期待。接下来,安装程序对软件进行安装。随后进入完成安装界面。


使用窗口信息化工具分析安装完成界面,可见设置主页的这个选项是一个按钮,那么,即可以使用ControlClick来完成,也可以使用另外一个函数。
ControlCommand
向指定控件发送命令.
ControlCommand ( "窗口标题", "窗口文本", 控件ID, "命令" , "选项")
其中,最后一个参数——选项为可选参数。基本不用。
这里放出代码

1ControlCommand("下载吧 - 极品五笔 Win2000/Xp/Windows 7通用型 安装","正在完成 “极品五笔” 安装向导",1204,"uncheck")

上面的代码中,最后一个参数——命令为"uncheck",这个就是用于取消单选框的选择状态。
该函数的命令有
命令, 选项返回值"IsVisible", ""若目标控件可见则返回值为1,否则为0."IsEnabled", ""若目标控件可用(未被禁用)则返回值为1,否则为0."ShowDropDown", ""弹出/下拉 组合框(ComboBox)的列表."HideDropDown", ""收回/隐藏 组合框(ComboBox)的列表."AddString", '字符串'在 ListBox 或 ComboBox 的编辑框后面附加指定字符串."DelString", 出现次序删除在 ListBox 或 ComboBox 的编辑框中指定的字符串(从0开始,0 代表第一个)."FindString", '字符串'返回在 ListBox 或 ComboBox 的编辑框中与指定字符串匹配项目的出现次序(从0开始,0 代表第一个)."SetCurrentSelection", 出现次序通过指定出现次序(从0开始,0 代表第一个)把 ListBox 或 ComboBox 的当前选择项设为指定的项目."SelectString", '字符串'通过指定字符串把 ListBox 或 ComboBox 的当前选择项设为匹配字符串的项目."IsChecked", ""若目标按钮(复选框/单选框)被选中则返回值为1,否则为0."Check", ""使目标按钮(复选框/单选框)变为选中状态."UnCheck", ""使目标按钮(复选框/单选框)变为非选中状态."GetCurrentLine", ""返回在目标编辑框中插入符(caret,光标)的所在行号."GetCurrentCol", ""返回在目标编辑框中插入符(caret,光标)的所在列号."GetCurrentSelection", ""返回 ListBox 或 ComboBox 控件当前选中的项目名."GetLineCount", ""返回目标编辑框中的总行数."GetLine", 行号返回目标编辑框中指定行的文本内容."GetSelected", ""返回目标编辑框中的(用户用鼠标或其它方式)选定的文本."EditPaste", '字符串'在目标编辑框中插入符(caret)所在位置后插入指定字符串."CurrentTab", ""返回在 SysTabControl32 控件中当前显示的标签编号(从1开始,1代表左边第一个)."TabRight", ""使 SysTabControl32 控件切换到(右边的)下一个标签."TabLeft", ""使 SysTabControl32 控件切换到(左边的)下一个标签."SendCommandID", 命令 ID模拟 WM_COMMAND 消息. 通常用于 ToolbarWindow32 控件 - 使用Au3Info的工具栏标签得到命令ID.点击完成按钮的代码大D就不再敖述了。
点击完成按钮之后,弹出了一个IE浏览器窗口,这个很恼火的说,那就干掉这个窗口,这里要用到AU3中的进程管理函数。
这里大D先说方法:
第一种方法:检测窗口文本,等待指定窗口出现,然后关闭。
第二种方法:检测进程名是否存在,存在则关闭进程。
先列出需要用到的函数。
ProcessExists
检查指定进程是否存在.
ProcessExists ( "进程" )


ProcessClose
终止某个进程.
ProcessClose ( "进程")
以上两个函数,每隔250毫秒对进程进行检测。
两种方法的具体实现代码就不写出来了。
相信大家肯定能写出来。
最后放出大D写的这个安装脚本的源码。