사용자에게 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();
}
모든 일반적인 예외를 잡기 위해'catch (Exception ex) {}'를 추가하십시오 - 다른 것이 던져지고 있을까요? –
Josh M.과 마찬가지로 모든 예외를 포착하는 것이 도움이 될 수 있습니다. Connector/NET에서 IOException을 발생시킬 수 있습니다. MySqlExceptions는 일반적으로 이미 설정된 연결을 통해 전송되는 서버 오류입니다. 연결을 설정할 때 오류가 발생하면 다른 오류가 발생할 수 있습니다. –
messagebxo를 보여준 후에 예외를 단순히 되돌릴 수 있습니까? 그런데 System.Configuration.Install의이 설치 관리자는 MSI 또는 MSI 사용자 지정 동작과 관련이 없습니다. –