【问题标题】:uninstall does not call the custom action always卸载并不总是调用自定义操作
【发布时间】:2013-05-29 08:14:20
【问题描述】:

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

现在的问题是,如果我多次安装同一个 Web 应用程序,则只会在最后一个应用程序的卸载期间调用自定义卸载。

有人可以帮忙吗? 提前非常感谢。

【问题讨论】:

    标签: c#-4.0 windows-installer custom-action


    【解决方案1】:

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

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

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

    【讨论】:

    • 我正在使用 Visual Studio 2010 和 windows 安装项目。我没有在自定义操作中提到任何条件。除了包含安装程序类的安装程序之外,我还有一个项目。在安装程序类中,我重写了安装、提交和卸载等方法。每次我尝试安装应用程序时都会调用安装和提交中提到的自定义操作。但是当我尝试卸载应用程序时,不会为卸载调用自定义操作。只有安装了一个产品时才会调用它。
    • 所有 Windows 安装程序自定义操作,甚至是 Visual Studio 中的“卸载”自定义操作,都有一个条件。 Visual Studio 只是对您隐藏了这一点。微软在 VS2012 中杀死该项目类型的众多原因之一。看看使用 ORCA 构建的 MSI,你会发现我的分析是正确的。
    猜你喜欢
    • 2011-08-10
    • 1970-01-01
    • 2011-03-02
    • 1970-01-01
    • 2017-07-06
    • 2012-03-21
    • 2011-11-21
    • 2013-03-08
    • 1970-01-01
    相关资源
    最近更新 更多