2009-07-13 39 views
2

我有一個名爲「XYZ」的窗口.net應用程序,在安裝後使用我的應用程序時,我創建了一個名爲「ABC」的自定義文件夾(文件夾可能在應用程序路徑以外的任何位置)。如何在C#.NET應用程序中卸載時刪除文件夾?

當我卸載應用程序時,所有文件夾都將被刪除,但「ABC」文件夾保留在那裏。

如何刪除除應用程序路徑以外的「ABC」文件夾?

回答

9

你必須使用該自定義操作:

  1. 添加一個新的庫(「CustomActions」)的安裝項目
  2. 添加=>新項=>安裝程序類
  3. 切換到代碼視圖和重寫卸載方法

代碼:

public override void Uninstall(IDictionary savedState) 
{ 
    base.Uninstall(savedState); 

    // Delete folder here. 
} 

如果你不想寫自己的DeleteFolder方法添加一個參考Microsoft.VisualBasic程序:

Microsoft.VisualBasic.FileIO.FileSystem.DeleteDirectory("C:\\MyFiles", Microsoft.VisualBasic.FileIO.DeleteDirectoryOption.DeleteAllContents); 
  1. 的CustomActions項目的項目輸出(主輸出)添加到安裝項目。 CustomActions的
  2. 右鍵單擊您的安裝項目,然後單擊查看=>自定義操作
  3. 右鍵單擊卸載=>添加自定義操作=>應用程序文件夾=>主輸出

注:這方面的一個很好的例子是位於here。他們更詳細地解釋了這個例子。起初在這個答案中並不明顯的一點是,您必須在APPLICATION'S項目中添加安裝程序類模板,而不是應用程序的SETUP項目。基本上,安裝項目會從添加到安裝項目中的「自定義操作」中的任何應用程序中調用procs Install()和Uninstall()。這個想法是重寫這兩個過程來注入代碼來執行您的出價...

+0

是否有可能從savedState []集合中獲取原始安裝目錄?我不想將路徑硬編碼到我的應用程序中,我希望它嘗試刪除原始安裝目錄。嘗試檢查當前目錄在'C:\ Windows \ SysWOW64'目錄中結束。 :/ – 2014-05-30 09:44:13

0

創建自定義安裝程序,你可以閱讀這裏更多detailes 編輯 這裏是更好link,樣品是在VB.NET,但不難理解;)

0

按我的知識,如果您使用的是安裝程序來安裝應用程序&該文件夾是由您的應用程序&而不是安裝程序創建的,則它不會將其刪除。

相反,您將不得不使用將在卸載時運行的自定義操作,該操作會將其刪除。或者創建一個自定義的C#應用​​程序,該應用程序僅在正在進行卸載時纔會運行,這將刪除該文件夾。 (我假設你使用的是一些專業的安裝程序類似的InstallShield)

相關問題