WiX ICE验证错误

时间:2013-02-14 16:25:52

标签: wix ice-validation

我在本地计算机上遇到了一些奇怪的问题。问题是间歇性的,但经过一些解决方案的重建后,WiX项目开始抛出ICE验证错误。

如果我进入AppData\Local\Temp文件夹并删除包含MSI的所有临时文件夹,解决方案将再次编译。不久之后,问题又开始发生了。必须不断清理临时文件夹并不是一个可持续或令人满意的解决方案。

还有其他人遇到过这个问题吗?验证错误代码似乎总是ICE30,ICE38,ICE64和ICE91的组合

更新

根据要求,以下是最近失败的条目:

  

错误LGHT0204:ICE38:ICE内部错误1002.返回的API:   1615.
错误LGHT0204:ICE38:错误2235:/OU.AppFramework.Includes.msi,_Profile,UPDATE Directory SET   _Profile = 0
错误LGHT0204:ICE64:ICE内部错误1001. API   返回:1615。
错误LGHT0204:ICE64:错误2242:   OU.AppFramework.Includes.msi,_Profile,ALTER TABLE Directory ADD   _Profile短暂暂停持有本次错误LGHT0204:ICE91:ICE   内部错误1001. API返回:1615。
错误LGHT0204:ICE91:   错误2242:OU.AppFramework.Includes.msi,_Profile,ALTER TABLE   Directory添加_Profile短暂暂停

有趣的是,这次失败是在我昨晚离开办公室之前发生的,当我今天早上来的时候解决方案编译好了。由于它似乎以WiX构建MSI的临时目录为中心,它可能是锁定文件的构建过程吗?

更新2:

现在我们又回到了600多个错误,大多数都是重复这个错误:

  

错误LGHT0204:ICE30:ICE内部错误100.返回的API:1615   错误LGHT0204:ICE30:错误2235:AppFramework.Includes.msi,   _ICE30SFN,SELECT Directory_ParentDirectoryDefaultDir_ICE30SFN_ICE30LFN FROM Directory WHERE   DirectoryDirectory =?和Directory_Parent<>?

更新3:

即使在尝试了@limpan的建议之后问题仍然存在。当灯光试图访问MSI时,由于MSI输出文件夹被锁定而导致灯光发出一些警告:

  

警告549目录'\ AppData \ Local \ Temp \ 2opu3hxf'正在使用中,无法删除。 light.exe

6 个答案:

答案 0 :(得分:59)

尝试将<RunWixToolsOutOfProc>true</RunWixToolsOutOfProc>添加到您的WiX项目文件中。

我们暂时遇到了同样的问题,并尝试了各种解决方法,包括删除临时文件和设置msbuild环境变量。这些似乎都有效,但最终(有时几天后)问题会再次出现。

我注意到在我的机器上devenv.exe是锁定light.exe试图删除的文件的过程。我还偶然发现了一个不相关的thread,它提到了这个项目设置,以使WiX工具失控。我认为它值得一试,它似乎已经为我们解决了问题(到目前为止......)

答案 1 :(得分:47)

我也遇到过这个问题并在我的环境中解决了这个问题。

简答:

添加环境变量MSBUILDDISABLENODEREUSE=1并重新启动Visual Studio

答案很长:

在构建过程中出现了一个警告,我第一次看不到,因为我过于专注于错误:

  

无法删除临时目录:C:\ Users [username] \ AppData \ Local \ Temp \ 5 [uniqueFolderName] light.exe

我尝试手动删除文件夹,但是其他进程正在使用它。

事实证明,很多MSBuild.exe进程在构建期间启动,然后不再关闭。 您可以在Stack Overflow问题 msbuild.exe staying open, locking files 中详细了解其原因以及如何更改该行为。

这个帖子:它和这个帖子中的解决方案:

我希望这个答案可以帮助别人。

答案 2 :(得分:18)

对于 ICE30:ICE内部错误100. API返回:1615 ,请尝试此操作,看看它是否有效:

  1. 关闭Visual Studio的所有实例(可能只是重要的实例,但以防万一)
  2. 转到C:\Documents and Settings\\****user id****\\Local Settings\Temp\
  3. 清除所有看起来像这样的文件夹。's12qgaks'。基本上它包含MSI个文件
  4. 打开解决方案并重新编译。
  5. 祝你好运!

答案 3 :(得分:9)

我也面临同样的问题。在项目属性中,转到工具设置,然后单击抑制ICE验证

Enter image description here

答案 4 :(得分:3)

对我来说,MSBUILDDISABLENODEREUSE = 1(或命令行上的/ nr:false)没有解决问题。 但是&lt; RunWixToolsOutOfProc&gt; true&lt; / RunWixToolsOutOfProc&gt;完成了它的工作。

答案 5 :(得分:1)

我有同样的问题。原来是我的防病毒软件(防毒墙网络版)它锁定了Light.exe创建的中间文件,验证过程失败。从病毒扫描中排除临时文件夹或关闭ICE验证是不可接受的解决方案。

如果有人有更好的解决方案。我想知道。

相关问题