2012-09-05 55 views
2

我正在使用引导程序来检查是否存在以及是否需要安装一组第三方产品安装。然后安装我的产品。我想包含完整安装的卸载快捷方式,而不仅仅是我的产品。然而,要做到这一点,我需要能够设置的产品代码的引导程序,然后在我的卸载快捷方式引用它:如何设置Wix引导程序安装的产品代码

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

我使用的是标准的维克斯引导程序,但我没有看到Bundle元素中的任何内容都可以让我设置产品代码。

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

回答

3

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

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

首先;你需要的UpgradeCode传递到您的微星,使用这种方法:

Passing command line args to MSI from WiX bundle

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

这将是这样的:“C:\ ProgramData \包缓存{GUID我} \ ExchangeBootStrapper.exe” /卸载

我个人还没有实现它,但无法找到任何其他解决这个问题,并提出了这个问题。

相关问题