使用WiX在Windows中的用户存储中安装pfx证书

时间:2009-12-24 08:44:13

标签: installer wix certificate pfx

请有人为我提供了针对上述方案的WiX片段或解决方案。我需要在WiX msi中包含pfx文件,用户将通过Internet Explorer将我的msi下载到他的机器上并点击安装,我还需要在他的机器上安装证书。

2 个答案:

答案 0 :(得分:9)

您需要Certificate element。它是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文件嵌入为二进制文件 在您的安装包中流。加 一个Binary元素 像这样的产品元素:

    <Binary Id="MyCertificateBinaryStream" 
       SourceFile="c:/path/to/mycertificate.pfx" />
    
  3. 声明具有<iis:Certificate>元素的组件 像这样的例子。看着那(这 documentation,你需要填写一些 更多属性。请注意,如果您使用CertficatePath属性,则不需要BinaryKey

    <Component Id="MyCertificateComponent" Guid="MY-GUID-HERE">
       <iis:Certificate Id="MyCertificate"
          BinaryKey="MyCertificateBinaryStream"
          ... some more attributes ...                  
       />
    </Component>
    
  4. 通过添加激活IIS扩展 选项-ext WixIISExtension 调用wix命令行工具时的选项。如果您使用visual studio,只需将您的wix项目中的引用添加到WixIISExtension

答案 1 :(得分:4)

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

<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文件)。