这编文章主要是总结自己在编写200906软件自动安装包中脚本的经验,以便与提高自己编写脚本的能力。
其实自动脚本的编写很简单,我只用了一个星期的时间学习,就能够自己编写脚本了,但是要写好就不容易,主要是要反复测试。
200906软件自动安装包中的软件安装器是论坛的software installer 2.0版本(见图1)。
这是个软件安装器可以自由选择安装路径是非常好的一个软件,下面我把自己在编写脚本时的有关情况进行一下总结以软件包中迅雷 v5.8.9.662为例,脚本开头的代码如下:Local $InstallPathIf $Cmdline[0] <> 0 Then$InstallPath = $Cmdline[1]EndIf这段代码具体的意思,我也不是很清楚,但是你要想用software installer 2.0这个安装器,就必须以这段代码开头。
Run(@ScriptDir & "\Thunder.exe")这段代码的意思是运行当前脚本所在的目录中的Thunder.exe软件,其中,RUN是运行命令,@ScriptDir是当前运行中的脚本所在的目录(不包括结尾的反斜杠符号)。
&是使两个字符串连接起来,后面的代码则是你要安装的软件的文件名。
这个代码运行后会出行如下界面(见图2)本帖隐藏的内容WinWait("安装 - 迅雷5","欢迎使用迅雷5 安装向导")WinActivate("安装 - 迅雷5","欢迎使用迅雷5 安装向导")WinWaitActive("安装 - 迅雷5","欢迎使用迅雷5 安装向导")Send("!N")WinWait命令是暂停脚本的执行直至指定窗口存在(出现)为止。
WinActivate命令是激活指定的窗口。
WinWaitActive 命令是暂停脚本的执行直至指定窗口被激活(成为可活动状态)为止。
这段代码有的人会说只用WinWait和WinWaitActive就可以了,为什么我要在这里加一个WinActivate命令,主要是考虑我们平时装软件时,不可能只装一个,如果我们装的软件较多,加上电脑配臵不高的话,可能会导致安装第二个软件时,软件安装界面不在激活状态(这种情况我遇到过),因此,为了安装顺利我认为在这个地方加上WinActivate命令还是有必要的。
Send命令是模拟键盘动作,意思是按ALT+N,其它的键盘按键,大家可以看AU3帮助中Send命令的参数。
除了模拟键盘外AU3还提供了模拟鼠标动作,大家可以用ControlClick命令,具体用法可以看小穆的教程(他主要以模拟鼠标动作为主)。
/bbs/viewthread.php?tid=18186&fromuid=9516,上面的代码执行后(见图3)WinWait("安装 - 迅雷5","许可协议")WinWaitActive("安装 - 迅雷5","许可协议")Send("!A")send("!N")这段代码是指捕抓到窗口后,先按ALT+A键,后ALT+N键。
执行后(见图4)WinWait("安装 - 迅雷5","选择附加任务")WinWaitActive("安装 - 迅雷5","选择附加任务")Send("{Space}")Send("!N")这段代码和上面是一样的意思,注意在选项选择时,我们可以用Send("{TAB}")和Send("{DOWN}")命令进行选项的选择,用Send("{Space}")启用和关闭选项。
有时有些软件不能用键盘动作进行选择时,可以用鼠标动作ControlClick 命令进行。
如QQ2009软件 (见图5)这种情况的代码可以这样编写:WinWait("腾讯QQ2009 安装向导","请选择自定义安装选项与快捷方式选项")WinWaitActive("腾讯QQ2009 安装向导","请选择自定义安装选项与快捷方式选项") ControlClick("腾讯QQ2009 安装向导","请选择自定义安装选项与快捷方式选项","Button9") ControlClick("腾讯QQ2009 安装向导","请选择自定义安装选项与快捷方式选项","Button8") ControlClick("腾讯QQ2009 安装向导","请选择自定义安装选项与快捷方式选项","Button10") ControlClick("腾讯QQ2009 安装向导","请选择自定义安装选项与快捷方式选项","Button11") ControlClick("腾讯QQ2009 安装向导","请选择自定义安装选项与快捷方式选项","Button7") send("!N")再回到迅雷安装步骤,见图6:WinWait("安装 - 迅雷5","百度超级搜霸轻松搜索,拦截广告!")WinWaitActive("安装 - 迅雷5","百度超级搜霸轻松搜索,拦截广告!")Send("{Space}")Send("!N")捕抓到窗口后,取消“百度超级搜霸”的安装,并按“下一步”,执行后(见图7):WinWait("安装 - 迅雷5","选择目标位臵")WinWaitActive("安装 - 迅雷5","选择目标位臵")If $InstallPath <> "" ThenSend("{del 33}")Send($InstallPath & "\" & "Thunder\")EndIfsend("!N")这段代码说实话具体什么意思我也不是很明白,我只能一行一行的说,前两行大家都知道了我就不说了。
If $InstallPath <> "" Then,这个是一个判断语句,其中$InstallPath是软件安装器software installer的选择路径变量,如果你在软件安装器中没有选择路径的话,就会执行EndIf后的代码,也就是直接按“下一步”。
如果你进行了路径选择,就会执行其后的代码。
Send("{del 33}")这个是:连续按“删除”键33次,其目的是删除软件安装路径框中的默认路径。
Send($InstallPath & "\" & "Thunder\")这个是:在软件安装路径框中输入路径。
例:如果你在软件安装器中选择软件的安装路径为d:盘的话,这段代码意思就是在软件安装路径框中输入“d:\Thunder\”。
有些软件在安装时,安装路径框不是选中状态,这个时候就要改一改上述的代码了,如200906软件自动安装包中的QQ 软件,见图8:遇到这种情况就要先用ControlClick命令选中软件路径输入框,然后用再用“退格”键,删除输入框中的默认路径。
具体代码如下:WinWait("腾讯QQ2009 安装向导","请选择安装路径")WinWaitActive("腾讯QQ2009 安装向导","请选择安装路径")ControlClick("腾讯QQ2009 安装向导","请选择安装路径","Edit1")If $InstallPath <> "" ThenSend("{BACKSPACE 33}")Send($InstallPath & "\" & "Tencent\QQ\")EndIfsend("!i")再回到迅雷安装步骤。
路径选择完后,执行下一步,会出现两种情况。
第一种情况,进入下一个步骤,见图9这种情况的代码如下:WinWait("安装 - 迅雷5","准备安装")WinWaitActive("安装 - 迅雷5","准备安装")Send("!I")第二种情况,会出现文件夹存在,见图10这种情况代码如下:if WinActive("文件夹存在") = 1 ThenSend("{enter}")EndIf意思是检查“文件夹存在”窗口是否存在,如果存在就按“回车”键,如果不存在就执行EndIf后面的代码。
这个代码执行完后就会回到第一种情况。
当第一种情况的代码执行完后就会出现下面的界面(见图11)。
这个是软件正在安装的界面,我们不管理它,当安装完成后,我们会看到下面的界面(图12):当迅雷安装到最后一个界面时,IE浏览器弹出,并使安装界面不在激活状态,我要用下面的代码解决:WinWait("安装 - 迅雷5","迅雷5 安装向导完成")WinActivate("安装 - 迅雷5","迅雷5 安装向导完成")While 1SelectCase ProcessExists("IEXPLORE.EXE")ProcessClose("IEXPLORE.EXE")ExitLoopCase ProcessExists("Maxthon.exe")ProcessClose("Maxthon.exe")ExitLoopEndSelectWend其中WinActivate命令是激活指定的窗口,While 1….Wend是一个循环命令,Select…Case…EndSelect是一个多选择命令,ProcessExists命令是检查指定进程是否存在,ProcessClose命令是结束指定进程。