2010-05-23 67 views
0

我需要在WiX 3.0中設置自定義操作。我在Windows應用程序exe中有以下設置。如何在WiX 3.0中設置.NET自定義操作?

我在StackOverflow: Removing files when uninstalling Wix上看過這個問題,但是我無法使用WiX 3.0獲得這個功能。這似乎與處理InstallUtilLib.dll,但我不能解決我如何在我的主Windows應用程序可執行文件中調用自定義操作。

另外,是否有一些方法,我可以使用手動調用和測試OnBeforeUninstall函數按預期工作?

Imports System.Configuration.Install.Installer 
Imports System.IO 

Public Class CustomInstaller 
    Inherits Configuration.Install.Installer 

    Protected Overrides Sub OnBeforeUninstall(ByVal savedState As System.Collections.IDictionary) 
     MyBase.OnBeforeUninstall(savedState) 

     Try 

    End Sub 

End Class 

回答

1

InstallUtil是一個醜陋的反模式。如果您需要託管的CustomAction,則應使用WiX的DTF模式。此外,只要本地WiX/MSI功能可以滿足您的需求,您也應該儘量避免使用CustomActions。你有沒有試過使用RemoveFile元素?

+0

RemoveFile不會刪除子目錄和文件等我正在處理獨立存儲和刪除設置,我不知道文件名。如果我的應用程序可以通過命令行「App.exe/reset」刪除設置,那該怎麼辦?如何在程序文件被刪除之前運行它? – Luke 2010-05-23 15:23:20

+0

確實如此,RemoveFile不會刪除遞歸目錄。所以這裏是我滾動... 我使用C#/ DTF編寫了一個不定製的自定義操作,在安裝過程中將臨時記錄發送到RemoveFiles表中。這樣我所要做的就是我需要刪除的業務邏輯。然後,Window Installer處理該刪除的實際執行情況,包括在卸載中止時回滾刪除操作。 – 2010-05-23 18:18:12

+0

謝謝,聽起來不錯。我在http://www.tramontana.co.hu/wix/lesson3.php#3.5找到了DTF和WiX的例子。但是我注意到sfxca.dll是x86或x64。我只做一個應用程序的構建,因爲如果合適,.NET框架將以64位運行它。我是否需要在自定義操作中手動處理? – Luke 2010-05-24 01:55:42