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
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
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'>
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" />
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 SieCertficatePath
nicht benötigen, wenn Sie das AttributBinaryKey
verwenden.<Component Id="MyCertificateComponent" Guid="MY-GUID-HERE"> <iis:Certificate Id="MyCertificate" BinaryKey="MyCertificateBinaryStream" ... some more attributes ... /> </Component>
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 zuWixIISExtension
hinzufügen.
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).
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