2016-09-20 53 views
1

請仔細閱讀,我將解釋我正在嘗試做什麼。我有一個調用自定義操作來驗證用戶輸入的wix安裝程序。我想打電話給下一個對話框,如果驗證成功不動,如果驗證不成功Wix - 自定義操作返回代碼 - 處理

  1. 我有一個自定義操作
  2. 自定義操作驗證用戶名和密碼,
  3. 如果驗證成功,則自定義操作將屬性([CONNECTED] = 1)設置爲1
  4. 如果驗證失敗,它將屬性值設置爲空,然後彈出一個消息框,表示值不正確
  5. 自定義操作(c#)在我的對話框中的下一個按鈕
  6. 自定義動作執行正常,並在出現故障時彈出 以下是問題 如果失敗,彈出窗口並且我的wix安裝程序跳轉到結束對話框(FINISH),只給我選項退出安裝。 或者它有時會給我下一個對話框,即使它失敗了。 這是執行我的自定義操作的代碼。 <Control Id="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17" Default="yes" Text="[ButtonText_Next]"> <Publish Event="DoAction" Value="MyCustomAction">1</Publish> <Publish Event="NewDialog" Value="CustomizeDlg">CONNECTED= "1"</Publish> </Control>

我的問題是爲什麼它不保留在當前對話框中,如果有錯誤意味着它沒有返回1.它會在單擊確定後進入完成對話框。

+0

我試過多次編輯代碼。這是我的代碼。 「 事件= 「DoAction」 VALUE = 「MyCustomAction」> 1 <發佈事件= 「NewDialog」 VALUE = 「CustomizeDlg」> CONNECTED = 「1」 ' – Dee

+0

隨時它返回一個actionresult.failure它進入到結束,而不是對話框保留在此對話框中 – Dee

+0

有時由於對話序列而導致失敗,這不是自定義操作失敗。嘗試使用msiexec/i your_package.msi/L * vx your_package.log生成日誌消息,以查找有關錯誤的更多詳細信息。 – sumitani

回答

1

來自自定義操作的返回值旨在供Windows Installer使用,而不是您。返回ActionResult.Failure告訴Windows你的CA失敗了,以至於安裝需要完成。如果您的CA正常工作並且對安裝過程不致命,則返回成功結果。使用屬性值來表示用戶結果。

根據我的經驗,處理該類型對話的更常見方法是使用從一個對話框到下一個對話框的正常序列。唯一的區別是,如果您的用戶驗證成功,您將啓動對話框並禁用下一步按鈕並啓用它。

+0

我有我的下一個按鈕進行根據財產結果。謝謝你的回答,我已經接受了。 – Dee