【问题标题】:WIX detect uninstall or change click in Add/Remove programsWIX 检测卸载或更改单击添加/删除程序
【发布时间】:2013-06-26 23:28:02
【问题描述】:

我正在使用 WIX 3.7。我有一个基于的自定义托管引导程序 BryanJ 源码:http://bryanpjohnston.com/2012/09/28/custom-wix-managed-bootstrapper-application/

安装程序工作正常,但我想检测添加/删除程序中按下的按钮。我的意思是用户是否想要修复或更改已安装的应用程序。目前我只是打开一个窗口,其中包含可能的选项(用于卸载和更改)。

谢谢

【问题讨论】:

  • Bob 的回答是可行的方法,实际上是我在生产引导程序中通过 ARP 检测卸载的方法。在发布我的初始答案之前一定有一个大脑放屁,因为我试图寻找我如何在我自己的代码中检测到它并错过了它。虽然您可以使用我的解决方案,但 Bob 的解决方案要好得多。

标签: wix


【解决方案1】:

看看LaunchAction 枚举在Command.Action 属性中传递:

public enum LaunchAction
{
    Unknown,
    Help,
    Layout,
    Uninstall,
    Install,
    Modify,
    Repair,
    UpdateReplace,
    UpdateReplaceEmbedded,
}

【讨论】:

    【解决方案2】:

    认为它的工作方式是引导程序将适当的卸载和修复命令放在注册表中:

    HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\<productCode>
    

    例如,当我查看此位置的 WiX 3.7 条目时,它有一个名为 ModifyPath 的注册表项,其值为 "C:\ProgramData\Package Cache\{963ac4b4-a882-4471-8db9-c4adc7b42dc4}\WiX37.exe" /modify

    因此,您可以解析用于修复的/modify 开关的命令行,以及用于卸载的类似的/uninstall 开关。

    【讨论】:

    • 也可能是引导程序引擎为您执行此操作,只需订阅适当的事件并检查事件参数,但如果是这种情况我不确定如何获取该信息。
    猜你喜欢
    • 1970-01-01
    • 2021-04-19
    • 1970-01-01
    • 1970-01-01
    • 2010-10-02
    • 1970-01-01
    • 1970-01-01
    • 2010-09-16
    • 2017-05-02
    相关资源
    最近更新 更多