我正在使用引导程序检查是否存在,如果需要,请安装一组第三方产品安装。然后安装我的产品。我想包括完整安装的卸载快捷方式,而不仅仅是我的产品。但是,要做到这一点,我需要能够为引导程序设置产品代码,然后在我的卸载快捷方式中引用它:
<ShortcutId="UninstallShortcut" Name="Uninstall My Product"
Description="Uninstalls My Product"Target="[System64Folder]msiexec.exe"
Arguments="/x [MyBootStrapperProductCode]" Icon="MainApp.ico"/>
我正在使用标准的Wix引导程序,但我在Bundle元素中没有看到任何可以让我设置产品代码的内容。
或者,我可以阻止引导程序在“添加/删除程序”中留下对自身的引用吗?第三方组件是永久部署。
答案 0 :(得分:3)
Bundle与Product的工作方式不同。它不使用msiexec来取消,至少不公开。
为了为BUNDLE创建UNISTALL快捷方式,你需要一些聪明的技巧。免责声明:仅供开发/内部使用。
首先;您需要使用以下方法将UpgradeCode传递给您的MSI:
Passing command line args to MSI from WiX bundle
之后,在您的MSI文件中,您可以尝试搜索与您的UpgradeCode相等的注册表值BundleUpgradeCode。如果找到了值所在的文件夹,则可以提取UnistallString并直接执行它(使用CustomAction)。
它将是这样的:“C:\ ProgramData \ Package Cache {my GUID} \ ExchangeBootStrapper.exe”/ uninstall
我个人还没有实现它,但找不到任何其他解决方法来解决这个问题,并提出了这个问题。
答案 1 :(得分:1)
我迟到了,但至少是为了记录。据我了解,Chain of Burn中的产品是独立处理的。因此卸载就可以了。这意味着您不需要整个捆绑软件的代码。捆绑链中各个Msi文件的代码将用于卸载。对于3d各方的永久安装,有相应的Permanent属性。这一切在Ramirez N撰写的WiX 3.6指南的后两章中都有很好的描述。