使用 Inno Setup 进行条件签名

Conditional signing with Inno Setup

我正在使用 Inno Setup 6.0.3 并想控制是否通过命令行签署(卸载)安装程序。目前,我的 Setup.iss 看起来像这样:

SignedUninstaller=true
SignTool=...

我想通过 parameter/environment variable/whatever 禁用签名。

我该怎么做?

这样做的原因是我想在我们的开发人员工作站上禁用签名,而在我们的 CI 服务器上,(卸载)安装程序应该被签名。

Inno Setup 编译器完全支持命令行自定义参数,如其 Guide 中所述。

因此您可以在 Setup.iss 文件中定义自己的自定义参数:

; CASE 1) "iscc.exe Setup.iss /DSIGN_UNINSTALLER=1"  -> SIGN UNINSTALLER
; CASE 2) "iscc.exe Setup.iss                       -> SIGN UNINSTALLER
; CASE 3) "iscc.exe Setup.iss /DSIGN_UNINSTALLER=0"  -> DOES NOT SIGN UNINSTALLER
; Enable by default (case 2)
#ifndef SIGN_UNINSTALLER
  #define SIGN_UNINSTALLER "1"
#endif

...

#if SIGN_UNINSTALLER == "1"
  SignedUninstaller=true
  SignTool=...
#endif