Install a pfx certificate in a users store in Wind

2019-03-11 07:43发布

Please, can someone provide me with a WiX snippet or solution for the mentioned scenario. I need to include the pfx file in the WiX msi and the user will download my msi to his machine via the internet explorer and Click install and I need also the certificate to be installed on his machine.

2条回答
叼着烟拽天下
2楼-- · 2019-03-11 08:22

To expand on the answer a little, the following set of attributes worked for me:

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

Where the <Product> element contained a <Binary> child as follows:

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

(I included the PFX file within my WiX project).

查看更多
劫难
3楼-- · 2019-03-11 08:45

You need the Certificate element. It is part of the IIS extension for wix, but can be used for non-IIS related installations also.

You need to

  1. declare a prefix for the iis namespace, for example like this in the root Wix element:

    <Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'
       xmlns:iis='http://schemas.microsoft.com/wix/IIsExtension'>
    
  2. Embed the PFX file as a binary stream in your install package. Add a Binary element under the product element like this:

    <Binary Id="MyCertificateBinaryStream" 
       SourceFile="c:/path/to/mycertificate.pfx" />
    
  3. Declare a component with a <iis:Certificate> element, for example like this. Look at the documentation, you need to fill in some more attributes. Note that you don't need CertficatePath if you use the BinaryKey attribute.

    <Component Id="MyCertificateComponent" Guid="MY-GUID-HERE">
       <iis:Certificate Id="MyCertificate"
          BinaryKey="MyCertificateBinaryStream"
          ... some more attributes ...                  
       />
    </Component>
    
  4. Activate the IIS extension by adding the option -ext WixIISExtension option when invoking the wix command line tools. If you use visual studio, this is just a matter of adding a reference in your wix project to WixIISExtension.

查看更多
登录 后发表回答