找回密码
 加入
搜索
查看: 7057|回复: 19

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

 火.. [复制链接]
发表于 2010-1-11 17:42:30 | 显示全部楼层 |阅读模式
大家,我是AUTOIT的新成员,也是新手。

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

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

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

小弟在这里弱弱的问下,请问见怪。 新人新手。
发表于 2010-1-11 18:27:27 | 显示全部楼层
如果安装文件支持隐藏操作那就很容易
 楼主| 发表于 2010-1-11 19:39:29 | 显示全部楼层
如果不支持,需要怎么操作才行?
发表于 2010-1-11 20:54:15 | 显示全部楼层
好像走开一会就不烦了......没见过有软件能隐藏安装的.....
 楼主| 发表于 2010-1-11 21:09:37 | 显示全部楼层
本来我也不知道,但最近看到电脑疯子的DIY版系统,里面有软件管理箱,箱里的软件大都是隐藏安装的,呵呵。

奋起了我再深入学习的心思。
发表于 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 安装向导", "[CLASS:TButton; Text:下一步(&N) >]")
        ConsoleWrite(ControlGetText($title, "欢迎使用 Flash 8 安装向导", "TButton1") & @CRLF)
        GUICtrlSetData($Progress1, 5)
        WinWait($title, "许可协议")
        GUICtrlSetData($Label1, "开始Flash8安装......许可协议")
        ControlClick($title, "许可协议", "[CLASS:TButton; Text:下一步(&N) >]")
        GUICtrlSetData($Progress1, 10)
        WinWait($title, "选择目标位置")
        GUICtrlSetData($Label1, "开始Flash8安装......选择目标位置")
        ControlClick($title, "选择目标位置", "[CLASS:TButton; Text:下一步(&N) >]")
        GUICtrlSetData($Progress1, 15)
        WinWait($title, "选择组件")
        GUICtrlSetData($Label1, "开始Flash8安装......选择组件")
        ControlClick($title, "选择组件", "[CLASS:TButton; Text:下一步(&N) >]")
        GUICtrlSetData($Progress1, 20)
        WinWait($title, "选择开始菜单文件夹")
        GUICtrlSetData($Label1, "开始Flash8安装......选择开始菜单文件夹")
        ControlClick($title, "选择开始菜单文件夹", "[CLASS:TButton; Text:下一步(&N) >]")
        GUICtrlSetData($Progress1, 25)
        WinWait($title, "选择附加任务")
        GUICtrlSetData($Label1, "开始Flash8安装......选择附加任务")
        ControlClick($title, "选择附加任务", "[CLASS:TButton; Text:下一步(&N) >]")
        GUICtrlSetData($Progress1, 30)
        WinWait($title, "准备安装")
        GUICtrlSetData($Label1, "开始Flash8安装......准备安装")
        ControlClick($title, "准备安装", "[CLASS:TButton; Text:安装(&I)]")
        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 安装向导完成,", "[CLASS:TButton; Text:完成(&F)]")
        Sleep(3000)

EndFunc   ;==>inst_main

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×

评分

参与人数 1金钱 +20 收起 理由
afan + 20

查看全部评分

发表于 2010-1-12 08:25:21 | 显示全部楼层
本帖最后由 C.L 于 2010-1-12 08:33 编辑

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

        WinSetState($hwin, "", @SW_HIDE)


不过好像不是所有的安装程序都可以支持隐藏,我自已做的安装基本都可以按这个实现,你自已试试你的安装软件能不能也这样。
发表于 2010-1-12 08:25:47 | 显示全部楼层
那是加了静默参数,安装的,当然啥都没显示。。。。
发表于 2010-1-12 08:35:28 | 显示全部楼层
那是加了静默参数,安装的,当然啥都没显示。。。。
kn007 发表于 2010-1-12 08:25


版主,我上面的那个例子,没有加安装软件的静默参数的。只是用AU3隐藏而已。
发表于 2010-1-12 08:36:23 | 显示全部楼层
回复 9# C.L


    恩,我知道,我回答的是5楼,呵呵
发表于 2010-1-12 08:39:45 | 显示全部楼层
回复  C.L


    恩,我知道,我回答的是5楼,呵呵
kn007 发表于 2010-1-12 08:36


哦,我会错意,不好意思,呵呵~~
发表于 2010-1-12 08:41:28 | 显示全部楼层
回复 11# C.L


    没事,是我的错
发表于 2010-1-12 10:16:00 | 显示全部楼层
汗都聊上天了。。。。。。
发表于 2010-1-12 14:32:58 | 显示全部楼层
回复 12# kn007

Kn007我真的很佩服你!
发表于 2010-1-12 15:53:06 | 显示全部楼层
回复  kn007

Kn007我真的很佩服你!
hzxymkb 发表于 2010-1-12 14:32



    ?佩服我干嘛!?莫名其妙,别乱拍马屁啊
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-16 19:42 , Processed in 0.087599 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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