Ich mache Installer mit WiX 3.10. Meine ursprüngliche Aufgabe besteht darin, Postgres-Dateien auf das Zielsystem zu kopieren, den Cluster zu initialisieren, den Dienst zu registrieren, ihn zu starten und die Datenbank bei der Installation wiederherzustellen und umgekehrt den Dienst zu stoppen, ihn aus dem System zu entfernen und Clusterdaten zu löschen. Ich habe zwei bat-Dateien geschrieben und benutzerdefinierte Aktionen hinzugefügt, um sie auszuführen und einige Bedingungen, wie an verschiedenen Stellen beschrieben, aber keine von ihnen funktioniert. Ich habe es mit und ohne CDATA, Installiert, INSTALLIERT und einigen anderen Varianten versucht, aber es führt immer beide Aktionen aus.Ausführen von benutzerdefinierten Aktionen nur bei der Installation oder Deinstallation
Hier ist die Wix-Datei, mit der ich jetzt experimentiere.
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" Name="Hatred_6" Language="1033" Version="1.0.0.0" Manufacturer="Satan" UpgradeCode="d9602b10-8428-4031-8c82-99288b21377f">
<Package InstallerVersion="405" Compressed="yes" InstallScope="perMachine" InstallPrivileges="elevated"/>
<MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
<MediaTemplate EmbedCab="yes" />
<CustomAction Id="AAction" Directory="INSTALLFOLDER" Execute="deferred" Impersonate="no" Return="check"
ExeCommand="cmd.exe /c "a.bat"">NOT Installed</CustomAction>
<CustomAction Id="BAction" Directory="INSTALLFOLDER" Execute="deferred" Impersonate="no" Return="check"
ExeCommand="cmd.exe /c "b.bat"">Installed</CustomAction>
<InstallExecuteSequence>
<Custom Action="BAction" After="InstallFiles" />
<Custom Action="AAction" After="InstallFiles" />
</InstallExecuteSequence>
<Feature Id="ProductFeature" Title="Hatred_6" Level="1">
<ComponentGroupRef Id="ProductComponents" />
</Feature>
</Product>
<Fragment>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="INSTALLFOLDER" Name="Hatred_6" />
</Directory>
</Directory>
</Fragment>
<Fragment>
<ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
<Component Id="CalcComponent" Guid="515C0606-FD73-4B5D-ACF4-481123092A3E">
<File Id="CalcFile" KeyPath="yes" Source="calc.exe" />
</Component>
<Component Id="AComponent" Guid="515e3aa0-e5a0-4cd1-aaa5-ebf25a679a24">
<File Id="AFile" KeyPath="yes" Source="a.bat" />
</Component>
<Component Id="BComponent" Guid="85f7627e-fc39-4f78-a870-221d2d08375d">
<File Id="BFile" KeyPath="yes" Source="b.bat" />
</Component>
</ComponentGroup>
</Fragment>
</Wix>
bat-Dateien enthalten dir> a.txt und dir> b.txt so kann ich sehen, ob sie tatsächlich ausgeführt. Es ist etwas frustrierend, habe ich etwas falsch verstanden?
Ich würde vorschlagen, ein ausführliches Protokoll, anstatt 'dir> a.txt', um festzustellen, ob eine benutzerdefinierte Aktion ausführt. –
Ich brauche beide bat-Dateien, um trotzdem Nebenwirkungen zu erzeugen, und ich habe in verbose log nichts gefunden, das erklären kann, wie die Bedingungen der Aktion bewertet wurden. – Encarmine