1

Ich verwende VS2015, um eine Installationslösung für meinen Dienst zu erstellen. Ich möchte das Programm als 64-Bit ausführen. In den Lösungskonfigurationseigenschaften habe ich alle Projekte als Konfiguration Debug, Platform Any CPU, Deploy leer.Warum installiert mein Dienst das Installationsprojekt in Programme (x86), wenn ich Programmdateien wähle?

Der MSI-Installer fragt mich, um einen Ordner auszuwählen, um zu installieren, und ich wähle Program Files \ My Name des Unternehmens

Allerdings, wenn ich auf einem Windows 8.1 64-Bit zu installieren versuche OS das Installationsprogramm erstellt einen Ordner Program Files (x86) \ Mein Firmenname

Warum?

Antwort

3

Höchstwahrscheinlich, weil das MSI, das Sie generiert haben, ein 32-Bit-MSI ist, das nur auf 32 bit folder paths zugreifen kann. Somit führt das OS die Umleitung automatisch durch.

Sie können den MSI-Pakettyp mit dem kostenlosen Tool Orca überprüfen, das im Windows SDK zu finden ist. Die Informationen zum Pakettyp des MSI finden Sie im Menü Summary Information. Oder Sie können auch ein ausführliches Protokoll der Installation erstellen, höchstwahrscheinlich finden Sie darin Informationen über die Pfadumleitung.

Befehlszeilen für ausführliche Protokollgenerierung:

msiexec.exe/i < vollständiger MSI-Pfad>/L * V < vollständigen Protokolldateipfad, einschließlich Protokolldateinamen>

Tatsache ist, "Any CPU" für ein MSI bedeutet, dass Sie ein 32-Bit-MSI erhalten, das sowohl auf 32- als auch auf 64-Bit-Rechnern laufen kann. Ein 64-Bit-MSI kann nicht auf 32-Bit-Rechnern installiert werden, wie Sie sich vorstellen können.

Windows Installer unterstützt nicht gemischte MSI-Pakete. Es gibt andere Setup-Authoring-Tools, die einen EXE-Bootstrapper erstellen, der zwei MSIs, einen für jede Architektur, bündelt und den richtigen startet, basierend auf dem laufenden Betriebssystem.

Advanced Installer can build mixed packages, wie auch in dieser SO similar/related thread erwähnt. Wie bei jedem Dev-Tool gibt es auch andere Optionen, siehe den oben verlinkten SO-Thread.

0

Verschiedene Pakete sind für jede Architektur benötigt:

https://blogs.msdn.microsoft.com/heaths/2008/01/15/different-packages-are-required-for-different-processor-architectures/

In Visual Studio Setup-Projekte der Architektur in den Eigenschaften Fenster ist (wählen Sie Setup-Projekt in Projektmappen-Explorer und F4, NICHT "Eigenschaften") in der TargetPlatform Auswahlmöglichkeiten. Das Setup-Projekt folgt nicht der Architektur, die Sie in Ihrem Code erstellt haben.

Verwenden Sie ProgramFiles64Folder als ApplicationFolder-Eigenschaft (wie Heaths Artikel sagt), um in den nativen Ordner Programme zu installieren.