2
我有一個Windows安裝程序提示用戶輸入MySQL信息(服務器,端口,用戶名,密碼),並希望在完成安裝之前確保參數是正確的。在MSI安裝程序腳本中嘗試/捕獲
我有一個安裝程序項目與自定義操作鏈接到安裝程序類,我正在做我的錯誤檢查在「安裝」方法。我的錯誤發生在catch()
部分。
任何建議或意見非常感謝。
編輯:當我點擊[Next]安裝程序安裝應用程序,然後提示MessageBox(如果有錯誤),但完成安裝。我希望它能夠回滾並調出前一個屏幕。
Edit2:從MySqlException引發的異常是:「無法連接任何指定的MySQL主機」,這是正確的,但安裝程序不會返回/回滾。
public override void Install(IDictionary stateSaver)
{
base.Install(stateSaver);
// parameters from installer
// generate connection string conStr
MySqlConnection conn = new MySqlConnection(conStr);
MySqlCommand cmd = new MySqlCommand();
// open connection and create database
try
{
conn.Open();
cmd.Connection = conn;
// create database
// create table
// insert values to test
}
catch (MySqlException ex)
{
//I would like this to go back to the prior page
//where it asks for user input
MessageBox.Show("There was a problem connecting to the database.");
this.Rollback(stateSaver); // not working?
}
// close connection
conn.Close();
}
添加一個catch(Exception ex){}'來捕獲所有的泛型異常 - 可能還有其他東西被拋出? – 2011-05-06 20:11:23
就像Josh M.說的那樣,抓住所有例外情況可能會有幫助。 Connector/NET可能會拋出IOExceptions。 MySqlExceptions通常是通過已建立的連接發送服務器錯誤,如果建立連接時發生錯誤,則可能會拋出其他錯誤。 – 2011-05-06 20:28:08
在顯示messagebxo之後,您是否可以簡單地重新拋出異常?順便說一下這個來自System.Configuration.Install的安裝程序與MSI和MSI自定義操作沒有任何關係。 – 2011-05-06 20:38:00