如何设置Wix引导程序安装的产品代码

问题描述 投票:3回答:2

我正在使用引导程序来检查是否存在,如果需要,请安装一组第三方产品。然后安装我的产品。我想包括一个用于完整安装的卸载快捷方式,而不仅仅是我的产品。但是,为此,我需要能够为引导程序设置产品代码,然后在我的卸载快捷方式中引用它:

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

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

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

wix bootstrapper
2个回答
3
投票

捆绑产品与产品的工作方式不同。它不会使用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
投票

我来晚了,但至少是为了记录。据我了解,Chain of Burn中的产品是独立处理的。因此卸载就可以了。这意味着您不需要整个捆绑软件的代码。捆绑链中各个Msi文件的代码将用于卸载。对于3d各方的永久安装,有相应的Permanent属性。这一切在Ramirez N撰写的WiX 3.6指南的后两章中都有很好的描述。

© www.soinside.com 2019 - 2024. All rights reserved.