You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Wix 3.11.1升级进入维护模式未完成,残留双程序条目

问题分析与解决方案

从你的描述和日志信息来看,核心问题是MajorUpgrade没有正确触发旧版本的完全卸载,导致旧版本残留并进入维护模式。下面是具体的原因分析和解决步骤:

1. 锁定日志中的关键异常

日志里这条信息是突破口:

MSI (s) (68:BC) [15:04:38:423]: Note: 1: 2203 2: C:\WINDOWS\Installer\inprogressinstallinfo.ipi 3: -2147287038

2203错误表示Windows Installer无法访问指定文件,这里的inprogressinstallinfo.ipi是MSI运行时的临时锁定文件,通常意味着之前的安装/卸载进程没有正常结束,导致文件被占用,进而干扰了旧版本的卸载流程,触发了维护模式。

2. 调整MajorUpgrade的卸载时机

你的MajorUpgrade元素缺少Schedule属性,默认的afterInstallInitialize时机可能在文件已经被新版本安装程序占用后才尝试卸载旧版本,容易触发维护模式。建议将卸载时机提前到afterInstallValidate,这样能在文件被使用前完成旧版本卸载:

修改后的MajorUpgrade配置:

<MajorUpgrade AllowDowngrades="no" 
              AllowSameVersionUpgrades="yes" 
              DowngradeErrorMessage="!(loc.NewerVersionInstalled)"
              Schedule="afterInstallValidate" />

3. 解决临时文件锁定问题

针对inprogressinstallinfo.ipi的锁定问题,按以下步骤处理:

  • 重启你的电脑,强制释放被占用的文件资源
  • 如果重启后问题依旧,以管理员权限手动删除C:\WINDOWS\Installer\inprogressinstallinfo.ipi文件

4. 单独验证旧版本的卸载流程

为了排除旧版本自身的卸载问题,单独运行旧版本的卸载命令,生成详细日志排查:

msiexec /x {FC49F622-02E6-40D9-ACD9-92BDD4AF5979} /qn /l*v uninstall_old.log

查看uninstall_old.log,确认是否有自定义操作失败、文件无法删除等其他异常导致卸载进入维护模式。

5. 检查组件一致性

如果新旧版本存在共享组件,确保组件遵循MSI的组件规则:

  • 组件内容变化时,必须更新组件GUID
  • 组件内容不变时,保持GUID一致并递增组件版本号
    错误的组件配置会导致Windows Installer认为组件需要保留,从而阻止旧版本的完全卸载。

6. 再次确认UpgradeCode的一致性

虽然你提供的UpgradeCode是相同的,但务必检查旧版本和新版本的Product元素中UpgradeCode完全一致,任何拼写错误都会导致MajorUpgrade无法检测到旧版本。

内容的提问来源于stack exchange,提问作者dgxhubbard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:53:22