在 MSI 安装程序脚本中尝试/捕获

本文关键字:捕获 脚本 MSI 安装 程序 | 更新日期: 2023-09-27 17:55:26

我有一个Windows安装程序提示用户输入MySQL信息(服务器,端口,用户名,密码),并希望在完成设置之前确保参数正确。

我有一个安装程序项目,其中包含链接到安装程序类的自定义操作,并且正在"安装"方法中进行错误检查。我的错误发生在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();
}

在 MSI 安装程序脚本中尝试/捕获

要强制回滚当前安装,您可以重新引发异常。 您刚刚显示在消息框中。