Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Continuous integration WiX 3.0在通过持续集成执行时抛出错误217_Continuous Integration_Wix_Build Automation_Wix3 - Fatal编程技术网

Continuous integration WiX 3.0在通过持续集成执行时抛出错误217

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) 此外,以下是事件日志中

这是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安装不正确,可能会发生这种情况。请与您的支持人员联系以获得帮助

直觉上:

  • 并在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
      因此,解决方案是-检查构建脚本,减少环境变量的数量和大小,使它们都适合32kB。您可以通过运行以下命令轻松验证结果:

      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”
    • 它们很短,因为我想保存字符。我使它们没有最后的反斜杠,因为TEMP、TMP和其他变量都是如此,所以我决定对这些变量使用MS标准
    • 编辑路径变量,方法是用
      %PF86%
      替换每个
      “C:\Program Files(x86)”
      ,用
      %PF%
      替换每个
      “C:\Program Files”
    • 关闭