Inno Setup 6.4.0是否更改压缩算法?安装包体积大于6.3.3版本
Inno Setup 6.4.0压缩率下降的原因及解决方案
在使用相同LZMA2压缩参数的情况下,6.4.0版本生成的安装包体积大于6.3.3及更早版本,核心原因是版本间的压缩默认行为变更,以下是具体分析和解决办法:
1. 固实压缩的文件排序逻辑变更
- 6.3.3及更早版本默认使用深度相似性排序(
SolidCompressionSortMethod=1):会按文件类型、内容相似性对文件分组,最大化固实压缩的冗余数据利用率,从而提升压缩率。 - 6.4.0版本为了加快编译速度,默认改为快速目录排序(
SolidCompressionSortMethod=0):仅按目录结构排序,文件分组的冗余度降低,直接导致固实压缩效果下降。 - 解决办法:手动添加
SolidCompressionSortMethod=1,强制恢复旧版本的排序逻辑。
2. LZMA2压缩库的优化优先级调整
6.4.0升级了内置的LZMA2压缩库,默认优化方向从极致压缩率转向编译速度。即使你指定了ultra64级别,新库的默认策略仍可能在小字典、小块大小的配置下牺牲部分压缩率换取速度。
- 解决办法:添加
LZMAOptimizeFor=size参数,明确告知编译器优先追求压缩体积。
3. 其他可能影响压缩率的隐性设置
EnableLargePages:6.4.0默认开启该参数提升编译性能,但部分环境下可能干扰压缩算法的最优执行,可尝试设置EnableLargePages=no。CompressionForce:如果存在部分文件被自动跳过深度压缩的情况,可添加CompressionForce=yes强制对所有文件应用指定的压缩参数。
调整后的完整配置示例
Compression=lzma2/ultra64 SolidCompression=yes SolidCompressionSortMethod=1 LZMABlockSize=262144 LZMADictionarySize=1048576 LZMANumFastBytes=273 LZMAUseSeparateProcess=yes LZMAOptimizeFor=size EnableLargePages=no
内容的提问来源于stack exchange,提问作者Drakul
相关产品推荐
相关产品推荐

