2010-05-23 68 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