Frage

Ich bin mit dem VS2008 Installer (plus eine benutzerdefinierten Orca Aktion) ein Installationsprogramm für mein .NET-Produkt zu erstellen.

Ich habe gerade vor kurzem herausgefunden, dass einer der Dritt Baugruppen I wurde unter Verwendung ist x86 spezifische (wie es einige nativen Code enthält); also mal 64 Kunden wurden Abstürze beim Start immer mit Fehlern über die Assembly nicht für ihre Plattform angemessen zu sein.

Ich habe eine solche Kunde eine Kopie der x64-Version dieser Drittanbieter-Versammlung, und sagte ihm, zu kopieren es nur über die bestehende x86 ein. Es funktionierte, süß! So, jetzt muss ich nur das Installationsprogramm das für mich machen tun.

Dies scheint tatsächlich nicht triviale :(. Im Idealfall, ich will nur das Installationsprogramm (die x86 sein würde, denn das ist auf beiden Plattformen laufen kann) sowohl die x86- und x64-Versionen dieser Drittanbieter-Baugruppe aufzunehmen, und installieren Sie die entsprechenden ein. Mit anderen Worten, ich mag ein einziges Installationsprogramm, das meine Benutzer das Leben einfach macht.

Ich dachte, ich hätte das geklappt, mit MSI bedingten Anweisungen und so weiter. Aber anscheinend nicht ... die VS2008 Setup-Projekte nicht kompiliert, wenn Sie „x86“ oder geben Sie „x64“. Wenn Sie x86 angeben, gibt es einen Übersetzungsfehler sagen, es ist nicht die x64-Baugruppe enthalten. Wenn Sie x64 angeben, dann kann das Ergebnis nicht auf einem x86-Computer ausgeführt werden. Verdammt!

Jemand muss, bevor dieses Problem gehabt haben. Leider Google ist nicht hilfreich, so wende ich mich an Stackoverflow!

War es hilfreich?

Lösung

Wenn ich Dich richtig verstehe, können Sie eine Kopie einer Datei tun, wenn Sie auf x86 und andere Datei zu installieren (mit dem gleichen Namen), wenn Sie auf einer x64-Plattform gerade installieren.

Zunächst einmal können Sie nicht ein MSI für 2 verschiedene Plattformen erstellen, da ein x64 MSI einfach nicht auf einer x86-Plattform und einen x86 laufen MSI mit WOW64 auf einer x64-Plattform installiert werden.

Auf der anderen Seite können Sie eine x86 MSI erstellen, die zwei verschiedene Versionen einer Datei enthält, und selektiv die sachgemäße Datei während der Installation kopieren.

Der einfachste Weg ist mit WIX (V3) anstelle der build-in VS2008 MSI Generator. WIX gibt Ihnen viel mehr Kontrolle darüber, was auf dem Computer des Kunden installiert wird und wo die Fähigkeit, verschiedene Installateure für verschiedene Plattformen und volle Unterstützung MSBuild als zusätzlichen Bonus zu generieren. (Siehe http://wix.sourceforge.net für weitere Informationen).

Im Fall, wenn Sie sich fragen, dass WIX noch in der Beta ist, sind die generierten MSI-Dateien vollkommen in Ordnung und ich lief noch nie einen Fehler in. (Und ich Setup-Projekte für ein Leben entwickeln.)

Schließlich können Sie mit der VersionNT64 Eigenschaft überprüfen, ob ein x86-Installationsprogramm auf einer x64-Plattform ausgeführt wird. Wenn das Objekt vorhanden ist, sind Sie x64 laufen, sonst sind Sie auf einem x86 ausgeführt wird.

Hoffe, das hilft.

Andere Tipps

Als ich in diesen vor einem Jahr sah, kam ich zu dem Schluss, dass es nicht möglich war. Es ist erwähnenswert, dass viele von Microsoft bereitgestellte MSI-Dateien kommen in separaten x86 und x64 Aromen -. Und vermutlich, sie würden nur eine einzige Datei liefern, wenn das möglich wäre

Ich habe mit Hilfe von zwei Funktionen eines gewissen Erfolg habe, um selektiv die zwei Sätze von Dateien enthalten (in getrennten Komponenten natürlich mit ihren individuellen Dateikennungen!).

Die Installation muss als x32 markiert wird sowohl auf x32 und x64 zu installieren. Es wird immer auf die x32 Verzeichnisse installiert und wird weitgehend als eine Anwendung unter WOW läuft 32 Bit behandelt werden.

Mit der VersionNT64 Eigenschaft können Sie bestimmen, ob eine Windows 64-Installation vorhanden ist und installieren bedingt die Dateien, die Sie benötigen.

Ich bin mir nicht sicher, wie viel von dieser Funktionalität in VS2008 installieren Projekte zur Verfügung steht - ich einige andere kommerzielle Tools bin mit dem Installateur auf diese Weise einzurichten. Natürlich können Sie Orca verwenden, es auch zu tun, obwohl es nicht trivial war es mit kommerziellen Werkzeugen und Orca ist viel härter zu arbeiten zu erhalten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top