Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 4.0 卸载并不总是调用自定义操作_C# 4.0_Windows Installer_Custom Action - Fatal编程技术网

C# 4.0 卸载并不总是调用自定义操作

C# 4.0 卸载并不总是调用自定义操作,c#-4.0,windows-installer,custom-action,C# 4.0,Windows Installer,Custom Action,我已经设置了一个可以在同一台机器上多次安装的web应用程序。我需要在卸载过程中删除安装期间创建的站点。为此,我使用安装程序类编写了一个自定义操作 现在的问题是,如果我多次安装同一个web应用程序,那么只有在卸载最后一个应用程序时才会调用自定义卸载 有人能帮忙吗? 非常感谢。您使用什么工具来编写MSI?自定义操作使用了什么条件表达式 我猜您使用了一个工具,将您从中抽象出来,并且您正在使用组件动作状态。直到共享组件的最后一个客户端(产品)卸载,组件才会卸载,因此执行自定义操作 您还应该知道,安装程序

我已经设置了一个可以在同一台机器上多次安装的web应用程序。我需要在卸载过程中删除安装期间创建的站点。为此,我使用安装程序类编写了一个自定义操作

现在的问题是,如果我多次安装同一个web应用程序,那么只有在卸载最后一个应用程序时才会调用自定义卸载

有人能帮忙吗?
非常感谢。

您使用什么工具来编写MSI?自定义操作使用了什么条件表达式

我猜您使用了一个工具,将您从中抽象出来,并且您正在使用组件动作状态。直到共享组件的最后一个客户端(产品)卸载,组件才会卸载,因此执行自定义操作


您还应该知道,安装程序类自定义操作以其脆弱性而闻名。使用WixDTF(Windows安装程序XML、部署工具基础)管理的自定义操作将是一个更明智的选择。

我正在使用VisualStudio 2010和Windows安装项目。我没有在自定义操作中提到任何条件。除了包含安装程序类的安装程序之外,我还有一个项目。在instaler类中,我重写了Install、Commit和Uninstall等方法。每次尝试安装应用程序时,都会调用Install和Commit中提到的自定义操作。但是,当我尝试卸载应用程序时,不会调用自定义操作进行卸载。仅当安装了一个产品时才会调用它。所有windows installer自定义操作,甚至Visual Studio中的“卸载”自定义操作都有一个条件。VisualStudio只是对您隐藏了这一点。微软在VS2012中终止该项目类型的众多原因之一。看看使用ORCA构建的MSI,你会发现我的分析是正确的。