我有兩個自定義對話框(加上所需的ExitDlg
,FatalErrorDlg
等),第一個使用Edit控件設置屬性,第二個使用Edit一個文本控件。這裏是有意義代碼:在WiX中的對話框之間插入自定義動作(InstallUISequence)
<Dialog Id="DialogA" ...>
<Control Id="ControlEdit" Type="Edit" Property="MY_PROPERTY" .../>
<Control Id="ControlNext" Type="PushButton" ...>
<Publish Event="EndDialog" Value="Return" /></Control>
</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>
動作時序:
<InstallUISequence>
<Show Dialog="DialogA" Before="MyCustomAction" />
<Custom Action="MyCustomAction" Before="DialogB" />
<Show Dialog="DialogB" Before="ExecuteAction" />
</InstallUISequence>
自定義操作改變的MY_PROPERTY
值。我的問題是如何使DialogB
中的返回按鈕返回到DialogA
。使用NewDialog
很簡單,但是我無法獲得在對話框之間執行的自定義動作,或者我可以嗎?
編輯 - 2013年5月2日
從@caveman_dick答案後,我試圖改變DialogA
幾乎就像他說的,但不是使用EndDialog
,我改Action="NewDialog" Value="DialogB"
。但是現在自定義操作沒有被調用。如果我刪除發佈事件以轉到下一個對話框,則調用CA.如果我離開的@caveman_dick說,我不能從DialogB
回到DialogA
。
編輯 - 2013年5月2日
在書中搜索維克斯3.6後:開發人員指南到Windows Installer XML,我發現了以下內容:「如果你有一個以上的發佈事件,他們必須有條件陳述作爲他們的內部文本,否則所有的事件都不會被公佈。「
所以從@caveman_dick的答案是正確的,但您需要更改爲以下:
<Publish ...>1</Publish>
我想你的方法,但動作不會被調用。我沒有使用'EndDialog',而是使用'NewDialog'來恢復。如果我刪除了事件'NewDialog',則調用該操作。 – Marlos 2013-05-02 13:50:57
在編輯問題時,您需要添加條件以獲取多個事件,但您的答案部分正確並解決了問題。 – Marlos 2013-05-02 14:21:04
我正要編輯答案。我頑皮地複製粘貼你的代碼。感謝您的認可! :) – 2013-05-02 14:35:28