找回密码
 加入
搜索
查看: 2532|回复: 12

本人自制的SFX安装器又一问题(autoit写的)(进度条)

[复制链接]
发表于 2009-8-15 20:31:55 | 显示全部楼层 |阅读模式
我现在所写的SFX安装器是用外部7zGUI(2.12MB,用uha压缩到726KB+个uhadosx86自解压 108KB)+上7z压缩包!如下图为7zGui版面

我想问问怎么搞进度条,然后又要能形成进度(某个文件解压后,进度条就回到某个地方,解压一定要以外部工具方式!别用fileinstall糊弄我),我现在不知怎么判断它(进度条)该走到哪?

最好又能在autoit的gui中显示,下图,我标记出来的文字

我的意思就是不要7zGUI,但是没之后,没有进度条,搞个进度条,又不知什么时候让他怎么走!?

http://www.autoitx.com/forum.php ... id=7644076#pid77653

本帖子中包含更多资源

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

×
发表于 2009-8-15 20:45:18 | 显示全部楼层
用 DirGetSize 获取目标文件夹内文件数量 比对 压缩包内文件总数 行不?
 楼主| 发表于 2009-8-15 21:01:53 | 显示全部楼层
应该可以,不知可不可以给个例子!?

DirGetSize

不是文件夹大小?
发表于 2009-8-15 21:11:48 | 显示全部楼层
DirGetSize ( "路径" [, 标志] )
标志: 1 = 启用扩展模式 -> 返回一个包含扩展信息的数组
在使用扩展模式时,本函数所返回的数组是个含有下列元素的一维数组:
$array[0] = 空间大小
$array[1] = 文件数
$array[2] = 文件夹数
 楼主| 发表于 2009-8-15 21:14:37 | 显示全部楼层
要是有跟进度条例子就更好了,我先试试
发表于 2009-8-16 00:30:06 | 显示全部楼层
给你写了个~
#include <GUIConstantsEx.au3>
#include <GuiEdit.au3>

$a = '自解压文件路径'
$b = '解压路径(监视目录)'
$c = '监视解压进度条'
$gui1 = GUICreate($c, 400, 130)
$button1 = GUICtrlCreateButton("执行解压及监视进度(Enter)", 180, 55, 210, 22)
GUICtrlSetState(-1, $GUI_DEFBUTTON)
$zjy = GUICtrlCreateInput($a, 5, 5, 310, 20)
$ll1 = GUICtrlCreateButton("浏览", 320, 4, 70, 22)
$jylj = GUICtrlCreateInput($b, 5, 30, 310, 20)
$ll2 = GUICtrlCreateButton("浏览", 320, 29, 70, 22)
$wjzs = GUICtrlCreateLabel("压缩包内文件总数:", 6, 59, 105, 20)
$zssr = GUICtrlCreateInput("", 110, 55, 50, 20, $ES_NUMBER)
$jdt = GUICtrlCreateProgress(5, 100, 390, 15)
GUISetState()

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit

                Case $ll1
                        $sTmpFile = FileOpenDialog("选择文件:", '', "自解压文件(*.exe)", 7)
                        If @error Then ContinueLoop
                        GUICtrlSetData($zjy, $sTmpFile)

                Case $ll2
                        $wjj = FileSelectFolder("选择文件夹,这里必须为自解压的释放文件夹,否则监视没意义。没有的话可以先新建。", "", 3)
                        If @error Then ContinueLoop
                        GUICtrlSetData($jylj, $wjj)

                Case $button1
                        If GUICtrlRead($zssr) = '' Or GUICtrlRead($zjy) = $a Or GUICtrlRead($jylj) = $b Then
                                MsgBox(262192, '问题', '请输入完整信息')
                        Else
                                jd()
                                MsgBox(262208, '完成', '解压完成 ')
                        EndIf
        EndSwitch
WEnd

Func jd()
        Run(GUICtrlRead($zjy))
        Do
                $a = DirGetSize(GUICtrlRead($jylj), 1)
                GUICtrlSetData($jdt, $a[1] / GUICtrlRead($zssr) * 100)
                Sleep(10)
        Until $a[1] = GUICtrlRead($zssr)
EndFunc   ;==>jd

本帖子中包含更多资源

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

×

评分

参与人数 2金钱 +100 贡献 +15 收起 理由
kn007 + 100 + 10 我很赞同 我没键盘,给多点分,谢2
lynfr8 + 5

查看全部评分

发表于 2009-8-16 00:43:28 | 显示全部楼层
压缩有什么办法监视进度?
我在研究微软的imagex.exe打包进度问题,但是一直无门。
但是AUTOIT官网的外客GIMAGEX却能够监视进度,不知道是基于什么原理。
发表于 2009-8-16 01:02:35 | 显示全部楼层
7# 四海皆狂龙

没用过imagex, 试试捕捉dos窗口信息吧,应该可以做得到。
发表于 2009-8-16 02:21:01 | 显示全部楼层
7# 四海皆狂龙

没用过imagex, 试试捕捉dos窗口信息吧,应该可以做得到。
afan 发表于 2009-8-16 01:02

没想到好方法,运行中在DOS窗口的是按百分比显示,我只能在image压缩完毕后才能获取信息。但这个时候已经是压缩完毕了,所以这个信息已经没有意义。我需要的是动态的信息。
GIMAGEX的显示,文件压缩到多少,还剩多少,进度条都有显示,比imagex直接运行看到的信息还要多。GIMAGEX是imagex的外壳,实际运行也是imagex。
在官方http://www.autoitscript.com/能找到这个软件,但是似乎不是开源的。
发表于 2009-8-16 02:30:36 | 显示全部楼层
本帖最后由 afan 于 2009-8-16 02:51 编辑
我需要的是动态的信息。
四海皆狂龙 发表于 2009-8-16 02:21


捕捉dos信息当然可以是动态的,搜索下“回显”吧,有些是执行完显示,但也有捕捉到即时显示的。

“运行中在DOS窗口的是按百分比显示” 有这条几乎就成了。

btw,跑LZ的题了,此话题打住。
发表于 2009-8-16 05:55:32 | 显示全部楼层
捕捉dos信息当然可以是动态的,搜索下“回显”吧,有些是执行完显示,但也有捕捉到即时显示的。

“运行中在DOS窗口的是按百分比显示” 有这条几乎就成了。

btw,跑LZ的题了,此话题打住。
afan 发表于 2009-8-16 02:30

你说的是这里吧
http://www.autoitx.com/forum.php ... &extra=page%3D1
我也试过了,这个是类似于内嵌,其实就是一个实时运行的DOS窗口。但能不能捕捉到我就不清楚了,因为我需要的是完成度以GUI的进度条来显示,而不是命令行显示。
发表于 2009-8-16 16:01:20 | 显示全部楼层
应该是能捕捉的,回显的就是cmd界面的字符
试试写个whil不断捕捉
发表于 2009-8-16 17:41:49 | 显示全部楼层
应该是能捕捉的,回显的就是cmd界面的字符
试试写个whil不断捕捉
lynfr8 发表于 2009-8-16 16:01

回显是DOS命令执行完后,才能得到结果。因为命令一直在执行,我就不知道怎么获取扫描和捕捉了。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-2 18:57 , Processed in 0.093880 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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