aardio 官方社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 6136|回复: 5

是否无法解压嵌入EXE资源的7Z文件?

[复制链接]

5

主题

13

回帖

106

积分

一级会员

积分
106
发表于 2018-1-6 10:22:06 | 显示全部楼层 |阅读模式
直接运行的时候是可以解压的,但是编译成EXE后,将7Z添加到资源文件中后,运行出错,代码如下:


  1. var appName = ("/res/qq.7z");
  2. if( !archive.open(appName) ){

  3.         winform.msgbox("程序出错,请重新下载!");

  4.         return;
  5. }
复制代码


编译成EXE后运行就弹出错误了。但是如果直接运行代码则可以

5

主题

13

回帖

106

积分

一级会员

积分
106
 楼主| 发表于 2018-1-8 16:16:15 | 显示全部楼层
求哪位大大赐教下,我现在只能先通过$"/res/qq.7z",然后先拷贝到TEMP临时目录再解压到安装目录,有没有办法直接解压呢?

170

主题

2184

回帖

1万

积分

管理员

积分
13236
发表于 2018-1-8 16:27:18 | 显示全部楼层
已经给了你例子了,压缩文件追加到EXE尾部就可以,7z就可以解压。
7z并不支持从资源文件中解压,如果一定要有这需求,请联系7zip作者进一步沟通。
当然,我担心他不会鸟你,因为你有更简单的方法,可以追加到EXE尾部。

0

主题

22

回帖

167

积分

一级会员

积分
167
发表于 2018-1-8 16:30:31 | 显示全部楼层
吃虫子的橙 发表于 2018-1-8 16:16
求哪位大大赐教下,我现在只能先通过$"/res/qq.7z",然后先拷贝到TEMP临时目录再解压到安装目录,有没有办法 ...

http://bbs.aardio.com/forum.php? ... &extra=page%3D1

170

主题

2184

回帖

1万

积分

管理员

积分
13236
发表于 2018-1-8 16:31:11 | 显示全部楼层
如果只是内存压缩解压,根本不需要用7z,
用7z提供的lzma算法就可以,在aardio中就是 sevenZip.lzma 这个库。

多个文件打包到一个文件可以用electron提供的asar格式,aardio中的实现( fsys.asar )支持内存解包。

170

主题

2184

回帖

1万

积分

管理员

积分
13236
发表于 2018-1-8 16:33:51 | 显示全部楼层
另外,如果是aardio的资源文件,是没有任何必要去压缩的。
难道你写一个20MB的EXE,你会不压缩就提供给用户?! 本来最后就都要压缩。
资源文件再去压缩一遍,这不是多此一举吗。

有时候,想一想你是不是把简单的事复杂化了。
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

GMT+8, 2024-4-15 03:27 , Processed in 0.054391 second(s), 22 queries .

Powered by Discuz! X3.5

Copyright © 2001-2023 Tencent Cloud.

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