作为我们的客户端-服务器软件包的一部分,我们有一个颁发证书的自定义 CA。我需要能够将我们的 CA 作为受信任的根 CA 安装在每个用户的计算机上。为了实现此目的,我使用 WiX 的 IIS 管理包中的 Certificate
元素(该证书不适用于 IIS,但这符合我们的目的)。最初,我让安装程序将其放置在本地计算机存储中,但我们必须将安装程序设为每用户安装以避免需要提升权限,因此我现在必须将其存储在本地用户存储中。
我已将存储位置更改为 currentUser
,这可以工作,但现在每次运行安装程序时都会提示我安装证书的警告,以及有关删除和删除的警告当运行新版本的安装程序进行升级时安装证书。我在使用本地机器商店时没有收到此类警告。
有没有办法执行以下任一操作:
- 让安装程序仅在证书尚不存在时安装该证书,并且在卸载时不将其删除(因此升级不会首先删除它,从而消除一个警告,然后不会安装它,因为它已经存在,从而消除了其他警告)
- 让安装程序执行删除/安装证书操作,而不提示用户
最佳答案
虽然这不是我所要求的精确解决方案,但我确实找到了适合我的解决方案。
我在证书的 Component
上设置了 Permanent="true"
并为其指定了如下条件:
<Component Id="MyCert" Permanent="True">
<Certificate ... />
<Condition><![CDATA[SKIPCERT <> "YES"]]></Condition>
</Component>
这对我有用,因为我使用 Bootstrap 应用程序进行更新,因此当我“时,我可以传递名为 SKIPCERT
的自定义变量,其值为 YES
”米升级。
Permanent="True"
与条件相结合意味着卸载(或升级)时不会删除证书,并且当我安装更新时,它不会尝试再次安装它.
关于wix - 安装证书作为 WiX 包的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14527890/