如何在TFS持续集成构建机器上修复WiX错误217
根据你描述的情况——相同的构建在其他代理虚拟机正常运行,唯独这台出现LGHT0217错误,且代理已拥有管理员权限,这台失败的虚拟机大概率是Windows Installer相关组件注册异常、依赖缺失或者服务状态异常导致的。结合你已经排查过常规方案,我整理几个更针对性的排查和修复步骤:
检查并修复Windows Installer服务
打开services.msc找到「Windows Installer」服务:- 确认服务状态为已启动,启动类型设置为「手动」(默认配置)。如果服务未启动,尝试手动启动;若启动失败,执行以下命令重新注册服务:
msiexec /unregister msiexec /regserver
完成后重启虚拟机,再触发构建测试。
- 确认服务状态为已启动,启动类型设置为「手动」(默认配置)。如果服务未启动,尝试手动启动;若启动失败,执行以下命令重新注册服务:
重新安装WiX Toolset确保完整性
虽然其他代理正常,但这台虚拟机的WiX可能存在安装不完整或组件损坏的情况:- 先卸载当前WiX版本,重启虚拟机后,下载与VS2017兼容的WiX版本(推荐WiX 3.11,对VS2017支持更稳定),以管理员身份运行安装程序,勾选所有必要组件(尤其是Windows Installer相关工具)。
验证并更新Windows Installer引擎版本
错误提示提到Windows Installer服务无法访问,可能是引擎版本过低或损坏:- 打开命令提示符运行
msiexec,查看弹出窗口中的版本号,对比正常运行的虚拟机版本。如果版本差异较大,通过Windows更新或手动下载对应系统版本的Windows Installer安装包进行更新。
- 打开命令提示符运行
重新注册脚本引擎
错误提示指向「incorrectly registered scripting engine」,尝试重新注册VBScript和JScript引擎:- 以管理员身份打开命令提示符,执行:
regsvr32 vbscript.dll regsvr32 jscript.dll
执行完成后重启代理服务或虚拟机。
- 以管理员身份打开命令提示符,执行:
确认VS2017必要工作负载已安装
打开VS2017安装程序,检查是否已安装「Windows Installer XML Tools」工作负载,以及对应的.NET Framework开发组件(WiX依赖完整的.NET环境)。如果缺失,补充安装后重启代理。临时禁用ICE01验证排查根源
作为快速验证手段,可以在WiX项目中临时禁用ICE01验证,确认是否是验证环节的问题:- 在WiX项目的
PropertyGroup节点中添加:<SuppressIces>ICE01</SuppressIces>
如果构建成功,说明问题确实出在ICE验证依赖的组件上,再回到前面的步骤排查根源。
- 在WiX项目的
内容的提问来源于stack exchange,提问作者Manzoor_Khazi

