指南 - 编辑自动安装 WinZip 脚本

这个指南说明如何编写自动安装 WinZip 9 SR-1 的脚本. 我们假设您已经能够熟练创建/运行一个脚本了, 也能熟练使用 AutoIt 窗口信息 来取得窗口的标题和文本, 参考 HelloWorldNotepad 指南.

 

WinZip 的安装过程大约有10个对话框窗口. 我们将要写的脚本很简单, 就是等待这些对话框出现, 然后点击适当的按钮即可. 通常安装程序会有很多窗口的标题是一样的 (WinZip Setup), 因此我们必须使用窗口文本来判断不同的窗口. 下面提供了每个对话框的截图, 实际安装中您可以点击这些对话框, 然后在 窗口信息工具 中查看它们显示的相应信息.

 

首先创建一个文件夹, 复制 WinZip 的安装程序(winzip11.exe)到此目录,新建一个名为 winzipinstall.au3 的空脚本文件置于同一文件夹之下:

 

现在我们一步一步来讲解编写自动安装程序脚本的步骤. 每个对话框的截图下都会有进行到该步骤的相应脚本代码(别忘了可以点击这些对话框的截图, 查看它们在窗口信息工具中显示的相应信息). 此外您还可以参考 完整脚本.

 

第一行代码非常简单, 我们要运行名为 winzip90.exe 的安装程序. 因此此行脚本应该是这样的:

Run("winzip90.exe")

 

第一个显示的对话框:

我们需要等待这个窗口弹出, 并成为激活状态, 然后我们需要发送 Alt + s 模拟点击 “Setup” 按钮:

WinWaitActive("WinZip(R) 9.0 SR-1 Setup", "&Setup")
Send("!s")

(请记住点击对话框查看 AutoIt 窗口信息工具中的信息, 这一点尤其重要, 要手工输入标题包含的注册商标特殊字符 (R) 是有困难的,但复制/粘贴就能很容易解决).

 

出现安装位置选择对话框:

我们需要等待该对话框激活, 然后发送 Enter 模拟点击默认按钮"OK", 接受默认安装位置. 在脚本中输入:

WinWaitActive("WinZip Setup", "into the following folder")
Send("{ENTER}")

 

出现 WinZip 功能概述对话框如下:

请注意,这个窗口与上一个 WinZip 安装窗口有完全相同的名称- 事实上大部分安装程序所有的对话框都设置了相同的窗口标题! 为了区分这些窗口, 我们必须使用窗口文本- 您可以在每个对话框中尝试挑选最独特的文字. 这里我们选择文字“ WinZip features include”. 然后发送 ALT+n 模拟点击按钮"Next"按钮

WinWaitActive("WinZip Setup", "WinZip features include")
Send("!n")

 

显示许可协议对话框:

等候此窗囗出现, 然后发送 Alt + y 模拟点击"Yes"按钮接受协议:

WinWaitActive("License Agreement")
Send("!y")

 

安装程序会以上述同样的方式继续. 每个对话框图片连同自动化需要的脚本行一起显示在下面.

 

WinWaitActive("WinZip Setup", "Quick Start Guide")
Send("!n")

 

WinWaitActive("WinZip Setup", "switch between the two interfaces")
Send("!c")
Send("!n")

 

WinWaitActive("WinZip Setup", "&Express setup (recommended)")
Send("!e")
Send("!n")

 

WinWaitActive("WinZip Setup", "WinZip needs to associate itself with your archives")
Send("!n")

 

这是最后一个对话框. 请注意,“Finish” 按钮没有键盘快捷键, 但很幸运, 它是一个默认的按钮.因此我们可以发送 Enter 以选择它. 如果不是这样,我们将不得不使用 TAB 键在控件之间作出正确选择, 但更好的方法是使用 ControlClick 函数来解决这个问题.

WinWaitActive("WinZip Setup", "Thank you for installing this evaluation version")
Send("{ENTER}")

 

安装完成之后, WinZip 会自动启动:

我们只是等待主 WinZip 窗口出现, 然后使用WinClose 函数关闭它:

WinWaitActive("WinZip (Evaluation Version)")
WinClose("WinZip (Evaluation Version)")

 

这是 完整脚本 - 请注意, 脚本中我(作者)把每个对话框的步骤分开并添加了注释部分, 这样比较容易读懂, 而且方便将来进行修改 (因为下一个版本的 WinZip 安装对话框可能会略有不同)

 

大功告成! 现在运行一下 winzipinstaller.au3 这个脚本吧, 您会看到 WinZip 将在很短的时间之内被安装好! 在此页使用的技术也可用来实现大多数程序的自动化安装

 

作为一个练习, 请尝试再编写一次这个脚本, 但不要使用 Send 函数(向激活窗口发送键击动作), 试试用 ControlClick 函数, 这个函数会使脚本更加可靠. 在此之前您或许应该熟读关于 控件 的说明.

 

provider with jb51.net (unicode)