xyw04 发表于 2010-1-11 17:42:30

自动安装程序的安装过程,改用进度条显示

大家,我是AUTOIT的新成员,也是新手。

最近一直研究自动安装软件, 经过了解,基本上能做出一个自动安装的软件了。

但自动安装过程中,总是自动点点点的,烦死人了。

所以想问题,做把安装过程,改成静态,变成进度条,把自动点点点的过程隐藏掉。

小弟在这里弱弱的问下,请问见怪。 新人新手。

afan 发表于 2010-1-11 18:27:27

如果安装文件支持隐藏操作那就很容易

xyw04 发表于 2010-1-11 19:39:29

如果不支持,需要怎么操作才行?

131738 发表于 2010-1-11 20:54:15

好像走开一会就不烦了......没见过有软件能隐藏安装的.....

xyw04 发表于 2010-1-11 21:09:37

本来我也不知道,但最近看到电脑疯子的DIY版系统,里面有软件管理箱,箱里的软件大都是隐藏安装的,呵呵。

奋起了我再深入学习的心思。

C.L 发表于 2010-1-12 08:21:36

本帖最后由 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:25:21

本帖最后由 C.L 于 2010-1-12 08:33 编辑

Opt("WinDetectHiddenText", 1)
这个参数要使用,隐藏后就可以读到控件ID。
然后:
$hwin = WinGetHandle($title)

      WinSetState($hwin, "", @SW_HIDE)


不过好像不是所有的安装程序都可以支持隐藏,我自已做的安装基本都可以按这个实现,你自已试试你的安装软件能不能也这样。

kn007 发表于 2010-1-12 08:25:47

那是加了静默参数,安装的,当然啥都没显示。。。。

C.L 发表于 2010-1-12 08:35:28

那是加了静默参数,安装的,当然啥都没显示。。。。
kn007 发表于 2010-1-12 08:25 http://www.autoitx.com/images/common/back.gif

版主,我上面的那个例子,没有加安装软件的静默参数的。只是用AU3隐藏而已。

kn007 发表于 2010-1-12 08:36:23

回复 9# C.L


    恩,我知道,我回答的是5楼,呵呵

C.L 发表于 2010-1-12 08:39:45

回复C.L


    恩,我知道,我回答的是5楼,呵呵
kn007 发表于 2010-1-12 08:36 http://www.autoitx.com/images/common/back.gif

哦,我会错意,不好意思,呵呵~~

kn007 发表于 2010-1-12 08:41:28

回复 11# C.L


    没事,是我的错

cls822001 发表于 2010-1-12 10:16:00

汗都聊上天了。。。。。。

hzxymkb 发表于 2010-1-12 14:32:58

回复 12# kn007

Kn007我真的很佩服你!

kn007 发表于 2010-1-12 15:53:06

回复kn007

Kn007我真的很佩服你!
hzxymkb 发表于 2010-1-12 14:32 http://www.autoitx.com/images/common/back.gif


    ?佩服我干嘛!?莫名其妙,别乱拍马屁啊
页: [1] 2
查看完整版本: 自动安装程序的安装过程,改用进度条显示