2013-05-02 42 views
6

我有兩個自定義對話框(加上所需的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> 

回答

8

而不是安排在InstallUISequence自定義操作,你可以發佈它的按鈕點擊:

<Dialog Id="DialogA" ...> 
    <Control Id="ControlEdit" Type="Edit" Property="MY_PROPERTY" .../> 
    <Control Id="ControlNext" Type="PushButton" ...> 
     <Publish Event="DoAction" Value="MyCustomAction">1</Publish> 
     <Publish Event="EndDialog" Value="Return">1</Publish> 
    </Control> 
</Dialog> 

編輯:Publish元素的條件需要顯式評估爲true才能運行,所以添加"1"作爲Publish元素的文本。

+0

我想你的方法,但動作不會被調用。我沒有使用'EndDialog',而是使用'NewDialog'來恢復。如果我刪除了事件'NewDialog',則調用該操作。 – Marlos 2013-05-02 13:50:57

+0

在編輯問題時,您需要添加條件以獲取多個事件,但您的答案部分正確並解決了問題。 – Marlos 2013-05-02 14:21:04

+0

我正要編輯答案。我頑皮地複製粘貼你的代碼。感謝您的認可! :) – 2013-05-02 14:35:28