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

abm*_*bmv 9 installer wix certificate pfx

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

Wim*_*nen 9

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

你需要

  1. 声明iis名称空间的前缀,例如在根Wix元素中这样:

    <Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'
       xmlns:iis='http://schemas.microsoft.com/wix/IIsExtension'>
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将PFX文件作为二进制流嵌入安装包中.在product元素下添加Binary元素,如下所示:

    <Binary Id="MyCertificateBinaryStream" 
       SourceFile="c:/path/to/mycertificate.pfx" />
    
    Run Code Online (Sandbox Code Playgroud)
  3. 声明具有<iis:Certificate>元素的组件,例如像这样.查看 文档,您需要填写更多属性.请注意,CertficatePath如果使用该BinaryKey属性,则不需要.

    <Component Id="MyCertificateComponent" Guid="MY-GUID-HERE">
       <iis:Certificate Id="MyCertificate"
          BinaryKey="MyCertificateBinaryStream"
          ... some more attributes ...                  
       />
    </Component>
    
    Run Code Online (Sandbox Code Playgroud)
  4. 通过-ext WixIISExtension 在调用wix命令行工具时添加选项选项来激活IIS扩展.如果您使用visual studio,这只是在您的wix项目中添加引用的问题WixIISExtension.


Jim*_*ell 6

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

<iis:Certificate 
    Id="My.Certificate" 
    StoreName="root" 
    Overwrite="yes" 
    Name="My Friendly Certificate Name" 
    Request="no" 
    BinaryKey="MyCertificate.Binary" 
    StoreLocation="localMachine" />
Run Code Online (Sandbox Code Playgroud)

其中<Product>元素包含<Binary>子元素如下:

<Binary 
    Id="MyCertificate.Binary" 
    SourceFile="$(var.ProjectDir)MyCertificate.pfx" />
Run Code Online (Sandbox Code Playgroud)

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