Попробуйте / поймайте в MSI Установочный скрипт - PullRequest
2 голосов
/ 07 мая 2011

У меня есть установщик Windows, запрашивающий у пользователя информацию MySQL (сервер, порт, имя пользователя, пароль), и я хотел бы убедиться, что параметры верны до завершения установки.

У меня есть проект установщика с пользовательскими действиями, связанными с классом установщика, и я выполняю там проверку на наличие ошибок в методе «Install». Моя ошибка происходит в части 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 Ответ

1 голос
/ 07 мая 2011

Для принудительного отката текущей установки вы можете сбросить исключение. Вы только что отобразили в своем окне сообщения.

...