我正在使用引导程序来检查是否存在,如果需要,请安装一组第三方产品。然后安装我的产品。我想包括一个用于完整安装的卸载快捷方式,而不仅仅是我的产品。但是,为此,我需要能够为引导程序设置产品代码,然后在我的卸载快捷方式中引用它:
<ShortcutId="UninstallShortcut" Name="Uninstall My Product"
Description="Uninstalls My Product"Target="[System64Folder]msiexec.exe"
Arguments="/x [MyBootStrapperProductCode]" Icon="MainApp.ico"/>
我正在使用标准的Wix引导程序,但是在Bundle元素中看不到任何可用来设置产品代码的内容。
或者,是否可以防止引导程序在添加/删除程序中留下对自身的引用?第三方组件是永久部署。
捆绑产品与产品的工作方式不同。它不会使用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
我个人还没有实现它,但是没有找到其他解决此问题的方法,并提出了这个解决方法。
我来晚了,但至少是为了记录。据我了解,Chain of Burn中的产品是独立处理的。因此卸载就可以了。这意味着您不需要整个捆绑软件的代码。捆绑链中各个Msi文件的代码将用于卸载。对于3d各方的永久安装,有相应的Permanent属性。这一切在Ramirez N撰写的WiX 3.6指南的后两章中都有很好的描述。