WiX:构建服务器构建上的神秘且难以诊断的ICE验证错误

bwe*_*rks 11 windows-installer wix tfsbuild tfs2010 wix3.5

我正在尝试使用在Windows Server 2008 R2 上运行的TFS 2010 将WiX集成到我的自动构建解决方案中.一切似乎都很简单,然后我明白了:

light.exe:执行ICE操作'ICE01'时出错.这种ICE故障的最常见原因是错误注册的脚本引擎.有关详细信息以及如何解决此问题,请参见http://wix.sourceforge.net/faq.html#Error217.外部UI消息记录器不期望以下字符串格式:"无法访问Windows Installer服务.如果未正确安装Windows Installer,则会发生这种情况.请联系您的支持人员以获取帮助."

那很奇怪.但是嘿!他们提供了一个链接.这应该有帮助,对吗?

错误LGHT0217
在WiX v3中,Light会自动运行验证 - Windows Installer内部一致性评估程序(ICE) - 每次成功构建之后.验证是捕获可能导致服务问题的常见创作错误的好方法,这就是为什么它现在默认运行的原因.不幸的是,Windows Vista和Windows Server 2008上存在一个可能导致ICE失败的常见问题.有关原因及其解决方法的详细信息,请参阅Heath Stewart的博客和Aaron Stebner的WebLog.

一点也不.这些帖子只描述了涉及脚本引擎注册的情况,并且它们描述的条件不存在.然而,我遇到了Re :( WiX用户)为什么我从serviceaccount建立ICE失败?(2010-01-14)似乎表明,如果我使用域帐户运行Windows Installer服务,它将起作用.这听起来像是值得一试.

"无论出于何种原因,在Windows 2008上(我没有测试Vista,XP,2003,7或2008 R2),MSI服务只能从具有管理访问权限或登录为"交互式"的登录中获得.登录是从没有管理权限的服务帐户无法访问msi服务,因此无法运行ICE测试."

但是,尝试使用我的构建服务帐户启动Windows Installer服务时:

Windows无法在SKILLET-1上启动Windows Installer服务.错误1297:服务帐户配置中不存在服务正常运行所需的权限.您可以使用服务Microsoft管理控制台(MMC)管理单元(services.msc)和本地安全设置MMC管理单元(secpol.msc)来查看服务配置和帐户配置.

好的,Windows,所以你告诉我,我的构建服务帐户缺少启动服务所需的一些模糊权限.让管理员应该解决这个问题吗?不,这也不起作用.

所以我恢复到Windows Installer服务帐户的本地系统.这次我使构建服务成为本地管理员,并且成功!但这不是解决方案.

我的下一个想法是尝试隔离构建服务实际需要的权限集来完成这项工作.这将是一个很好的解决方案,而不必向管理员集添加更多帐户.步骤1:进入本地安全策略并将构建服务帐户添加到当前授予管理员的所有权限.从理论上讲,这应该允许构建成功,从那里我可以有选择地删除权限,直到我已经隔离了必须持有的所有权限才能成功.

不幸的是,即使具有所有相同的权限,除非构建服务帐户是本地管理员的成员,否则构建仍将失败.为什么是这样?除LSP之外还有哪些其他东西依赖于我可以更改的管理员组,以使我的构建服务帐户与管理员等效?

当前结论:构建服务必须是管理员才能避免ICE验证错误.

开放式问题:

  • 为什么我的权限隔离想法不起作用?
  • Error 1297Windows Installer服务作为域用户运行时,抛出的这个神秘是什么?几乎没有我能找到的文件.

Sun*_*wal 1

我也面临同样的问题。经过一番努力和谷歌搜索后,我找到了解决方案:在 WiX 项目中抑制 ICE 验证将使项目编译。