如何在不在 OS 上安装任何东西的情况下自动签署代码?

How to sign code automatically without installing anything on any OS?

我们已经设置了一个流程来使用 Microsoft 的 SIGNTOOL 手动签署我们的代码。我们使用 NSIS 生成安装包,是时候开始自动化代码签名过程以及部分 NSIS 脚本了。

我们不使用 windows SDK 进行开发,因此不希望对我们的开发人员提出这样的要求。我们在 Mac 和 Linux 上也有一些人;任何人都可以制作安装程序,而安装程序制作者有望自动签署代码。我们正在使用 PFX 文件对代码进行签名。

所以基本上我想弄清楚,"how can I sign code without installing anything, except maybe one tiny file, so that it works on all three major OSes"。使用 NSIS 进行自动化处理,但在没有任何 OS 的 Windows SDK 的情况下进行处理不是。

无论如何,代码签名在所有这些操作系统中都是不同的过程,因此根据定义没有任何共同之处。您必须使用 SDK 提供的工具。唯一的共同点可能是证书,这在 iOS/Android/Windows 中也有所不同,因为 MS/Google/Apple 希望您使用他们自己的根证书。

就是说,在 Windows 中不一定需要 SDK 来签署文件,Signing API.

安装 Windows SDK 后,可以将 Signtool 复制到任何地方。只需从 "C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\" 或等效项复制 signtool.exe 并将其作为实用程序包含在您的安装程序文件中。

然后 NSIS 脚本可以使用此 exe 在 windows 上运行时自动签署安装程序。在 Mac 上运行时,需要一个开关来使用 Mac 上固有的协同设计工具。

卸载程序的签名可能会稍微复杂一些,因为它通常要到安装时才会生成;仅供参考:https://nsis.sourceforge.io/Signing_an_Uninstaller