wix 将选项传递给 MSI 进行修复

标签 wix installation windows-installer burn

当我使用 msi 修复时,会正确地重新创建注册表项。当使用 Burn 生成的 exe 时,不会重新创建该条目,除非与该 reg 条目关联的 exe 也需要比较。

我想知道,当burn调用msi时,它是否会覆盖msiexec的默认/fm行为。 该开关意味着“修复所有必需的特定于计算机的注册表项”

有什么方法可以确认、否认或修改该行为吗?

最佳答案

在 Burn 中规划“修复”操作时,REINSTALLMODE 为“cmuse”。对于“修改”操作,REINSTALLMODE 为“cmuso”。所以“m”在两种情况下都存在。

刻录日志文件应该显示“计划操作:操作”,这将告诉您它正在做什么。如果您正在执行修复操作,并且计算机上没有比您的 MSI 预期更新的可执行文件版本,则 Burn 的 REINSTALLMODE 应该可以工作。如果您正在进行“修复”,请在生成的 MSI 日志文件中查找相同的刻录执行,并查看未修复组件的组件状态。这应该可以帮助您回溯以查看组件未修复的原因。

来自提供的日志文件:

Command Line: ARPSYSTEMCOMPONENT=1 MSIFASTINSTALL=7 REINSTALLMODE=cmuse
REBOOT=ReallySuppress IGNOREDEPENDENCIES=ALL CURRENTDIRECTORY=C:\temp
CLIENTUILEVEL=3 MSICLIENTUSESEXTERNALUI=1

缺少REINSTALL=ALL表明EnableFeatureSelection='yes'。删除该属性(或将其更改为默认的“否”),或者您的 BA 需要处理 OnPlanMsiFeature() 回调

关于wix 将选项传递给 MSI 进行修复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15394382/

相关文章:

installation - Inno Setup 默认安装文件夹更改

linux - 为什么MongoDB在Ubuntu 11.10安装时无法创建用户?

linux - 无法在 Linux 中安装 Expect 实用程序

installation - 如何制作仅包装EXE文件的MSI

c# - 使用 WIX 创建安装程序时执行 sqlpackage.exe(它有几个依赖的 dll)

installation - 使用 WIX 安装 Windows 服务

string - WiX 简单换行?

visual-studio-2010 - 包括 c++ 作为 pre-req,但说 "A new version already exists"

windows - 在 Wix 中运行自定义操作之前添加用户

wix - 由 wix 安装程序创建的快捷方式名称,用于支持拉丁语以及俄语、日语和韩语字符串