我遇到了突发问题。通常,我能够以某种方式构建MSI安装包的修补程序,以便在应用修补程序时不需要管理员权限 - 从而可以从标准用户帐户更新已安装的应用程序。 Bootstrapper EXE,安装包MSI和补丁MSP都使用相同的有效证书签名。
然而,现在,我突然遇到一个问题,这个问题不再适用。安装补丁时,会弹出UAC对话框,询问管理员密码。因此,我启用了修补程序安装的日志记录,这是Microsoft安装程序告诉我的:
MSI (s) (58:40) [09:11:17:787]: Certificate of signed file 'C:\Windows\Installer\23f85ae.msp' differs in size with the certificate authored in the package
MSI (s) (58:40) [09:11:35:025]: MSI_LUA: Credential Request return = 0x800704C7
This installation is forbidden by system policy. Contact your system administrator.
但我用(exe,msi,msp)签署所有文件的证书是一样的。 有什么建议? (WIX用于创作安装包)
编辑: 此外,我试图从构建的MSI和MSP包中提取证书,它们的大小相同。所以我真的不明白为什么我在修补程序的Microsoft Installer日志中收到错误消息。
答案 0 :(得分:2)
我正在研究同样的问题。当尝试安装.msp补丁时,安装程序给了我相同的消息:“签名文件证书'C:\ Windows \ Installer ..... msp'的大小与包中创建的证书不同”
我想分享我的解决方案。我花了两天时间搞清楚。
我的问题是我在MsiPatchCertificate表中嵌入的证书格式不同。它必须是DER格式。要将证书从PEM转换为DER格式,请使用:
openssl x509 -outform der -in cert.pem -out cert.cer
答案 1 :(得分:0)
好的我终于找到了这个问题,确实有一个证书被写入包中,其截止日期早已过去。关于为什么仅在现在和不久之前遇到安装问题仍然存在神秘感。
哦,好吧......