2

作为我们的客户端-服务器软件包的一部分,我们有一个发布证书的自定义 CA。我需要能够在每个用户的机器上将我们的 CA 安装为受信任的根 CA。为了实现这一点,我Certificate将 IIS 管理包中的元素用于 WiX(证书不适用于 IIS,但这符合我们的目的)。最初,我让安装程序将它放在本地机器存储中,但我们必须让我们的安装程序按用户安装以避免需要提升,所以我现在必须将它存储在本地用户存储中。

我已将存储位置更改为currentUser,它可以工作,但是现在每次运行安装程序时都会提示我安装证书的警告,以及在安装新版本时删除和安装证书的警告是运行升级。使用本地机器存储时,我没有收到此类警告。

有没有办法执行以下任一操作:

  • 让安装程序仅在证书尚不存在时安装证书,并且在卸载时将其删除(因此升级不会首先将其删除,消除一个警告,然后不会安装它,因为它已经存在,消除其他警告)
  • 让安装程序在不提示用户的情况下执行删除/安装证书操作
4

1 回答 1

2

虽然这不是我所要求的确切解决方案,但我确实找到了适合我的解决方案。

我为我的证书设置Permanent="true"Component一个条件,如下所示:

<Component Id="MyCert" Permanent="True">
    <Certificate ... />
    <Condition><![CDATA[SKIPCERT <> "YES"]]></Condition>
</Component>

这对我有用,因为我使用引导程序应用程序进行更新,所以我能够传递一个名为我升级时SKIPCERT的值的自定义变量。YES

Permanent="True"条件相结合意味着在卸载(或升级)时不会删除证书,并且当我安装更新时它不会尝试再次安装它。

于 2013-01-25T23:57:21.063 回答