Continuous integration WiX 3.0在通过持续集成执行时抛出错误217
这是Windows 2008上的自动生成套件在运行时(从2.0迁移到WiX 3.0后)引发的错误: LGHT0217:执行ICE操作“ICE01”时出错。这种ICE故障最常见的原因是错误注册的脚本引擎。有关详细信息以及如何解决此问题,请参阅。外部UI消息记录器不希望使用以下字符串格式:“无法访问Windows Installer服务。如果Windows Installer安装不正确,可能会发生这种情况。请与您的支持人员联系以获得帮助。”。in light.exe(0,0) 此外,以下是事件日志中显示的错误: MSInstaller:无法连接到服务器。错误:0x80070005 产品:[ProductName]--错误1719。无法访问Windows Installer服务。如果Windows Installer安装不正确,可能会发生这种情况。请与您的支持人员联系以获得帮助 直觉上:Continuous integration WiX 3.0在通过持续集成执行时抛出错误217,continuous-integration,wix,build-automation,wix3,Continuous Integration,Wix,Build Automation,Wix3,这是Windows 2008上的自动生成套件在运行时(从2.0迁移到WiX 3.0后)引发的错误: LGHT0217:执行ICE操作“ICE01”时出错。这种ICE故障最常见的原因是错误注册的脚本引擎。有关详细信息以及如何解决此问题,请参阅。外部UI消息记录器不希望使用以下字符串格式:“无法访问Windows Installer服务。如果Windows Installer安装不正确,可能会发生这种情况。请与您的支持人员联系以获得帮助。”。in light.exe(0,0) 此外,以下是事件日志中
- 并在admin下注册
- Integration service具有桌面交互和所有文件的权限
- 当其他用户或甚至以集成帐户(via)登录的用户在同一台计算机上手动执行生成时,生成成功
如何在保持ICE验证的同时解决此问题?我有一些建议
- 尝试在生成服务器上更新Microsoft安装程序版本
- 确保您使用最新版本的WIX3.0,因为它现在是3.0版本的稳定版本
- 如果所有其他操作都失败,请尝试在特定生成用户下运行生成服务,您可以对该用户的权限进行调整
- 故事的结尾:
在毫无运气地摆弄了集成帐户、服务激活等的权限之后,我最终在持续集成构建中禁用了ICE验证,但仍将其保留在本地构建中
要禁用ICE验证,可以在.wixproj文件中将SuppressValidation设置为true:
<PropertyGroup>
<SuppressValidation>true</SuppressValidation>
</PropertyGroup>
真的
或者将-sval
命令行选项传递到light.exe
来自:
在wixv3中,Light自动运行验证--
--在每次成功构建之后。验证是一项重要的工作
捕获可能导致服务问题的常见创作错误的好方法,
这就是它现在默认运行的原因。不幸的是,有一个共同的问题
这在Windows Vista和Windows Server 2008上发生,可能导致ICE
失败。有关原因和修复方法的详细信息,请参阅
和
将TFS build controller帐户添加到本地管理组并重新启动windows服务为我完成了任务。我找到了根本原因。我尝试了我发现的所有东西,包括类似于中发布的自定义验证器扩展 这不是各种线程中建议的并发问题。这是由太大的进程环境块(PEB)引起的 事实证明,Windows Installer无法处理大于32kB的进程环境块。在我的环境中,由于构建系统设置的变量数量及其大小(例如,包含多个重复值),PEB大约为34kB 有趣的是,per、WindowsXP和2003将PEB的硬限制设置为32KB。这可能会导致在构建的早期阶段出现易于捕获的构建中断。较新的Windows没有这样的限制,但我猜Windows Installer开发人员将其内部环境缓冲区限制为32kB,并且在超过该值时会正常失败 问题很容易重现:
- 创建一个.bat文件,用于设置大小超过32kB的环境变量。例如,它可以是32行
set变量=
- 启动cmd.exe
- 执行您创建的批处理文件
- 从同一cmd.exe窗口:
- 尝试在或上使用WiX和ICE验证构建MSI包
- 运行
验证您的软件包或smoke.exe
- 只需运行
msiexec/i Package.msi
- 以上所有命令都将报告
错误1719-无法访问Windows Installer
set > environment.txt
目标是获得小于~30kB的文件environment.txt
。对问题的正确描述(没有解决方案,除非将CruiseControl帐户添加到本地administrators组可以作为解决方案通过):
引自:
ICE验证需要具有交互帐户或管理员权限才能进行
高兴。例如,请参见(2009-11-14)或(2009-11-20)。imagi完全正确!我不敢相信这是真实的答案。禁止验证和让TFS用户成为管理员不是好的解决方案。另外,我找不到NT\权限将其添加到Administrators组,因此完全陷入了这个困境 我在Windows Server 2012数据中心上遇到与生成代理相同的错误。 要解决这个问题:
“PF86”
等于“C:\ProgramFiles(x86)”
“PF”
等于“C:\Program Files”
%PF86%
替换每个“C:\Program Files(x86)”
,用%PF%
替换每个“C:\Program Files”