数字签名和外部 Cabinet 文件

Windows Installer 可使用数字签名来检测已损坏资源。 安装外部资源时,可根据包中创作的参考签名者证书来验证属于该资源的签名者证书。 安装程序无法验证内部 cabinet 的签名。 它只能使用 MsiDigitalSignature 表MsiDigitalCertificate 表来验证数字签名。

在安装存储在外部 cabinet 中的文件时,Windows Installer 执行以下操作:

  • 安装程序会检查该外部 cabinet 的介质条目是否在 MsiDigitalSignature 表中列出。 存储在外部 cabinet 中的文件是通过其在 Media 表的 Cabinet 列中有一个不带“#”字符前缀的条目来标识的。
  • 在打开外部 external 之前,安装程序会调用 WinVerifyTrust 来提取当前证书和哈希信息。 如果 cabinet 上的当前签名信息与包中创作的签名信息不匹配,则安装将失败。 安装失败的原因是 cabinet 可能已被入侵,无法信任。

有关使用数字签名、数字证书和 WinVerifyTrust 的详细信息,请参阅 Microsoft Windows 软件开发工具包 (SDK) 的安全性部分。

有关详细信息,请参阅 MsiGetFileSignatureInformationMsiDigitalCertificate 表MsiDigitalSignature 表