11

我正在尝试使用在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。

一点也不。这些帖子只是描述了涉及脚本引擎注册的情况,而他们描述的情况并不存在。但是,我遇到了回复:(WiX 用户)为什么从服务帐户构建 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 1297以域用户身份运行 Windows Installer 服务时抛出的这个神秘现象是什么?我几乎找不到任何文档。
4

1 回答 1

1

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

于 2011-03-27T07:34:07.770 回答