nsis的固实(solid)压缩原理

nsis的固实(solid)压缩
问题由解压框而来
解压框显示的逻辑是这样的
1,运行第一步是进行crc校验,校验的过程大约4kb的步长读取exe文件,并做crc校验,每一次校验检查当前校验时间是否已经超过了1s,超过则展现解压框
2,压缩文件时固实算法是,将所有文件按照如下格式 |FileSize|FileContent|FileSize2|FileContent2|... 将所有文件拼成一个大buffer,然后进行lzma压缩
     解压时,每解压一个文件设定一个500ms的超时,若解压这个文件的过程中超过了此阈值,则显示解压框
     解压某个文件时,传入这个文件解压后所在大buffer中的偏移,因此,解压过程是先从头至尾一点点解压这个dabuffer,一旦已解压的数据满足了取出这个offsert-size大小的要求即返回,因此若此文件在压缩过程中比较靠后,就会导致需要把前面的所有文件都解压出才能解压出这个文件的问题
     解压框与主窗体是互斥的,因此一旦安装的主窗体创建,则不会显示解压框

解决:
1,保证压缩的顺序与解压顺序一致,这样可以将单个文件的解压时间放到最小
2,init以及插件dll保证最小使用
3,使用resverfile强制约束某些文件优先压缩
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值