0

我在 WiX 3.7 中编写了一个自定义操作,现在当我想在某个地方连接到数据库(Firebird)时,它只是从函数中返回,我现在已经调试了一个多小时,但无法弄清楚它在哪里确切的问题是

Database db;
        try
        {
            db = new Database(@"C:\Cedex2\DB\CEDEX.FDB", DatabaseOpenMode.Transact);
            Debuging.Log("step0");
        }
        catch (Exception ex)
        {
            Debuging.Log(ex.Message);
        }
        try
        {
            string sqlScript = "";
            Debuging.Log("step1");
            using (StreamReader reader = new StreamReader(@"C:\Cedex2\DB\script1.sql"))
            {
                try
                {
                    sqlScript = reader.ReadToEnd();
                }
                catch (Exception ex)
                {
                    Debuging.Log(ex.Message);
                }
            }
            Debuging.Log(sqlScript);
            db.Execute(sqlScript);
            Debuging.Log("step2");
            db.Close();
            Debuging.Log("closed");
        }
        catch (Exception ex)
        {
            Debuging.Log(ex.Message);
        }

脚本存在,数据库文件也存在。在记录(“step0”)之前必须发生一些事情,因为这不会出现在我的记录文件中。如果我在 new Database() 之前手动抛出异常,它将进入捕获并记录。有什么问题?如果它是一个编译器错误,为什么它不会在我的捕获中结束?

运行自定义操作后,数据库文件也没有新的 Windows-Lastmodified 日期

4

1 回答 1

0

您的“数据库”类的完全限定名称空间是什么?您是否尝试使用 Microsoft.Deployment.WindowsInstaller.Database 打开 Firebird 数据库?如果是这样,该类仅打开 Windows Installer 数据库。(我怀疑你是。)

看一眼:

Firebird:.NET — 使用示例

于 2013-03-04T13:32:08.363 回答