2010-02-10 63 views
2

我做了一個簡單的安裝類:C#安裝類

[RunInstaller(true)] 
public class MyCustumAction : Installer 
{ 
    public override void Install(System.Collections.IDictionary stateSaver) 
    { 
     base.Install(stateSaver); 
     string value = Context.Parameters["targetdir"]; 

     throw new Exception("Contact?? " + value); 

     WriteLog(value); 
    } 

    private void WriteLog(string message) 
    { 
     using(FileStream f = File.Create(@"C:\ik ben nieuw.txt")) 
     { 
      using (StreamWriter w = new StreamWriter(f)) 
      { 
       w.WriteLine("Dag van installatie: " + DateTime.Now.ToString()); 
       w.WriteLine(message); 

      } 
     } 
    } 
} 

在我安裝項目我已經做了以下內容:

  • 添加項目輸出 - 的主要輸出我裝配
  • 添加自定義操作上安裝目錄(自定義操作查看)
  • 集CustumActionData到 '/ TARGETDIR = 「[TARGETDIR] \」'
  • 構建我的程序集並構建安裝項目

在安裝期間,不引發Exception。爲什麼不?看來我的班級沒有被調用。我在這裏做錯了什麼?

UPDATE

當我創建一個單獨的項目,只有在它的安裝程序類,這ONT添加到我的項目輸出中並正確設置動作俗,我得到的例外!

現在我想知道爲什麼這個相同的文件沒有得到我自己(的WinForms)組件調用..

+1

只是一個方面說明:你應該真的使用你的一次性資源,而不是像這樣調用Dispose。 –

+1

Thnx爲提示。我修改了我的代碼。 – Martijn

+0

與'FileStream'相同,請' –

回答

0

你曾經通過

[runInstaller的(真)]

裝飾了你的班?

+0

是的,我有,但我沒有得到例外 – Martijn

+0

看到我的startpost。 – Martijn

0

我有,當我試圖解決同樣的問題的一些注意事項:

安裝在Vista確保您 從開始的Setup.exe,而不是從 微星

即使你在XP上,也許你應該嘗試從setup.exe運行。