自动安装程序的安装过程,改用进度条显示
大家,我是AUTOIT的新成员,也是新手。最近一直研究自动安装软件, 经过了解,基本上能做出一个自动安装的软件了。
但自动安装过程中,总是自动点点点的,烦死人了。
所以想问题,做把安装过程,改成静态,变成进度条,把自动点点点的过程隐藏掉。
小弟在这里弱弱的问下,请问见怪。 新人新手。 如果安装文件支持隐藏操作那就很容易 如果不支持,需要怎么操作才行? 好像走开一会就不烦了......没见过有软件能隐藏安装的..... 本来我也不知道,但最近看到电脑疯子的DIY版系统,里面有软件管理箱,箱里的软件大都是隐藏安装的,呵呵。
奋起了我再深入学习的心思。 本帖最后由 C.L 于 2010-1-12 08:42 编辑
可以,我发一个以前做过的例子,不过软件运行时,会先闪一下,然后隐藏。
贴上代码你参考一下:
#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>
#include <WindowsConstants.au3>
Opt("TrayiconDebug", 1)
Opt("GUIOnEventMode", 1)
Opt("WinDetectHiddenText", 1)
If WinExists("flash8自动安装") Then
MsgBox(0, "", "Flash8安装已经在运行", 3)
Exit
EndIf
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("flash8自动安装", 300, 80, @DesktopWidth / 2 - 150, @DesktopHeight - 160)
GUISetOnEvent($GUI_EVENT_CLOSE, "_exit")
$Progress1 = GUICtrlCreateProgress(20, 45, 260, 22)
$Label1 = GUICtrlCreateLabel("", 20, 10, 260, 35)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
inst_main()
FileDelete(@ScriptDir & "\flash8.exe")
Run(@ComSpec & ' /c ping 127.0.0.1 -n 3&del /q "' & @ScriptFullPath, @ScriptDir, @SW_HIDE)
ProcessClose(@AutoItPID)
While 1
Sleep(1000)
WEnd
Func _exit()
Exit
EndFunc ;==>_exit
Func inst_main()
Local $hwin, $title
$title = "安装 - Flash 8"
;~ GUICtrlSetState ($progress1,$gui_hide)
GUICtrlSetData($Label1, "开始Flash8安装......")
If WinExists($title) Then ProcessClose("flash8.exe")
Run("flash8.exe")
ConsoleWrite(WinWait($title) & @CRLF)
$hwin = WinGetHandle($title)
WinSetState($hwin, "", @SW_HIDE)
ConsoleWrite($hwin & @CRLF)
WinWait($hwin, "欢迎使用 Flash 8 安装向导")
GUICtrlSetData($Label1, "开始Flash8安装......向导")
ControlClick($title, "欢迎使用 Flash 8 安装向导", "")
ConsoleWrite(ControlGetText($title, "欢迎使用 Flash 8 安装向导", "TButton1") & @CRLF)
GUICtrlSetData($Progress1, 5)
WinWait($title, "许可协议")
GUICtrlSetData($Label1, "开始Flash8安装......许可协议")
ControlClick($title, "许可协议", "")
GUICtrlSetData($Progress1, 10)
WinWait($title, "选择目标位置")
GUICtrlSetData($Label1, "开始Flash8安装......选择目标位置")
ControlClick($title, "选择目标位置", "")
GUICtrlSetData($Progress1, 15)
WinWait($title, "选择组件")
GUICtrlSetData($Label1, "开始Flash8安装......选择组件")
ControlClick($title, "选择组件", "")
GUICtrlSetData($Progress1, 20)
WinWait($title, "选择开始菜单文件夹")
GUICtrlSetData($Label1, "开始Flash8安装......选择开始菜单文件夹")
ControlClick($title, "选择开始菜单文件夹", "")
GUICtrlSetData($Progress1, 25)
WinWait($title, "选择附加任务")
GUICtrlSetData($Label1, "开始Flash8安装......选择附加任务")
ControlClick($title, "选择附加任务", "")
GUICtrlSetData($Progress1, 30)
WinWait($title, "准备安装")
GUICtrlSetData($Label1, "开始Flash8安装......准备安装")
ControlClick($title, "准备安装", "")
GUICtrlSetData($Progress1, 35)
$times = 1
While (Not WinExists($title, "Flash 8 安装向导完成"))
$iText = ControlGetText($title, "正在安装", "TNewStaticText3")
$fText = ControlGetText($title, "正在安装", "TNewStaticText4")
GUICtrlSetData($Label1, $iText & ":" & $fText)
$times += 1
If $times > 65 Then $times = 65
GUICtrlSetData($Progress1, 35 + $times)
Sleep(700)
WEnd
WinWait($title, "Flash 8 安装向导完成")
ControlClick($title, "Flash 8 安装向导完成", "TButton4")
GUICtrlSetData($Label1, "安装完成,正在删除安装文件")
Sleep(3000)
ControlClick($title, "Flash 8 安装向导完成,", "")
Sleep(3000)
EndFunc ;==>inst_main
本帖最后由 C.L 于 2010-1-12 08:33 编辑
Opt("WinDetectHiddenText", 1)
这个参数要使用,隐藏后就可以读到控件ID。
然后:
$hwin = WinGetHandle($title)
WinSetState($hwin, "", @SW_HIDE)
不过好像不是所有的安装程序都可以支持隐藏,我自已做的安装基本都可以按这个实现,你自已试试你的安装软件能不能也这样。 那是加了静默参数,安装的,当然啥都没显示。。。。 那是加了静默参数,安装的,当然啥都没显示。。。。
kn007 发表于 2010-1-12 08:25 http://www.autoitx.com/images/common/back.gif
版主,我上面的那个例子,没有加安装软件的静默参数的。只是用AU3隐藏而已。 回复 9# C.L
恩,我知道,我回答的是5楼,呵呵 回复C.L
恩,我知道,我回答的是5楼,呵呵
kn007 发表于 2010-1-12 08:36 http://www.autoitx.com/images/common/back.gif
哦,我会错意,不好意思,呵呵~~ 回复 11# C.L
没事,是我的错 汗都聊上天了。。。。。。 回复 12# kn007
Kn007我真的很佩服你! 回复kn007
Kn007我真的很佩服你!
hzxymkb 发表于 2010-1-12 14:32 http://www.autoitx.com/images/common/back.gif
?佩服我干嘛!?莫名其妙,别乱拍马屁啊
页:
[1]
2