Einfügen einer benutzerdefinierten Aktion zwischen Dialogen (InstallUISequence) in WiX
Ich habe zwei benutzerdefinierte Dialogfelder (plus die erforderlichen)ExitDlg
, FatalErrorDlg
usw.), setzt der erste eine Eigenschaft mit einem Edit-Steuerelement und der zweite zeigt diese Eigenschaft mit einem Text-Steuerelement. Hier ist der aussagekräftige Code:
<Dialog Id="DialogA" ...>
<Control Id="ControlEdit" Type="Edit" Property="MY_PROPERTY" .../>
<Control Id="ControlNext" Type="PushButton" ...>
<Publish Event="EndDialog" Value="Return" /></Control>
</Dialog>
Und dann der zweite Dialog:
<Dialog Id="DialogB" ...>
<Control Id="ControlText" Type="Text" Text="[MY_PROPERTY]" .../>
<Control Id="ControlBack" Type="PushButton" ...>
<Publish Event="EndDialog" Value="Return" /></Control>
<Control Id="ControlNext" Type="PushButton" ...>
<Publish Event="EndDialog" Value="Return" /></Control>
</Dialog>
Und die Actionsequenz:
<InstallUISequence>
<Show Dialog="DialogA" Before="MyCustomAction" />
<Custom Action="MyCustomAction" Before="DialogB" />
<Show Dialog="DialogB" Before="ExecuteAction" />
</InstallUISequence>
Die benutzerdefinierte Aktion ändert den Wert vonMY_PROPERTY
. Mein Problem ist, wie man die Zurück-Taste einstelltDialogB
zurück zuDialogA
. VerwendenNewDialog
ist einfach, aber dann kann ich die benutzerdefinierte Aktion nicht zwischen den Dialogen ausführen lassen, oder?
bearbeiten - 2013-05-02
Nach der Antwort von @caveman_dick habe ich versucht das zu ändernDialogA
fast wie er sagte, aber anstatt zu verwendenEndDialog
Änderte ich zuAction="NewDialog" Value="DialogB"
. Aber jetzt wird die benutzerdefinierte Aktion nicht aufgerufen. Wenn ich das Veröffentlichungsereignis entferne, um zum nächsten Dialogfeld zu gelangen, wird die Zertifizierungsstelle aufgerufen. Wenn ich gehe, wie @caveman_dick gesagt hat, komme ich nicht zurück zuDialogA
vonDialogB
.
bearbeiten - 2013-05-02
Nach der Suche im BuchWiX 3.6: Ein Entwicklerhandbuch für Windows Installer XMLIch fand Folgendes: "Wenn Sie mehr als ein Veröffentlichungsereignis haben, müssen sie bedingte Anweisungen als ihren inneren Text haben. Andernfalls werden alle Ereignisse einfach nicht veröffentlicht."
Die Antwort von @caveman_dick ist also korrekt, mit der Ausnahme, dass Sie Folgendes ändern müssen:
<Publish ...>1</Publish>