2009-03-27 7 views
4

Ich beende gerade eine Anwendung, die demnächst zur Validierung des Windows Logo-Programms eingereicht wird. Eine der Voraussetzungen ist die x64-Kompatibilität. Insbesondere muss Crystal Reports 2008 unter x64 funktionieren.Erkennung von x86/x64 und Installation der korrekten .msi-Datei

Mein Problem ist, dass Crystal Reports Basic 2008 (das mit Visual Studio 2008 gepackte) keine Mergemodule hat und mit den bereitgestellten .msi-Installern installiert werden muss. Sie bieten separate Installer für x86 und x64.

Wie also würde ich während der Installation x86 und x64 erkennen und dann die entsprechenden Crystal MSI ausführen? Ist dies auch ohne Mergemodule möglich?

EDIT:

Dieses:

IF PROCESSOR_ARCHITECTURE == x86 AND 
    PROCESSOR_ARCHITEW6432 NOT DEFINED THEN 
    // OS is 32bit 
ELSE 
    // OS is 64bit 
END IF 

scheint mir zu sagen, wie es zu erkennen (dank MicSim). Aber wie mache ich das in einem MSI? Ist es eine benutzerdefinierte Aktion? Und wie trigge ich dann verschiedene benötigte msi für die x32 und x64 Crystal Reports an?

Und warum funktioniert der x86-Crystal-Installer nicht unter WOW64? Sie müssen x64 Crystal installieren, um mit Ihrer WOW64 x86 App zu arbeiten. Frustrierend ...

EDIT 2:

Okay, so x86/x64 Erkennung scheint hier abgedeckt werden. Wie wäre es mit der manuellen Auslösung eines MSI Ihrer Wahl?

Antwort

8

Der einfachste Weg, ein 64-Bit-Betriebssystem zu erkennen, ist die VersionNT64 Eigenschaft. Diese Eigenschaft kann unter Bedingungen für Komponenten oder benutzerdefinierte Aktionen verwendet werden (z. B. die Bedingung Nicht VersionNT64 gilt nur für 32-Bit-Betriebssysteme).

Wie für die Installation anderer MSI-Pakete während Ihrer Installation, das ist ein wenig komplizierter. Windows Installer erlaubt nur einem MSI, die Execute Sequence gleichzeitig auszuführen. Dies bedeutet, dass Sie entweder Ihre Crystal Reports-MSI während der UI-Sequenz mit einer benutzerdefinierten Aktion installieren müssen (achten Sie darauf, wenn die UI-Sequenz übersprungen wird, wenn das MSI im unbeaufsichtigten Modus ausgeführt wird), oder erstellen Sie eine Art Bootstrapper-Programm, das sowohl die Crystal Reports-MSI als auch Ihre eigenen nacheinander ausführt.

Ich habe noch nie meinen eigenen Bootstrapper erstellt, aber InstallShield hat ein Bootstrapper-Programm in ihrer setup.exe; sie rufen so installierte Pakete Voraussetzungen auf.

1

Einfach googeln: Wenn Sie ein MSI-Projekt haben, können Sie die Eigenschaften wie beschrieben here überprüfen.

Weitere Informationen zum Ermitteln der Prozess- und Betriebssystemarchitektur finden Sie unter this MSDN blog über "HOWTO: Prozessbits erkennen".

1

Sie können Crystal Reports MSI mit einer benutzerdefinierten Aktion auslösen, die [SystemFolder] msiexec ausführt. Geben Sie einfach "/ i [YourFolderWithCRMSI] msiname.msi" als Argumente an.

+0

Sie könnten auch hinzufügen mögen mitgeliefert/q als Parameter, so dass es den Kunden nicht stört. –