用 AU3 脚本来安装软件?嗯,对的。 大家或许见过某些高人做的软件自动安装器,这 些安装器在安装软件时会神奇的自动点 击软件安装过程的每一步,自动化程度很高。但是不要感觉这东西太神秘了,只需要十几分 钟,我们自己也可以写出这种“神奇”的软件自动安装脚本。 在说用 AU3 脚本来实现软件的自动安装前,我们要先再看几个 AU3 函数。 1>WinWaitActive 作用:暂停脚本的执行直至指定窗口被激活(成为可活动状态)为止 语法:WinWaitActive ( "窗口标题", ["窗口文本"], [超时时间] ) 2> WinClose 作用:关闭指定窗口 语法:WinClose ( "窗口标题" [, "窗口文本"] ) 3>Send 59 作用:向激活窗口发送模拟键击操作 语法:Send ( "按键" [, 标志] ) 参数: 标志 = 0 (默认),按键序列中含有的特殊字符比如 + 和 ! 将被视为 SHIFT 和 ALT 键。 标志 = 1,按键将按原样发送。 4>SendX 作用:向激活窗口发送中文字符 语法:SendX ( "字符",标志) 参数: 标志,必需,设置为 0 或者非 1 为剪切板模式,1 为发送 ASC 模式 WinWaitActive 和 Send 函数是我们的主角,WinWaitActive 用于等待某窗口的出现和激 活,Send 用来发送一些键盘事件。有了能做这两件事都函数,我们就能做许多事情了。 下面,我以暴风影音的自动安装为例写一个自动安装脚本。 首先,我们需要启动暴风影音的安装程序。将 自动安装脚本与暴风影音安装包放置于同 层目录下,使用如下代码调用暴风影音安装程序启动, Run(@ScriptDir & "\Storm.exe") 暴风影音启动后出现如下所示界面, 这时我们就需要使用WinWaitActive 函数了。WinWaitActive 的语法是: WinWaitActive ( "窗口标题", ["窗口文本"], [超时时间] ) “窗口标题”表示窗口标题中的文本,可以写标题中的全部文本,也可以写标题中的部 分文本。如果只写部分,则应当选取比较有代表性的部分,例如上图中的“暴风影音 V3”。 “窗口文本”是个可选参数,但是强烈建议写上,以更好地识别安装提示窗口。“ 窗口 文本”的内容可以选取当前窗口中比较有代表性的文本,例如上图中的“欢迎使用”。 60 如果担心手工判断“窗口标题”与“窗口文本”会出现错误,建议初学者使用 AU3 工 具箱中的“窗口信息工具”。 这是个相当好的工具,可以显示所选窗口中的所有相关信息。 “超时时间”代表着如果WinWaitActive 的等待时间超过了超时时间,那么就不等待并 继续执行WinWaitActive 后面的语句。 那么,我们使用如下语句等待上图的出现和激活, WinWaitActive("暴风影音 V3","欢迎使用") 这时,我们需要使用键盘的“Alt+N”来单击“下一步”按钮,这样一来我们就必须要 用到 Send 函数。使用如下代码来发送“Alt+N”, Send("!N") “Alt+N”发送完成后进入下图界面, 同第一个界面一样,我们进行类似的处理: 第一,等待上图窗口的出现与激活; 第二,单击“我接受”按钮。 语句如下: WinWaitActive("暴风影音 V3","用户许可协议") Send("!I") 在接受了许可协议后,我们进入了下面的窗口: 61 这个窗口中有一个让我们填写软件安装路径的文本框,如果我们需要重新填写,那么我 们就必须要用到 SendX 函数了。SendX 最大的一个好处就是支持中文,这就意味着我们可 以填写中文路径了(方便起见,我还是使用英文路径给大家展示)。使用 SendX 的有一点要 注意,就是使用 SendX 函数时必须在代码的最开始处添加: #include <ACN_String.au3> 做好 SendX 的前提工作后,我们就可以修改我们需要的安装路径了。 WinWaitActive("暴风影音 V3","选择安装位置") SendX("D:\Softwares",0) Send("!I") 当我们发送完“Alt+I”之后也就是按下“安装”按钮后,安装过程将开始执行,如下 图, 62 安装过程结束后,会自动弹出下图的提示框, 由于此时默认的选中位置在上图中的“运行 暴风影音”处,所以如果我们想去掉这个 复选框的对号,只需要按下空格键就可以了。代码如下: WinWaitActive("暴风影音 V3","正在完成") Send("{Space}") “{Space}”代表着空格键,类似的还有“{TAB}”代表 TAB 键,“ {ENTER}”代表主 键盘区的回车键,{UP} 向上箭头 ,{DOWN} 向下箭头 ,{LEFT} 向左箭头 ,{RIGHT} 向右箭头等等,如果想了解更多请参与 AU3 帮助文档中关于 Send 命令的部分。 63 随后我们发送“Alt+F”来完成安装。 Send("!F") 到这里,我们就写完了关于暴风影音安装的 AU3 脚本。这只是个范例脚本,只用于给 大家讲解关于 WinWaitActive 函数、Send 函数、SendX 函数等的应用,请勿生搬硬套,要学 会灵活使用,根据不同的情况写出相应的脚本。 总结一下暴风影音的自动安装脚本,再加上一些额外的功能,代码如下: #include <ACN_String.au3> Dim $Path If Not(FileExists(@ScriptDir & "\Storm.exe")) Then MsgBox(0+16,"错误","暴风影音安装文件 Storm.exe 未发现!") Else If FileExists(@ScriptDir & "\InstallPath.ini") Then $Path=IniRead(@ScriptDir & "\InstallPath.ini","InstallPath","Path","") Else $Path="" EndIf Run(@ScriptDir & "\Storm.exe") WinWaitActive("暴风影音 V3","欢迎使用") Send("!N") WinWaitActive("暴风影音 V3","用户许可协议") Send("!I") WinWaitActive("暴风影音 V3","选择安装位置") If $Path<>"" Then SendX($Path,0) Sleep(300) EndIf Send("!I") WinWaitActive("暴风影音 V3","正在完成") Send("{Space}") Send("!F") EndIf 这个脚本中添加了一些内容,我简单的说一下。 $Path, 这个变量用来记录软件安装路径, 这个变量的值由一个外部配置文件 InstallPath.ini 读取,InstallPath.ini 的 InstallPath 段 Path 键记录着软件的安装路径。这样我们 可以在不更改代码的情况下变更软件的安装路径。这个配置文件的内容如下: [InstallPath] Path = D:\Softwares 当这个配置文件不存在,或者配置文件里 Path 的值为空,那么软件则按照默认路径进 行安装。 大家是否看明白了呢?不太懂?不用着急,我同样建议初学者不要使用复杂的代码,代 码越简单越好,能实现功能就可以。随着缩写程序的增多,基础的增强,渐渐的就不再怕复 杂的代码了。 AU3 脚本实现自动安装的方法就讲到这里。 AU3 脚本实现软件的自动安装有诸多优点,特别是可自定义性极强,可以根据个人需 64 要定制安装路径、安装模式等等,但是不可回避的,AU3 脚本实现软件的自动安装也有一 定的缺点,不稳定便是一个。 由于 AU3 脚本是通过等待窗口的激活并发送键盘或鼠标事件来实行自动安装的,如果 在脚本执行过程中有键盘动作或者有鼠标动作都会影响安装过程。所以,如果使用 AU3 脚 本来控制软件的自动安装,一定要加一个提示,即“请勿在软件自动安装过程中使用键盘或 鼠标”。 不管怎么说,使用 AU3 脚本来实现软件自动安装是时下比较流行的一种方法。写自动 安装脚本时一定要多尝试、多变通,不要模仿,要在理解了以后自己动脑动手。希望这一小 节能给大家带来便利。 现在可以大吼一声:让高手们的“神奇的”软件自动安装见鬼去吧,现在我们都可以亲 手写软件的自动安装脚本!
|