在已签名的 MSI 中是否应对可执行文件和动态库进行签名

Should executables and dynamic libraries be signed when inside an MSI that is signed

当在已签名的 MSI(或 Inno Setup exe)中时,是否应该对可执行文件和动态库进行签名?

好像没关系,因为Windows没有抱怨,但我想确认一下。

这似乎归结为一个问题,即您何时以及为何签署给定文件。正如您所注意到的,对安装文件进行签名很有帮助,这样 UAC 提示就不会那么不祥了。此参数也适用于用户可能提升的任何 EXE 文件。

之后,归结为偏好和权衡问题。 Windows Logo guidelines/certifications 通常要求对所有 PE 文件进行签名,所以这是我传统上推荐的。驱动程序是这种情况的特例; Windows 的最新版本可能要求对它们进行签名,但签名需求与普通 PE 文件不同。

如果这些都不适合您(即如果您不关心徽标,也没有驱动程序),您还有哪些目标?

  • 如果用户查看文件的详细信息,您是否关心他们看到的内容?
  • 您关心确保文件完整性吗?1
  • 实施此签名需要多少费用? (大概只需要一点时间 space,因为听起来您已经有了证书。)

1 请注意,签署 bootstrap 或 .msi 不一定会验证 exe 的内容;只有当他们在驾驶室中并且驾驶室本身已签名或包含在已签名的 .msi 中时,它才会这样做。否则 Windows 安装程序通常只按位置和文件版本验证 EXE 文件。