2017-10-24 3 views
0

Ich habe ein Programm, das von Postgres abhängig ist. Das von mir erstellte Installationsprogramm installiert Postgres für den Benutzer. das möchte ich aber nur, wenn Postgres nicht schon installiert ist. Ich versuche, dies durch eine benutzerdefinierte Aktion mit Bedingungen zu tun, aber ich kann nicht scheinen, es zur Arbeit zu bringen. Jede Hilfe würde sehr geschätzt werden. Das habe ich derzeit.WiX Benutzerdefinierte Aktion Bedingung auf Eigenschaftswert

<Property Id="POSTGRESINSTALLED"> 
    <RegistrySearch Id="POSTGRESINSTALLED_SEARCH" Key="SOFTWARE\PostgreSQL\Installations\postgresql-x64-9.5" Root="HKLM" Type="raw" Name="Branding" /> 
</Property> 

<InstallExecuteSequence> 
    <Custom Action='postgres_install_action' After='vc_redist_install_action'> (NOT POSTGRESINSTALLED) OR (REINSTALL) </Custom> 
</InstallExecuteSequence> 

Antwort

1

Es ist nicht klar, welcher Teil nicht funktioniert, die Erkennung oder die Installation.

Wenn Sie die Installation ausführen und ein Protokoll erstellen (msiexec/I [Pfad zu MSI]/l * vx [Pfad zum Textprotokoll]), sehen Sie, ob POSTGRESINSTALLED_SEARCH gesetzt ist. Die Installation muss nicht abgeschlossen werden, da die Suche früh erfolgt. Angenommen, Sie haben die allgemeine Idee richtig, Sie haben nicht explizit gesagt, ob die 32-Bit-Registrierung oder die 64-Bit-Registrierung zu suchen. Es kann einfach sein, an der falschen Stelle zu suchen.

Wenn die Suche funktioniert, kann die Installation leicht fehlschlagen. Die benutzerdefinierte Aktion scheint unmittelbar (die Standardeinstellung) zu sein, sodass sie nicht erhöht ausgeführt wird und daher wahrscheinlich fehlschlägt. Dasselbe gilt für die benutzerdefinierte Aktion "vc redist install".

Das Modell für die Installation von Voraussetzungen ist die Verwendung eines Bundles, um sie zuerst zu installieren. Diese sollten helfen, aber das ist die Art, wie Sie dies tun sollten:

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

http://www.c-sharpcorner.com/UploadFile/cb88b2/installing-prerequisites-using-wix-bootstrapper-project-and/

How to include prerequisites with msi/Setup.exe in WIX

WiX - Install Prerequisites and 3rd party applications

+0

Ich habe gerade das Problem. Ich habe 'Win64 =" yes "' von der RegistrySearch vermisst. Habe nicht bemerkt, dass der Bogen nicht gesetzt war, und wurde standardmäßig auf x86 gesetzt. Ich werde mir die Bündel ansehen. –

Verwandte Themen