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

WiX v3升级至v5后ComPlus应用无法安装求助

问题描述

原有基于WiX v3的安装程序可稳定部署13个ComPlus应用,运行时长约8年。通过HeatWave升级至WiX v5后,ComPlus应用完全未被安装。

原ComPlusApplication元素示例(升级时未修改):

<Component Id="ExampleApplication" Directory="INSTALLFOLDER" Guid="99C26517-64D1-4962-92BB-BE94F0A78B1F">
        <complus:ComPlusApplication Id="ExampleApplication" Name="ExampleApplication" Description="ExampleApplication" ApplicationAccessChecksEnabled="no" RunForever="yes" DumpOnFailfast="yes" MaxDumpCount="100" ThreeGigSupportEnabled="yes" Identity="[DOMAIN]\[USERNAME]" Password="[PASSWORD]"/>
</Component>

对比WiX v3与v5的MSI详细日志发现:

  • v3中ComPlusInstallExecute自定义动作正常执行
  • v5中仅存在隐藏属性Wix4ComPlusInstallExecute_X86,但无该自定义动作的执行记录

尝试手动将该自定义动作添加至InstallExecute序列:

<InstallExecuteSequence>
  <Custom Action="Wix4ComPlusInstallExecute_X86" After="Wix4ConfigureComPlusInstall_X86" />
</InstallExecuteSequence>

执行时出现报错:

MSI (s) (D8:50) [14:31:01:224]: Invoking remote custom action. DLL: C:\WINDOWS\Installer\MSI35C2.tmp, Entrypoint: ComPlusInstallExecute
ComPlusInstallExecute:  Error 0x80070003: Failed to open rollback file, name:
CustomAction Wix4ComPlusInstallExecute_X86 returned actual error code 1603 (note this may not be 100% accurate if translation happened inside sandbox)

已尝试为ComPlusApplication添加子元素、调整组件配置等操作,均未解决问题。

排查与解决思路
  • 确认ComPlus扩展的引用与命名空间
    WiX v5对扩展的引用方式和命名空间有变更:

    1. 项目需引用WixToolset.ComPlus.wixext扩展(替代v3的WixComPlusExtension)
    2. WXS文件顶部的命名空间需更新为xmlns:complus="http://wixtoolset.org/schemas/v4/wxs/complus"
      若引用或命名空间错误,WiX会忽略ComPlus元素,不会生成对应的自定义动作。
  • 检查组件的安装状态
    查看MSI日志确认包含ComPlusApplication的组件是否被标记为Local(即选中安装)。若组件因条件限制未被安装,关联的ComPlus自定义动作不会触发。此外,可尝试为组件显式设置KeyPath="yes",确保WiX正确识别组件的安装触发条件。

  • 不要手动添加ComPlus自定义动作
    手动添加Wix4ComPlusInstallExecute_X86报错的原因是WiX v5的ComPlus扩展会自动生成回滚文件路径等依赖属性,手动添加CA时缺失这些属性,导致无法找到回滚文件。应聚焦解决WiX未自动生成CA的问题,而非手动添加。

  • 验证ComPlus元素属性的兼容性
    核对WiX v5官方文档,确认使用的属性(如ThreeGigSupportEnabled、Identity)未被废弃或变更格式。部分旧属性可能在v5中被移除,或需要搭配新属性使用。

  • 分析WiX构建日志
    查看MSI构建过程的WiX日志,确认ComPlus扩展是否正确处理了ComPlusApplication元素,是否生成了相关的自定义动作和属性。如果日志中无ComPlus相关的处理记录,说明扩展未被正确加载。

  • 最小化测试排查
    创建一个极简的WiX v5项目,仅包含一个基础的ComPlusApplication元素(暂时去掉Identity、Password等复杂属性),测试是否能正常安装。若可行,逐步添加原项目中的配置,定位具体是哪个属性或配置导致的问题。

  • 检查自定义动作的执行条件
    用Orca打开生成的MSI文件,查看Wix4ComPlusInstallExecute_X86的Condition属性,确认条件是否满足当前安装场景(如是否仅在首次安装时执行,而你的场景是升级?)。若条件不匹配,CA不会触发。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 00:06:12