WiX 引导程序:卸载链中的软件包

Posted

技术标签:

【中文标题】WiX 引导程序:卸载链中的软件包【英文标题】:WiX bootstrapper: Uninstall packages in a chain 【发布时间】:2013-05-06 11:47:57 【问题描述】:
 <ExePackage Id="PackageID1" DisplayName="xxx" Compressed="yes"
              SourceFile="..\xxx\MyExe.exe" Vital="yes"
              InstallCommand="parameters to the exe"
              UninstallCommand="parameters to the exe"/>

当我触发卸载操作时:

this.Engine.Detect();
this.Engine.Plan(LaunchAction.Uninstall);
this.Engine.Apply(System.IntPtr.Zero);

exePackage 没有被调用。但是,在安装过程中,它进入了带有正确参数的exe包。

我在这里遗漏了什么吗?

【问题讨论】:

Burn 在 %TEMP% 中创建的日志文件可以帮助您。可以在这里发帖吗? 【参考方案1】:

您的ExePackage 元素需要DetectCondition 属性。 DetectCondition 是 Burn 引擎确定软件包是否安装在机器上的方式。如果没有DetectCondition,引擎会认为该软件包从未安装,因此永远不需要卸载它。由于所有可执行文件都不同,您必须提供自己的DetectCondition。通常XxxSearch 命名空间中的XxxSearch 元素有助于检测您的可执行文件是否已安装。

注意:您可以在日志文件中看到“计划”,它应该显示PackageID1 包被检测为'Absent',即使它已安装。

【讨论】:

以上是关于WiX 引导程序:卸载链中的软件包的主要内容,如果未能解决你的问题,请参考以下文章

如何防止 wix 自定义引导程序卸载 UI 在升级过程中显示

如何从包含多个 MSI 的 wix 自定义引导程序包中安装/卸载单个 msi,例如安装项目的添加/删除功能?

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

改变 WIX 生成的 .NET 3.5 引导程序的行为

Wix3.7 自定义引导程序不显示主题库中的 WPF 主题

WiX:我在哪里可以下载引导程序?