Wix3 Bundle签名后体积翻倍问题求助
Wix3 Bundle签名后体积翻倍的解决建议
问题描述
尝试对Wix3 Bundle签名,签名后的bundle.exe可正常运行,但体积翻倍。操作流程如下:
- 从800MB的bundle.exe中提取出约4MB的Burn引擎engine.exe,执行命令:
insignia.exe -ib bundle.exe -o engine.exe # 或 wix burn detach bundle.exe -engine engine.exe - 使用SignServer对engine.exe签名,签名后engine.exe体积变为800MB(与原bundle.exe大小一致),签名命令:
signclient.cmd signdocument ^ -host xxx.xxx.com -port 443 -workerid 6 ^ -infile ../in/engine.exe -outfile ../out/engine.exe ^ -keystore ..\keys\xxx.p12 -keystorepwd xxx ^ -truststore ../keys/codesign.jks -truststorepwd xxx ^ -clientside -digestalgorithm SHA-256 - 将签名后的engine.exe重新附加到bundle.exe,得到1600MB的bundle.exe;
- 最后对bundle.exe签名。
解决建议
1. 排查SignServer签名配置与参数
- 检查SignServer的签名Worker配置,确认是否启用了附加原始文件或类似会导致输出文件包含冗余内容的选项,这类配置可能错误地将原bundle的内容合并到engine.exe中。
- 核对签名命令的输入输出路径:确认
../in/engine.exe确实是提取出的4MB文件,而非误指向原bundle.exe;输出路径../out/engine.exe未被其他文件覆盖。 - 尝试移除
-clientside参数测试:该参数可能触发客户端侧的特殊处理逻辑,导致文件异常膨胀。
2. 验证engine.exe签名前后的完整性
- 提取engine.exe后,先记录其MD5/SHA256哈希值;签名完成后再次校验哈希,确认签名过程中是否被替换为其他文件(比如原bundle.exe)。
- 用压缩工具(如7-Zip)打开签名后的engine.exe,查看内部结构,确认是否包含了原bundle的所有内容,以此判断是签名工具的问题还是流程误操作。
3. 换用本地签名工具测试
使用Windows自带的signtool.exe对提取出的engine.exe进行签名,命令示例:
signtool sign /f xxx.p12 /p xxx /fd SHA256 engine.exe
如果签名后engine.exe体积仅增加几十KB(正常签名的大小增量),则说明问题出在SignServer的配置或命令参数上,需针对性调整SignServer的Worker设置。
4. 调整Bundle签名流程
若无需单独签名Burn引擎即可满足运行要求,可尝试先对所有子MSI/MSP文件签名,再构建Bundle,最后直接对整个bundle.exe签名,跳过提取-签名-附加engine的步骤,看是否能正常运行且体积正常。
内容的提问来源于stack exchange,提问作者Daniel Wang
相关产品推荐
相关产品推荐

