为何相同环境下Inno Setup编译的安装包大小差异巨大?
这种情况我之前帮同事排查过,大概率是编译时的细节配置或环境差异导致的,以下是几个最常见的原因,你可以逐一核对:
压缩配置差异:这是最常见的原因。Inno Setup的
Compression指令决定了压缩级别和算法,比如你可能用了low甚至none(无压缩),而同事设置了ultimate(最高压缩级别);另外SolidCompression指令如果开启,会把所有文件合并成一个数据流压缩,压缩率会比默认模式高很多。你可以对比一下双方脚本里的这两个关键指令。意外包含额外文件:虽然是同一源代码,但你的本地编译环境里可能混入了临时文件、调试日志、本地生成的中间资源(比如编译过程中产生的缓存文件),这些文件被脚本里的通配符
Source指令误打包进去了。可以查看编译时的输出日志,对比双方打包的文件列表,就能发现差异。Inno Setup环境的组件差异:如果你的Inno Setup安装了第三方插件(比如自定义向导组件、脚本扩展工具),这些插件可能会被默认嵌入到安装包中,或者影响编译时的资源处理逻辑。而同事的Inno Setup是纯净版,没有这些额外组件,所以生成的包更小。
源文件的预压缩状态不同:即使是同一源码,你们本地的文件可能有细微差别——比如你的图片、二进制文件是未压缩的原始状态,而同事提前用工具(比如图片压缩器、UPX对exe文件压缩)处理过这些文件,Inno Setup再打包时自然会得到更小的结果。
编译时的隐式条件差异:有些脚本里会根据编译环境的变量或条件,动态包含不同的资源。比如你本地开启了某个调试相关的环境变量,导致脚本打包了额外的调试资源;或者你和同事的脚本里
#ifdef这类预编译指令的触发条件不同,进而影响了打包内容。
内容的提问来源于stack exchange,提问作者Hand-E-Food

