2009-04-08 7 views
6

Ich habe eine Datei, die eine 32-Bit-Version und eine 64-Bit-Version hat. Wenn ich meine Anwendung auf einer 32-Bit-Maschine installiere, möchte ich die 32-Bit-Version der Datei installieren. Ebenso sollte die 64bit-Version installiert werden, wenn die Installation auf einer 64-Bit-Maschine ausgeführt wird. Wie überprüfe ich, mit welchem ​​Maschinentyp das Installationsprogramm mit WiX ausgeführt wird?Wie installiere ich bedingt eine Datei mit WiX basierend auf dem Zielrechner (32bit oder 64bit)?

Bitte, keine einzeiligen Antworten. Ich suche nach bestimmten WiX-Tags und wo sie in mein WiX-Skript eingefügt werden.

Antwort

4

Sie könnten wahrscheinlich nur tun, zwei separate Komponenten, mit den Bedingungen

VersionNT64 

und

Not VersionNT64 

Aber der richtige Weg ist, separate Installationsprogramme für 32- und 64-Bit-Betriebssysteme und 64 zu kompilieren -Bit-Komponenten sollten auch als solche markiert sein (mit Win64="yes") - Ich weiß nicht, ob es sogar möglich ist, ein Windows Installer-Paket zu markieren, das sowohl für Intel als auch für x64 gedacht ist. Nur wenn ich jemals eine gemischte Architekturinstallation mit NSIS gemacht habe, haben alle meine WiX-Installationsprogramme separate Installer für jede Architektur.

2

Der richtige Weg ist, zwei Setups zu kompilieren, eins für 32 (x86) und eins für 64 (amd64). Dann verpacken Sie diese beiden msi in einer einzigen msi und führen zur Laufzeit die entsprechende msi aus.

0

Sie könnten eine Basis-WXS-Datei mithilfe von Umgebungs- oder Präprozessorvariablen erstellen und die erforderlichen Attribute vor dem Kompilieren ausfüllen. Eine andere Option wäre das Ausführen eines Skripts vor dem Build, das verschiedene GUIDs in der Datei für die spezifische Installation enthält. Kurz gesagt, ich glaube nicht, dass es eine einfache Möglichkeit gibt, Installer für verschiedene Architekturen zu erstellen, also müssen Sie zusätzliche Dienstprogramme verwenden.