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

Inno Setup代码签名未覆盖所有文件 如何修复实现全文件签名?

问题原因

Inno Setup默认不会给所有打包文件自动调用签名工具,只有[Files]段条目带signonce或signifexists标志时,才会触发你在SignTool配置栏填写的签名命令。你当前的ISS脚本里,只有主程序EXE的条目加了signonce标志,其余通过通配符*匹配的DLL、OCX等文件没有加签名标志,自然不会被签名。
另外你当前配置的签名命令里存在拼写错误:signtol.exe应为signtool.exe,少写了一个字母l,该错误会直接导致签名调用失败。

解决方案

你可以任选以下一种方案实现全文件签名:

  • 方案1:直接修改ISS脚本(推荐,无需额外工具)
    给通配符匹配文件的[Files]条目补上signonce标志即可,Inno Setup会在打包前自动递归遍历匹配到的所有支持格式的文件,调用签名工具完成签名,且signonce会自动跳过已经签过名的文件,不会重复执行。
    修改后的[Files]段参考如下:

    [Setup]
    SignTool=ASIAMX_signtool
    
    [Files]
    Source: "{#APP_EXE_NAME}"; DestDir: "{app}"; \
        Flags: ignoreversion signonce; Permissions: everyone-full
    ; 给通配符条目追加signonce标志
    Source: "*"; DestDir: "{app}"; \
        Flags: ignoreversion recursesubdirs createallsubdirs signonce; \
        Permissions: everyone-full
    

    如果不想给目录下所有文件都签名,可以单独写匹配规则指定要签名的文件类型,示例:

    ; 单独对所有DLL、OCX文件执行签名
    Source: "*.dll"; DestDir: "{app}"; \
        Flags: ignoreversion recursesubdirs createallsubdirs signonce; Permissions: everyone-full
    Source: "*.ocx"; DestDir: "{app}"; \
        Flags: ignoreversion recursesubdirs createallsubdirs signonce; Permissions: everyone-full
    
  • 方案2:使用批处理提前批量签名
    你找到的批处理方案需要在Inno执行打包编译前运行,先给所有待打包的源文件完成签名,再走打包流程。

    1. 先修正原批处理的语法错误,替换其中的路径、证书密码参数为你自己的配置,保存为sign_files.bat放到待打包程序的源文件根目录:
    @echo off
    :: 以下参数替换为你本地的实际配置
    set SIGNTOOL="c:\{path}\signtool.exe"
    set CERT="{Certificate path}\DMCC_Microsoft_Key.pfx"
    set PWD="你的证书密码"
    set TS="http://timestamp.digicert.com"
    
    :: 递归遍历当前目录下所有exe、dll、ocx文件执行签名
    FOR /f "tokens=*" %%G IN ('dir /s /b *.dll *.ocx *.exe') DO (
        echo Signing: %%G
        %SIGNTOOL% sign /f %CERT% /tr %TS% /p %PWD% "%%G"
    )
    echo All files signed.
    
    1. 你可以选择手动双击运行这个批处理,等所有文件签名完成后再编译ISS脚本;也可以在ISS脚本开头加预处理指令,让Inno编译前自动执行批处理,无需手动操作:
    ; 编译前自动运行签名批处理
    #expr Exec("sign_files.bat", "", SourcePath, , SW_HIDE, ewWaitUntilTerminated, ResultCode)
    
验证方式

打包生成安装文件后,可先通过资源管理器查看安装包内打包的DLL文件属性,若存在「数字签名」选项卡且显示你的签名证书信息,即为配置成功。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 18:54:24