2017-01-15 4 views
0

Erste Schritte mit WiX in Visual Studio. Für die Bootstrapper-Projektvorlage kann nicht viel Dokumentation gefunden werden.Benötige ich 2 WIX-Projekte beim Erstellen von WiX Bootstrapper im Visual Studio?

Ich habe eine leere WPF-Anwendung erstellt. Dann habe ich ein Setup-Projekt ...

<?xml version="1.0" encoding="UTF-8"?> 
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> 
<Product Id="*" Name="WiXBenchInstaller" Language="1033" Version="1.0.0.0" Manufacturer="None" UpgradeCode="9d845a6d-3e16-45d6-b0c4-7e818e465bfe"> 
    <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" /> 

    <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." /> 
    <MediaTemplate EmbedCab="yes"/> 

    <Feature Id="ProductFeature" Title="WiXBenchInstaller" Level="1"> 
     <ComponentGroupRef Id="ProductComponents" /> 
    </Feature> 
</Product> 

<Fragment> 
    <Directory Id="TARGETDIR" Name="SourceDir"> 
     <Directory Id="ProgramFilesFolder"> 
      <Directory Id="INSTALLFOLDER" Name="WiXBench" /> 
     </Directory> 
    </Directory> 
</Fragment> 

<Fragment> 
    <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER"> 
     <!-- TODO: Remove the comments around this Component element and the ComponentRef below in order to add resources to this installer. --> 
     <Component Id="ProductComponent"> 
    <File Source="$(var.WiXBench.TargetPath)"/> 
     </Component> 
    </ComponentGroup> 
</Fragment> 

Dann habe ich eine Bootstrap-Projekt erstellt ...

<?xml version="1.0" encoding="UTF-8"?> 
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> 
<Bundle Name="WixBenchBootstrap" Version="1.0.0.0" Manufacturer="None" UpgradeCode="4b1049ed-38ba-4289-8d8d-e291160201e0"> 
    <BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense" /> 

    <Chain> 
    <MsiPackage SourceFile="$(var.WiXBenchInstaller.TargetPath)"/> 
    </Chain> 
</Bundle> 

Alles funktioniert gut. Meine Frage ist, ob dies der richtige Ansatz ist. Es scheint übertrieben zu sein, 2 Installer-Projekte für eine einfache Anwendung zu haben. Könnte ich einfach ein Bootstrapper-Projekt haben, das alles Notwendige enthält?

Antwort

1

Es hängt davon ab, was Sie erreichen möchten, die Anzahl der Pakete, UI ect.

http://wixtoolset.org/documentation/manual/v3/bundle/

„Ein Bündel ist eine Sammlung von Installationspaketen, die zusammen in einer einzigen Benutzererfahrung verkettet sind. Bundles werden oft installieren Voraussetzungen, wie das .NET Framework oder Visual C++ Runtime, bevor eine Anwendung verwendet .MSI-Datei. Bundles ermöglichen auch die Aufteilung sehr großer Anwendungen oder Anwendungssuiten in kleinere, logische Installationspakete, während dem Endbenutzer immer noch ein einzelnes Produkt präsentiert wird. "

Wenn Sie ein MSI-Paket haben und nicht benötigen eine komplexe Benutzeroberfläche als nur MSI-Projekt alleine verwenden. Wenn Sie mehrere Pakete haben oder eine WPF-Benutzeroberfläche möchten, müssen Sie einen Bootstrapper verwenden, den Sie jetzt verwenden.

+0

In der Tat. Außer ich möchte eine .exe, nicht eine .msi. Das WiX-Setup-Projekt verfügt über eine Option zum Erstellen einer EXE-Datei, dies scheint jedoch nicht zu funktionieren. Ich denke, es ist ein Fehler. Außerdem möchte ich die UI wie im Bootstrapper, die die Lizenzdatei anzeigt und so weiter. So scheint es, dass ich 2 WiX-Projekte benötige, um dies zu erreichen. – AQuirky

+0

Wenn Sie eine EXE benötigen, müssen Sie ein Bündel erstellen, wie Sie oben getan haben. Außerdem bietet MSI eine Option zum Anzeigen der Lizenz und anderer Build-in-Dialoge. http://wixtoolset.org/documentation/manual/v3/wixui/wixui_dialog_library.html. Wenn meine Antwort hilfreich war, bitte als beantwortet markieren. –

1

Ja, das ist der richtige Ansatz.

Im Allgemeinen erzeugen VS-Projekte eine Hauptausgabe (.exe, .dll, .netmodule, .lib, .msi usw.) und wixprojs sind keine Ausnahme. Dazu gibt es keine Regeln; Es ist nur das Design der MSBuild .targets-Dateien und ihrer zugehörigen VS-Projektdesigner.

Wenn es verschiedene Entwickler ablenkt, könnten Sie verschiedene Lösungen haben, die verschiedene Teilmengen der Projekte enthalten. (Eine Lösung enthält null oder mehr Projekte. Ein Projekt ist in keiner oder mehreren Lösungen enthalten.)

Verwandte Themen