2009-12-24 7 views
9

Bitte, kann mir jemand ein WiX-Snippet oder eine Lösung für das erwähnte Szenario zur Verfügung stellen. Ich muss die PFX-Datei in die WiX-MSI einbinden und der Benutzer wird meine MSI über den Internet Explorer auf seine Maschine herunterladen und klicken Sie auf installieren und ich brauche auch das Zertifikat auf seinem Rechner installiert werden.Installieren Sie ein PFX-Zertifikat in einem Benutzerspeicher in Windows mit WiX

Antwort

9

Sie benötigen die Certificate element. Es ist Teil der IIS-Erweiterung für wix, kann aber auch für nicht mit IIS zusammenhängende Installationen verwendet werden.

Sie müssen

  1. ein Präfix für die iis Namespace deklarieren, für Beispiel wie dies in der Wurzel Wix Element:

    <Wix xmlns='http://schemas.microsoft.com/wix/2006/wi' 
        xmlns:iis='http://schemas.microsoft.com/wix/IIsExtension'> 
    
  2. einbetten PFX-Datei als binäre Stream in Ihrem Installationspaket. In ein Binary Element unter dem Produktelement wie folgt aus:

    <Binary Id="MyCertificateBinaryStream" 
        SourceFile="c:/path/to/mycertificate.pfx" /> 
    
  3. Deklarieren Sie eine Komponente mit einem <iis:Certificate> Element, für Beispiel wie folgt aus. Schauen Sie sich die documentation, Sie müssen einige weitere Attribute ausfüllen. Beachten Sie, dass Sie CertficatePath nicht benötigen, wenn Sie das Attribut BinaryKey verwenden.

    <Component Id="MyCertificateComponent" Guid="MY-GUID-HERE"> 
        <iis:Certificate Id="MyCertificate" 
         BinaryKey="MyCertificateBinaryStream" 
         ... some more attributes ...     
        /> 
    </Component> 
    
  4. Aktivieren Sie die IIS-Erweiterung durch die Option -ext WixIISExtension Option hinzugefügt, wenn die wix Kommandozeilen-Tools aufrufen. Wenn Sie Visual Studio verwenden, müssen Sie lediglich eine Referenz in Ihrem wix-Projekt zu WixIISExtension hinzufügen.

+0

Ich werde in diese Antwort schauen und versuchen. Danke für Ihre Antwort wieder. Wirklich schätzen Sie Ihre Erklärung. Ein frohe Weihnachten zu Ihnen! – abmv

4

Um auf die Antwort ein wenig, der folgende Satz von Attributen für mich erweitern gearbeitet:

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

Wo das <Product> Element enthielt ein <Binary> Kind wie folgt:

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

(Ich habe die PFX-Datei in mein WiX-Projekt eingefügt).