You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Inno Setup代码签名证书报错:找不到指定文件

排查Inno Setup卸载程序签名失败的问题

我来帮你一步步定位这个signtool签名失败的问题,从几个常见的排查方向入手:

  • 先手动执行签名命令,获取详细错误信息
    Inno Setup调用signtool时可能不会展示完整的错误提示,建议你:

    1. 复制问题里的签名命令(确保密码是正确的)
    2. 打开管理员权限的命令提示符(或PowerShell)
    3. 如果signtool不在系统PATH里,先cd到它所在的目录(比如Windows SDK的bin文件夹)
    4. 执行这个命令,查看具体的错误提示——signtool会返回明确的错误码或描述(比如证书无效、密码错误、文件被锁定、时间戳服务器不可达等),这是定位问题最关键的一步。
  • 检查代码签名证书的有效性

    • 双击你的.p12证书,查看「详细信息」→「增强密钥使用」,确认包含「代码签名」的用途,如果证书是用于其他用途(比如SSL),那肯定无法签名可执行文件。
    • 确认证书没有过期,也没有被吊销。
    • 可以尝试把.p12证书导入到本地计算机的「个人」证书存储,然后修改Inno Setup的签名配置,用证书的指纹(Thumbprint)来调用签名,这种方式有时候比直接指定.p12文件更稳定,能避免文件路径或权限问题。
  • 排查文件与权限问题

    • 确保uninst.e32.tmp文件没有被其他进程占用(比如杀毒软件的实时扫描、文件管理器预览等),可以尝试把这个临时文件复制到桌面,再手动用signtool签名测试。
    • 运行Inno Setup时也切换到管理员权限,避免因文件访问权限不足导致签名失败。
  • 更换时间戳服务器测试
    你当前使用的Symantec时间戳服务器偶尔会出现访问不稳定的情况,可以换成其他公开的SHA256时间戳服务器试试,比如:

    • 把命令里的/tr http://sha256timestamp.ws.symantec.com/sha256/timestamp替换为/tr http://timestamp.digicert.com
    • 或者/tr http://timestamp.sectigo.com
  • 确认signtool版本兼容性
    旧版本的signtool可能不支持/fd sha256参数,你需要确保使用的是Windows SDK 8.1及以上版本的signtool,它完整支持SHA256签名和RFC 3161时间戳协议(/tr参数)。

另外,也可以检查Inno Setup的[Setup]段中SignTool配置是否存在语法错误,比如路径里的空格是否正确用引号包裹,参数顺序是否符合signtool的要求。

内容的提问来源于stack exchange,提问作者ThunderSoul97

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:12:25