搜索
有爱,有技术,有你^_^)y
╱人◕‿‿◕人╲订下契约(注册新用户)

合作站点账号登陆

QQ登录

只需一步,快速开始

快捷导航
查看: 2568|回复: 1
收起左侧

[普通教程] [FWD]使用AutoIt3制作自动安装脚本

[复制链接]

该用户从未签到

25

主题

21

好友

1万

积分

第一章

积分
10837
发表于 2012-3-8 00:30:20 | 显示全部楼层 |阅读模式

╱人◕‿‿◕人╲定下契约

您需要 登录 才可以下载或查看,没有账号?╱人◕‿‿◕人╲订下契约(注册新用户)

x
本帖最后由 Bugsong 于 2012-12-26 11:50 编辑

原创发表于:使用AutoIt3制作自动安装脚本 | 大D综合研究院

原文链接:http://www.dadclab.com/archives/1046

本文采用知识共享署名-非商业性使用-相同方式共享 2.5 中国大陆许可协议进行许可。

协议查看链接http://creativecommons.org/licenses/by-nc-sa/2.5/cn/


一、需要的环境
Autoit3 3.3.7.15第一汉化版
传送门在此(请各位猛戳) :http://autoit-cn.googlecode.com/files/AUTOIT_3.3.7.15.1.exe
安装就不多说了大家都会~

二、简单介绍及制作思路先简单介绍一下AU3
AutoIt(读音aw-tow-it)是一个用于Windows的免费自动化语言。在它的早期发布版本中这个软件主要旨在为微软Windows程序创建自动化脚本(有时也称为宏)但现在已经成长为包含了编程语言设计和全面功能的增强的软件。
在版本3中AutoIt的语法结构调整为接近于BASIC系列的语言。它是使用经典数据模型、利用可以存储多种数据类型包括数组的变量类型的第三代编程语言。它兼容于Windows 9598MENT42000XP2003Vista以及Windows 7(在3.3.0版本中终止了对Windows 2000之前操作系统的支持)。
AutoIt自动化脚本可以编译成压缩、单一的可执行文件这样的文件可以运行在没有安装AutoIt解释器的计算机上。广泛的函数库(称为UDF或“用户定义函数”)包含在程序中或可以从网站中下载通过他们可以添加许多专用的功能。AutoIt的安装程序中还自带了基于SciTE的IDE。其中集成了编译器和帮助文本从而为使用AutoIt的开发者提供了事实上的标准环境。
以上来自维基百科略有修改。
思路
既然是自动安装脚本实现的功能自然是自动安装啦(MS是一句废话)。
安装过程中需要操作的最简单的就是点击下一步了再就是取消一些选项例如设置XXX为主页啊运行XXX啊。
那么脚本需要完成的就是这些点击下一步和取消单选框选中状态。

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

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

                               
登录/注册后可看大图

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

窗口脚本可以更好地帮助脚本确认窗口超时时间可以让脚本在暂停一段时间之后跳过该函数继续执行。
1
WinWait("下载吧 - 极品五笔 Win2000/Xp/Windows 7通用型 安装","欢迎使用 “极品五笔” 安装向导")

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

                               
登录/注册后可看大图

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

ControlClick("下载吧 - 极品五笔 Win2000/Xp/Windows 7通用型 安装","","[CLASS:Button; INSTANCE:2]","left",1)

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

                               
登录/注册后可看大图

安装程序界面分析二
使用窗口信息化工具分析安装完成界面可见设置主页的这个选项是一个按钮那么即可以使用ControlClick来完成也可以使用另外一个函数。
ControlCommand向指定控件发送命令.ControlCommand ( “窗口标题”, “窗口文本”, 控件ID, “命令” , “选项”)
其中最后一个参数——选项为可选参数。基本不用。
这里放出代码
1
ControlCommand("下载吧 - 极品五笔 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写的这个安装脚本的源码。


Run("jpwb_7.0.exe")
WinWait("下载吧 - 极品五笔 Win2000/Xp/Windows 7通用型 安装","欢迎使用 “极品五笔” 安装向导")
ControlClick("下载吧 - 极品五笔 Win2000/Xp/Windows 7通用型 安装","","[CLASS:Button; INSTANCE:2]","left",1)
WinWait("下载吧 - 极品五笔 Win2000/Xp/Windows 7通用型 安装","正在完成 “极品五笔” 安装向导")
ControlCommand("下载吧 - 极品五笔 Win2000/Xp/Windows 7通用型 安装","正在完成 “极品五笔” 安装向导",1204,"uncheck")
ControlClick("下载吧 - 极品五笔 Win2000/Xp/Windows 7通用型 安装","正在完成 “极品五笔” 安装向导","[CLASS:Button; INSTANCE:2]","left",1)
WinWait("","Internet Explorer")
ProcessClose("iexplore.exe")


评分

参与人数 1宅币 +50 贡献 +10 元气(技能点) +5 收起 理由
xushine + 50 + 10 + 5

查看全部评分

签名被小宅喵吞掉了~~~~(>_<)~~~~
回复

使用道具 举报

该用户从未签到

1

主题

1

好友

267

积分

游客

积分
267
发表于 2012-3-17 14:13:19 | 显示全部楼层
好东西  感谢分享
签名被小宅喵吞掉了~~~~(>_<)~~~~
回复 支持 反对

使用道具 举报

本版积分规则

小黑屋|手机版|技术宅(Z站|基宅) ( 粤ICP备18082987号-1 )

GMT+8, 2025-5-2 10:13 , Processed in 0.078693 second(s), 23 queries , Redis On.

Copyright © 2018 技术宅社区

Powered by Discuz! X3.5

快速回复 返回顶部 返回列表