Wir haben WIX Installer für unsere Anwendung erstellt. Das Problem, vor dem wir stehen, ist: Wir haben zwei verschiedene benutzerdefinierte Aktionen definiert (z. B. ActionForInstall und ActionForUninstall), die wir im folgenden Fall ausführen möchten: ActionForInstall: Sollte während der Installation, Produktaktualisierung, Wartungsmodus (sowohl für Reparatur als auch Änderung) ausgeführt werden ActionForUninstall: Sollte nur zur Deinstallation ausgeführt werden.
Aber wir sind nicht in der Lage, den richtigen Zustand einzustellen. Sie können den Code beziehen:
%Vor%Bitte lassen Sie uns wissen, was wir falsch gemacht haben. Der obige Code ruft InstallFinalize selbst für die Deinstallation auf.
Sie können diese Bedingungen ausprobieren:
ActionForInstall:
%Vor%ActionForUninstall
%Vor%Normalerweise werden Bedingungen, die Eigenschaften auf Produktebene wie Nicht installiert und REMOVE="ALLE" verwenden, nicht Ihren Erwartungen entsprechend skaliert. Im Allgemeinen ist es besser, Komponentenaktionszustände wie
zu verwenden$ COMPONENTNAME = 3 & lt; - Komponente wird lokal installiert
$ COMPONENTNAME = 2 & lt; - Komponente wurde zuvor installiert und wird jetzt entfernt
Dies umfasst im Allgemeinen alle Ihre Installations-, Deinstallations-, Wartungs-, Reparatur- und Upgrade-Szenarien.
Sie können ähnliche Funktionen für Funktionen mit dem "& amp;" Operator, aber im Allgemeinen mit den Komponenten "$" ist besser, da die Komponenten physisch sind und mit einem oder mehreren Features verknüpft werden können, die nur logisch sind.
Und wenn Sie es wirklich auf die nächste Ebene bringen möchten, könnten (sollten) Ihre benutzerdefinierten Aktionen datengesteuert sein, indem Sie einen Fremdschlüssel-Join zur Component-Tabelle verwenden. In diesem Szenario wird die benutzerdefinierte Aktion immer ausgelöst und fragt dann die Tabellen ab und bewertet die Aktionsstatus der Komponenten, um zu entscheiden, welche Vorgänge geplant werden müssen.
>Tags und Links wix windows-installer custom-action