2011-05-06 2 views
2

사용자에게 MySQL 정보 (서버, 포트, 사용자 이름, 암호)를 묻는 Windows Installer가 있으며 설치를 완료하기 전에 매개 변수가 올바른지 확인하고 싶습니다.MSI 설치 프로그램 스크립트에서 시도/캐치

설치 관리자 클래스에 연결된 사용자 지정 작업이 포함 된 설치 프로그램 프로젝트가 있고 "설치"방법에서 내 오류를 검사하고 있습니다. 내 오류는 catch() 부분에서 발생합니다.

모든 의견이나 제안은 높이 평가됩니다.

편집 : [다음]을 누르면 설치 프로그램이 응용 프로그램을 설치 한 다음 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(); 
} 
+1

모든 일반적인 예외를 잡기 위해'catch (Exception ex) {}'를 추가하십시오 - 다른 것이 던져지고 있을까요? –

+1

Josh M.과 마찬가지로 모든 예외를 포착하는 것이 도움이 될 수 있습니다. Connector/NET에서 IOException을 발생시킬 수 있습니다. MySqlExceptions는 일반적으로 이미 설정된 연결을 통해 전송되는 서버 오류입니다. 연결을 설정할 때 오류가 발생하면 다른 오류가 발생할 수 있습니다. –

+0

messagebxo를 보여준 후에 예외를 단순히 되돌릴 수 있습니까? 그런데 System.Configuration.Install의이 설치 관리자는 MSI 또는 MSI 사용자 지정 동작과 관련이 없습니다. –

답변

1

현재 설치를 강제로 롤백하려면 예외를 다시 제기 할 수 있습니다. 당신은 당신의 메시지 상자에 표시했습니다.

관련 문제