10

拜托,有人可以为我提供上述场景的 WiX 片段或解决方案吗?我需要在 WiX msi 中包含 pfx 文件,用户将通过 Internet Explorer 将我的 msi 下载到他的机器上,然后单击安装,我还需要在他的机器上安装证书。

4

2 回答 2

11

您需要Certificate 元素。它是 wix 的 IIS 扩展的一部分,但也可用于非 IIS 相关的安装。

你需要

  1. 为 iis 命名空间声明一个前缀,例如在根 Wix 元素中如下所示:

    <Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'
       xmlns:iis='http://schemas.microsoft.com/wix/IIsExtension'>
    
  2. 将 PFX 文件作为二进制流嵌入到您的安装包中。在 product 元素下添加一个Binary元素,如下所示:

    <Binary Id="MyCertificateBinaryStream" 
       SourceFile="c:/path/to/mycertificate.pfx" />
    
  3. 用一个元素声明一个组件<iis:Certificate>,例如这样。看 文档,需要多填一些属性。CertficatePath请注意,如果您使用该BinaryKey属性,则不需要。

    <Component Id="MyCertificateComponent" Guid="MY-GUID-HERE">
       <iis:Certificate Id="MyCertificate"
          BinaryKey="MyCertificateBinaryStream"
          ... some more attributes ...                  
       />
    </Component>
    
  4. -ext WixIISExtension 通过在调用 wix 命令行工具时添加 option 选项来激活 IIS 扩展。如果你使用 Visual Studio,这只是在你的 wix 项目中添加一个引用到WixIISExtension.

于 2009-12-24T14:01:59.317 回答
6

为了稍微扩展答案,以下一组属性对我有用:

<iis:Certificate 
    Id="My.Certificate" 
    StoreName="root" 
    Overwrite="yes" 
    Name="My Friendly Certificate Name" 
    Request="no" 
    BinaryKey="MyCertificate.Binary" 
    StoreLocation="localMachine" />

元素<Product>包含<Binary>子元素的位置如下:

<Binary 
    Id="MyCertificate.Binary" 
    SourceFile="$(var.ProjectDir)MyCertificate.pfx" />

(我在我的 WiX 项目中包含了 PFX 文件)。

于 2011-02-17T10:38:43.297 回答