如何使用Inno Setup对安装/卸载程序及临时文件进行外部签名
关于Inno Setup OEM产品签名流程的解决方案
可以提前生成需要签名的文件,交由客户完成签名后再打包最终安装程序,具体操作思路和注意事项如下:
提取待签名文件
- 先调整Inno Setup脚本,注释掉所有
SignTool相关配置,避免编译时自动签名。 - 编译脚本生成未签名的安装程序包,在输出目录中获取主安装程序(如
setup.exe)和卸载程序(默认是unins000.exe,建议在脚本中指定固定名称便于识别)。 - 获取运行时
.tmp可执行文件:- 方式一:运行未签名的安装程序,在系统临时目录(
%temp%下的is-xxxx.tmp格式文件夹)中找到所有.tmp执行文件并复制保存。 - 方式二:使用命令行参数提取,执行
setup.exe /extract:"指定提取目录",直接导出安装包内所有文件,从中筛选出需要的.tmp文件。
- 方式一:运行未签名的安装程序,在系统临时目录(
- 先调整Inno Setup脚本,注释掉所有
客户签名操作
将提取到的setup.exe、卸载程序以及所有.tmp文件打包交付给客户,要求他们使用自身证书完成代码签名,且所有文件需采用相同的签名参数,避免后续运行时出现验证异常。重新打包最终安装程序
- 拿到已签名的文件后,替换掉之前编译生成的对应未签名文件。
- 保持Inno Setup脚本中
SignTool配置为注释状态(或配置为仅验证签名),重新编译脚本生成最终安装包;也可直接用7-Zip等工具打开原未签名安装包,替换内部已签名文件(需确保文件路径、名称完全一致)。
关键注意事项
- 确保提取的
.tmp文件与最终编译的安装程序版本完全匹配,避免版本不兼容导致运行错误。 - 完成打包后,务必测试完整的安装、卸载流程,验证所有文件的签名能被系统正常识别,无安全警告。
- 若脚本中自定义了卸载程序名称,需提前确认并统一,避免提取或替换时出错。
- 确保提取的
内容的提问来源于stack exchange,提问作者Leo.Zhou
相关产品推荐
相关产品推荐

