aardio 官方社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 13215|回复: 9

解压资源文件中的7ZIP文件并将进度显示到进度条该如何实现?

[复制链接]

5

主题

13

回帖

106

积分

一级会员

积分
106
发表于 2018-1-5 17:13:38 | 显示全部楼层 |阅读模式
萌新求教。框架搭好了,但是搜索了下论坛,不是很了解现在的sevenZip.decoder2到底该如何实现解压

我需要解压资源文件中的7ZIP文件并在进度条显示解压进度,解压完成后关闭窗口,该如何实现?

170

主题

2184

回帖

1万

积分

管理员

积分
13236
发表于 2018-1-5 17:43:18 | 显示全部楼层
这里有例子呀
http://bbs.aardio.com/forum.php? ... 35&highlight=7z

已经演示了如何获取进度,你加个进度条就行了

5

主题

13

回帖

106

积分

一级会员

积分
106
 楼主| 发表于 2018-1-5 18:03:21 | 显示全部楼层


因为看的不是很懂=。=
抱歉
我水平很烂。只用过AUTOIT和PERL
不知道哪一句是解压命令,顺便问下,这个不用循环来处理解压么?一直以为需要循环,然后再结束前不断
更新进度条。。。

170

主题

2184

回帖

1万

积分

管理员

积分
13236
发表于 2018-1-5 18:16:33 | 显示全部楼层
吃虫子的橙 发表于 2018-1-5 18:03
因为看的不是很懂=。=
抱歉
我水平很烂。只用过AUTOIT和PERL

aardio解压7z的代码非常简单。
但你要实现进度条,怎么可能是一句命令的事呢?!

看这个帖子吧:
分分钟写个7z自解压程序 - 带上漂亮界面可以用来做安装向导
http://bbs.aardio.com/forum.php?mod=viewthread&tid=22125

整个程序并没有几句代码:
import win.ui;
/*DSG{{*/
var winform = win.form(text="7z自解压演示";right=670;bottom=300;image=$"\res\bg.jpg";max=false;min=false;parent=...)
winform.add(
pie={cls=
"plus";text="100%";left=39;top=22;right=323;bottom=284;background="\res\pie-bg.png";clipBk=false;color=16777215;font=LOGFONT(h=-24);foreRepeat="center";foreground="\res\pie.png";repeat="center";z=1}
)
/*}}*/

//设置扇形进度条范围
winform.pie.setPieRange(1,100);
winform.show()

import sevenZip.decoder2;
var archive = sevenZip.decoder2();
archive.open( io._exepath )

//设置解压进度
archive.extractSetCompleted = function(lowSize,hiSize,percent){
    winform.pie.text = percent +
"%";
    winform.pie.progressPercentage = percent;
}
archive.extract(
"/")

win.loopMessage();

7z.jpg

170

主题

2184

回帖

1万

积分

管理员

积分
13236
发表于 2018-1-5 18:18:53 | 显示全部楼层
另外不懂的话,最好具体说下是哪句不懂呢。

对于基础语法不懂可以参考aardio语法手册,扩展库不懂的话可以参考下工具中的:库函数文档

5

主题

13

回帖

106

积分

一级会员

积分
106
 楼主| 发表于 2018-1-5 18:33:56 | 显示全部楼层
Jacen.He 发表于 2018-1-5 18:18
另外不懂的话,最好具体说下是哪句不懂呢。

对于基础语法不懂可以参考aardio语法手册,扩展库不懂的话可 ...


感谢大大恢复,刚才在看函数说明,解压已经完成了。你们的帮助文档很完善,再次感谢
    if( !archive.open("/res/QQ.7Z") ){
        winform.msgbox("打开压缩包出错");
        return;
        }
       

        archive.extractSetCompleted = function(lowSize,hiSize,percent){
        
        winform.progress.pos = percent;
        }
       
       
       
        if( archive.extract(installPath)){
        winform.msgbox("已完成所有操作")
        }

对了。大大。问下。每次进度条还没到100%大概2/3位置就会提示已经完成,有木有办法让进度条100%了再提示?

170

主题

2184

回帖

1万

积分

管理员

积分
13236
发表于 2018-1-5 19:05:12 | 显示全部楼层
吃虫子的橙 发表于 2018-1-5 18:33
感谢大大恢复,刚才在看函数说明,解压已经完成了。你们的帮助文档很完善,再次感谢
    if( !archive ...

测试了并没有出现你所说的问题,最好是发完整代码,不完整的话猜来猜去的费事,估计你的winform.progress 没有正确设置进度范围,pos不是percent

5

主题

13

回帖

106

积分

一级会员

积分
106
 楼主| 发表于 2018-1-5 19:17:54 | 显示全部楼层
本帖最后由 吃虫子的橙 于 2018-1-5 19:21 编辑
Jacen.He 发表于 2018-1-5 19:05
测试了并没有出现你所说的问题,最好是发完整代码,不完整的话猜来猜去的费事,估计你的winform.progress ...


这个是代码。请大大帮忙看下,还在完善中
谢谢大大帮助

170

主题

2184

回帖

1万

积分

管理员

积分
13236
发表于 2018-1-5 19:20:08 | 显示全部楼层
你需要设置进度条的范围,如果是百分比,你设置为1到100就可以了,这些问题先看一下控件文档吧。

plus控件不一样,他直接就有个设置百分比的属性。系统进度条没这个东西。

5

主题

13

回帖

106

积分

一级会员

积分
106
 楼主| 发表于 2018-1-5 19:21:04 | 显示全部楼层
Jacen.He 发表于 2018-1-5 19:20
你需要设置进度条的范围,如果是百分比,你设置为1到100就可以了,这些问题先看一下控件文档吧。

plus控 ...

=。=我看到了原先我设置成1-100的。。可能是我女儿不小心把我的删掉了。感谢大大
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

手机版|未经许可严禁引用或转载本站文章|aardio.com|aardio 官方社区 ( 皖ICP备09012014号 )

GMT+8, 2024-4-15 04:46 , Processed in 0.064247 second(s), 25 queries .

Powered by Discuz! X3.5

Copyright © 2001-2023 Tencent Cloud.

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