在旧版本到期时,在WiX补丁中提供新证书

时间:2015-07-07 15:53:17

标签: wix certificate patch signing msp

背景

我正在研究确定WiX是否是InstallShield的可行替代方案。因此,我一直在测试我们工作所面临的每个场景,以确保WiX能够处理它们。但是,我在一个问题上难以接受。当证书即将过期时,我们需要创建一个包含新证书的补丁,并在旧证书过期之前对其进行签名,以便在没有管理员提升提示的情况下进行无缝补丁。

问题

关于如何在互联网上完成此操作,没有太多文档。我尝试过添加

<DigitalCertificate Id="MyNewCertificate" SourceFile="{PATH_TO_NEW_CERTIFICATE}"/>

到wxs文件中的PatchCertificates元素,用于生成MSI文件,然后使用旧的和新的MSI文件生成MSP文件。当我用7zip打开MSP文件时,我可以看到新证书嵌入其中。当我在一个锁定的帐户上测试时,此修补程序在没有提升提示的情况下应用,但是新证书签名的下一个修补程序显示了提升提示。

我尝试了什么

我尝试按照https://wyrdfish.wordpress.com/2012/07/20/writing-a-parallel-update/中的步骤创建&#34; parallel&#34;更新,但进行修改使其与PatchCreation一起使用,而不是Patch。我匹配了所有属性更改,但它仍然显示了提升提示。

Wyrdfish评论说&#34;当证书过期时很有趣,因为你需要使用修补程序来交付旧证书在过期之前签署的新证书,这样你就可以通过未来补丁中的新证书。 &#34;在http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/Require-admin-rights-to-msp-td7586837.html中,但没有提供有关如何操作的详细信息。这个帖子已经两年了,所以我非常怀疑我会在那里得到答复。

我也尝试使用新证书在signtool.exe中提供/ ac参数,但是出现了交叉签名错误。

我究竟做错了什么?在新的MSI文件中,没有其他更改,只有新的DigitalCertificate元素,它反映在MSP中。我是否需要包含某种文件更改或其他内容?或签署过程是问题吗?

1 个答案:

答案 0 :(得分:1)

我的补丁发现了问题。对于运行类似问题的任何人,您需要在PatchCreation的PatchSequence元素中指定ProductCode,它与用于构建MSI的产品ID的GUID相同。我没有这个参考,这显然引起了问题。现在它没有为管理员提升。将此与相关链接中指示的步骤相结合,您就可以进行LUA修补。