【问题标题】:How to set product code of Wix bootstrapper install如何设置 Wix 引导程序安装的产品代码
【发布时间】:2012-09-05 18:12:21
【问题描述】:

我正在使用引导程序来检查是否存在,并在需要时安装一组 3rd 方产品安装。然后它会安装我的产品。我想包括一个完整安装的卸载快捷方式,而不仅仅是我的产品。但是,要做到这一点,我需要能够为引导程序设置产品代码,然后在我的卸载快捷方式中引用它:

<ShortcutId="UninstallShortcut" Name="Uninstall My Product" 
   Description="Uninstalls My Product"Target="[System64Folder]msiexec.exe" 
   Arguments="/x [MyBootStrapperProductCode]" Icon="MainApp.ico"/>

我使用的是标准的 Wix 引导程序,但我在 Bundle 元素中看不到任何可以让我设置产品代码的内容。

或者,我可以阻止引导程序在添加/删除程序中留下对自身的引用吗?第 3 方组件是永久部署。

【问题讨论】:

    标签: wix bootstrapper


    【解决方案1】:

    捆绑包的工作方式与产品不同。它不使用 msiexec 来卸载,至少不公开。

    要为 BUNDLE 创建 UNISTALL 快捷方式,您需要一些巧妙的技巧。免责声明:仅用于开发/内部使用。

    首先;您需要使用以下方法将 UpgradeCode 传递给您的 MSI:

    Passing command line args to MSI from WiX bundle

    之后,在您的 MSI 文件中,您可以尝试搜索与您的 UpgradeCode 相等的注册表值 BundleUpgradeCode。如果你找到了 value 所在的文件夹,你可以提取 UnistallString 并直接执行它(使用 CustomAction)。

    它将是这样的:“C:\ProgramData\Package Cache{my GUID}\ExchangeBootStrapper.exe”/uninstall

    我个人还没有实现它,但是找不到任何其他解决方法来解决这个问题并想出了这个。

    【讨论】:

      【解决方案2】:

      我迟到了,但至少记录在案。据我了解,燃烧链中的产品是独立处理的。所以卸载确实如此。这意味着您不需要整个捆绑包的代码。捆绑链中各个 Msi 文件的代码将用于卸载。至于 3d 派对的永久安装,则有相应的永久属性。这一切在 Ramirez N 的 WiX 3.6 指南的最后两章中都有很好的描述。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-07-03
        • 2017-02-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多