2013-02-11 35 views
1

我有一個VS 2010安裝項目。 在安裝項目中,我有一個自定義對話框和一個自定義操作。 這兩個工作,我甚至可以調試我的自定義操作,並正確接收用戶在自定義對話框中提供的輸入。如何驗證.NET Installer類中的自定義對話框輸入?

我想驗證用戶輸入,只允許用戶在輸入有效時轉到下一步。 我可以使用MessageBox.Show顯示一個消息框,但是如何才能防止轉到下一步,直到用戶更正輸入爲止?

public override void Install(IDictionary stateSaver) 
{ 
    base.Install(stateSaver); 
    string myInput = Context.Parameters["MY_INPUT"]; // Value from custom dialog 
    if (myInput .....) 
    { 
     // Not a valid input, we do not want to proceed to the next step 
     MessageBox.Show("Not a valid input, please correct it"); 

     // What to do here? 
     // How can I tell the Installer do not accept this input? 
    } 
    else 
    { 
     // Valid input... 
    } 
} 

THX答案

回答

1

實現,這是從您的自定義操作設置屬性和使用該財產條件被稱爲NewDialog事件的最簡單的方法,當用戶按下「下一步」按鈕,所以如果條件不正確,事件不會被執行。

一個.NET安裝類自定義操作不能從它的代碼直接設置屬性,但是你可以使用你的C#代碼編寫自定義操作的另一種類型,它可以獲取/設置屬性,如下例所示:http://www.advancedinstaller.com/user-guide/qa-c-sharp-ca.html

編輯:你可以通過編輯從VS生成的MSI與Orca,但是,這是非常痛苦的,我會說,因爲你需要手動編輯多個表,如二進制,CustomActions,ControlEvent。這裏有一些事情可以幫助你開始:http://support.microsoft.com/kb/255905
另一種方法是使用更高級的安裝創作工具來切換創建安裝程序包。如果你想使用一款免費且功能強大的遊戲,我推薦使用WiX(http://wix.sourceforge.net/),它需要一段時間才能開始使用,但它的速度比在Orca中編輯要快。商業替代方案可讓您更快更輕鬆地編輯您的項目,它是高級安裝程序(http://www.advancedinstaller.com),但您需要完成所需的Enterprise許可證。

+0

如何在用戶點擊[下一步]按鈕時運行自定義操作?自定義操作現在在用戶點擊_all_對話框後運行,安裝即將開始。 – 2013-02-13 16:35:23

+0

在上面編輯的帖子中看到我的回覆 – 2013-02-14 07:03:25