【问题标题】:Is it possible to know if an installer is installing/updating/removing in a Custom Action?是否可以知道安装程序是否在自定义操作中安装/更新/删除?
【发布时间】:2010-12-17 19:04:14
【问题描述】:

是否可以知道安装程序是否在自定义操作中安装/更新/删除?

我们已经在 C# 中创建了一个自定义操作 dll,如果我们能够检测到安装程序正在做什么,那将会很有趣。在 WiX xml 文档中,您可以使用“未安装”、“删除”等(参见 nice overview)。但是是否可以在自定义操作中访问这些变量?

我们尝试将变量传递给自定义操作,但这只是为我们提供了一个带有字符串值的变量,例如“未安装”,而不是 true 或 false。

【问题讨论】:

    标签: c# installation wix


    【解决方案1】:

    嗯,我们最终在自定义操作中创建了两个入口点,并检查了我们应该调用的 de wxs 文件。不是我们想要的方式,但它现在有效。

    【讨论】:

      【解决方案2】:

      您可以参考ACTION property

      Javascript 中的自定义操作可以像这样获取属性;

      var installAction = Session.Property("ACTION");
      

      可能的值为 INSTALL、ADVERTISE 或 ADMIN。

      如果还不行,我敢打赌其他built-in properties 中的一个会满足。

      【讨论】:

        【解决方案3】:

        我假设您使用的是 DTF。您的自定义操作是安排立即执行还是延迟执行?

        为了即时,您可以使用 session["Installed"] 自己访问该属性。对于 deferred,您必须使用 CustomActionData 模式自己序列化/反序列化数据。

        我通常也不使用这些属性。我倾向于使用组件和/或功能操作状态将我的自定义操作与已安装的应用程序相关联。这允许在执行维护操作(例如添加和删除功能)时表现良好。

        【讨论】:

        • 您好,感谢您的回答。我们在某种程度上解决了这个问题。安装程序只能由我们自己执行,因此我们将接受执行自定义操作的事实。无论如何,我们都会收到一个 MessageBox,因此,对于技术用户,我们可以接受它。此外,我们现在还有其他优先事项。但是,如果我没记错的话,session["Installed"] 不起作用。
        猜你喜欢
        • 1970-01-01
        • 2023-03-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-25
        • 1970-01-01
        • 2017-10-30
        • 2023-04-07
        相关资源
        最近更新 更多