2013-03-04 27 views
0

我已經在WiX 3.7中寫了一個自定義動作,現在當我想連接到一個數據庫(Firebird)的某個地方時,它只是返回該函數,我現在已經調試過了多一個小時,但無法弄清楚問題出在哪裏WiX 3自定義動作 - 函數無例外地返回

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); 
     } 

腳本也存在,DB文件也是。在記錄之前必須發生一些事情(「step0」),因爲這不會在我的登錄文件中結束。如果我手動拋出一個異常之前新的數據庫()它會進入捕獲和日誌。什麼可能是錯的?如果這將是一個編譯錯誤,爲什麼它不會以我的捕獲結束?

數據庫,文件也有通過自定義操作

回答

0

運行什麼是你的「數據庫」類的完全限定命名空間後,沒有新的Windows的上次更改日期?您是否嘗試使用Microsoft.Deployment.WindowsInstaller.Database打開Firebird數據庫?如果是這樣,那個類只能打開Windows Installer數據庫。 (我懷疑你。)

在看看:

Firebird: .NET — Examples of use

+0

是我做的。嗯,沒有想到這一點。這就是爲什麼我的XML數據庫規範不起作用的原因。但是我怎麼能在firebird數據庫上執行一個SQL腳本呢?我的意思是必須有一種方法來實現這個我認爲,否則我會有一個大問題... – Postback 2013-03-04 13:35:45

+0

DTF的卷是僅僅是一個模型,用於在Windows Installer上下文中運行託管的自定義操作。如何連接到Firebird數據庫將是與WiX和DTF無關的另一個問題。我已經發布了一個鏈接,讓你開始。 PS-請記住點贊並接受這個答案。 – 2013-03-04 13:45:55

+0

看起來像這是我需要的確切的東西。謝謝! – Postback 2013-03-04 14:07:43