admin管理员组

文章数量:1533920

2024年1月13日发(作者:)

这编文章主要是总结自己在编写200906软件自动安装包中脚本的经验,以便与提高自己编写脚本的能力。其实自动脚本的编写很简单,我只用了一个星期的时间学习,就能够自己编写脚本了,但是要写好就不容易,主要是要反复测试。

200906软件自动安装包中的软件安装器是论坛的software installer 2.0版本(见图1)。

这是个软件安装器可以自由选择安装路径是非常好的一个软件,下面我把自己在编写脚本时的有关情况进行一下总结

以软件包中迅雷 v5.8.9.662为例,脚本开头的代码如下:

Local $InstallPath

If $Cmdline[0] <> 0 Then

$InstallPath = $Cmdline[1]

EndIf

这段代码具体的意思,我也不是很清楚,但是你要想用software installer 2.0这个安装器,就必须以这段代码开头。

Run(@ScriptDir & "")

这段代码的意思是运行当前脚本所在的目录中的软件,其中,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/?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 <> "" Then

Send("{del 33}")

Send($InstallPath & "" & "Thunder")

EndIf

send("!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 <> "" Then

Send("{BACKSPACE 33}")

Send($InstallPath & "" & "TencentQQ")

EndIf

send("!i")

再回到迅雷安装步骤。

路径选择完后,执行下一步,会出现两种情况。

第一种情况,进入下一个步骤,见图9

这种情况的代码如下:

WinWait("安装 - 迅雷5","准备安装")

WinWaitActive("安装 - 迅雷5","准备安装")

Send("!I")

第二种情况,会出现文件夹存在,见图10

这种情况代码如下:

if WinActive("文件夹存在") = 1 Then

Send("{enter}")

EndIf

意思是检查“文件夹存在”窗口是否存在,如果存在就按“回车”键,如果不存在就执行EndIf后面的代码。这个代

码执行完后就会回到第一种情况。当第一种情况的代码执行完后就会出现下面的界面(见图11)。

这个是软件正在安装的界面,我们不管理它,当安装完成后,我们会看到下面的界面(图12):

当迅雷安装到最后一个界面时,IE浏览器弹出,并使安装界面不在激活状态,我要用下面的代码解决:

WinWait("安装 - 迅雷5","迅雷5 安装向导完成")

WinActivate("安装 - 迅雷5","迅雷5 安装向导完成")

While 1

Select

Case ProcessExists("")

ProcessClose("")

ExitLoop

Case ProcessExists("")

ProcessClose("")

ExitLoop

EndSelect

Wend

其中WinActivate命令是激活指定的窗口,While 1….Wend是一个循环命令,Select…Case…EndSelect是一个多选择命令,ProcessExists命令是检查指定进程是否存在,ProcessClose命令是结束指定进程。ExitLoop命令是跳出循环。整个代码的意思是,不停的检查是否有IE和傲游浏览器进程,有的话就结束相应的进程并跳出循环。大家要注意了,如果没有IE和傲游浏览器进程的话,这个循环就是一个死循环,永远会循环下去,因此,大家一定要惕用。大家可以根据这个代码中的多选择命令的特点,把检查和结束其它浏览器的进程的代码添加进行。这段代码执行后见图13:

WinWait("安装 - 迅雷5","迅雷5 安装向导完成")

WinWaitActive("安装 - 迅雷5","迅雷5 安装向导完成")

Send("{DOWN}")

Send("{Space}")

Send("{DOWN}")

Send("{Space}")

Send("!F")

EXIT

这段代码的意思是,取消“将迅雷看看设为IE首页”和“启动迅雷5”的选项,并按“完成”,结束软件的安装,退出脚本。

关于浏览器弹出的情况,刚才我已经说过了,但还有一种情况,就是有的软件会在安装过程结束后,弹出浏览器,我们可以在脚本最后加上上面说的循环命令。

总结一下自己的学习过程,一是多看AU3的帮助,二是多研究别人的代码,三是多编写脚本,四是反复进行测试,五是多向大家请教。

Abc

由于本人AU3水平有限,不到之处,请批评指正。最后,感谢论坛提供学习的机会和大家给我的帮助。

本文标签: 安装软件命令选择脚本