2013-02-14 56 views
55

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

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

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

更新:

按照要求,这里有从最近失败的条目:

error LGHT0204: ICE38: ICE Internal Error 1002. API Returned: 1615.
error LGHT0204: ICE38: Error 2235: /OU.AppFramework.Includes.msi, _Profile, UPDATE Directory SET _Profile =0
error LGHT0204: ICE64: ICE Internal Error 1001. API Returned: 1615.
error LGHT0204: ICE64: Error 2242: OU.AppFramework.Includes.msi, _Profile, ALTER TABLE Directory ADD _Profile SHORT TEMPORARY HOLD
error LGHT0204: ICE91: ICE Internal Error 1001. API Returned: 1615.
error LGHT0204: ICE91: Error 2242: OU.AppFramework.Includes.msi, _Profile, ALTER TABLE Directory ADD _Profile SHORT TEMPORARY HOLD

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

更新2:

而现在我们又回到了600的错误,主要是这个错误的重复:

error LGHT0204: ICE30: ICE Internal Error 100. API Returned: 1615.
error LGHT0204: ICE30: Error 2235: AppFramework.Includes.msi, _ICE30SFN, SELECT Directory_Parent , Directory , DefaultDir , _ICE30SFN , _ICE30LFN FROM Directory WHERE Directory . Directory =? AND Directory_Parent <>?

更新3:

问题仍然甚至还试图存在后@limpan的建议。有一对夫妇通过了由MSI输出文件夹引起的光给予警告灯时试图访问MSI被锁定:

Warning 549 The directory '\AppData\Local\Temp\2opu3hxf' is in use and cannot be deleted. light.exe

+0

你能告诉我们日志文件吗? ICE30可能由安装中的重复文件引起。 – Gilad 2013-02-14 19:01:55

+0

你到底了吗?我有类似的问题 – Kuffs 2013-03-08 08:07:12

+0

不是。我已经从Debug配置中删除了构建WiX项目,并且没有看到错误,但是如果我在Release中编译但实际上并没有解决问题 – levelnis 2013-03-08 08:15:55

回答

8

我也遇到了同样的问题。在项目属性中,转至工具设置并单击抑制ICE验证

Enter image description here

+1

是的,感谢Sunil - 我已经发现了,但我宁愿尝试找到问题的根源,而不是压制它。它不会发生在任何其他开发者的机器上,所以这可能是关于我的设置。如果我在这里没有得到任何具体的答案,我可以禁止验证,但是当我检查 – levelnis 2013-02-21 07:42:58

17

对于ICE30:ICE内部错误100 API返回:1615,请试试这个,看看它的工作原理:

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

祝你好运!

+1

感谢Manu的项目文件时,这将影响每个人。不幸的是,我已经每次都经历过这个问题,正如我的问题所表明的那样。 – levelnis 2013-03-14 16:02:09

+0

抱歉,没有正确地读取您的操作系统:) – 2013-03-14 16:05:07

+0

对我来说,这只是我没有权限的目录,即使我是管理员。我必须拥有所有权。 – LCarter 2013-11-07 16:45:04

46

我也有这个问题,并在我的环境中解决它。

简短的回答:

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

龙答:

有生成过程中的警告,我第一次没有,因为我看到过于专注于错误:

Failed to delete temporary directory: C:\Users[username]\AppData\Local\Temp\5[uniqueFolderName] light.exe

我试图手动删除文件夹,但它被另一个进程使用。

事实证明,很多MSBuild.exe进程在构建期间启动,然后再次关闭。 你可以阅读更多关于这个原因,以及你可以做什么来改变堆栈溢出问题msbuild.exe staying open, locking files

这个线程:它在这个线程解决方案:

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

+0

终于成功回过头来看这个问题。看起来你的建议可能已经解决了问题@limpan。我已经要求团队添加环境变量并关注一天或两天的事情。如果没有人遇到任何问题,那么这对我会有帮助! – levelnis 2013-08-22 13:39:51

+0

经过进一步调查后,它看起来不像我们这样的问题。团队中的其他开发人员在添加环境变量后仍然报告了WiX错误,因此未完全解决问题 – levelnis 2013-08-22 15:22:18

+0

这对我而言并不适用。 – JDennis 2014-04-06 01:41:47

1

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

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

+0

有趣 - 谢谢@Mathew。不幸的是,我现在已经离开了这个合同,所以可能永远不会到达这个合同的底部。 – levelnis 2014-03-04 18:32:30

52

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

我们已经有一段时间了相同的问题,并尝试了各种解决方法,包括删除临时文件和设置msbuild环境变量。这些似乎都工作了一段时间,但最终(有时在几天后)问题会再次出现。

我注意到在我的机器上,devenv.exe是锁定light.exe试图删除的文件的进程。我也偶然发现了一个无关的thread,它提到了这个项目设置,使得WiX工具不再使用。我认为这可能值得一试,它似乎已经解决了我们的问题(迄今...)

+2

Wow将它添加到我的Setup.proj文件中,并且再也没有这个问题。非常感谢你不得不关闭visual studio,删除临时.msi文件并重新加载visual studio。 – goodies4uall 2015-01-28 16:41:43

+1

这是为我工作的解决方案。非常感谢! – Jammer 2015-05-25 22:38:59

+0

也为我工作。万分感谢! – nozzleman 2016-03-08 14:40:30

2

对于我MSBUILDDISABLENODEREUSE = 1(或/ nr:false在命令行上)没有解决问题。 但是<RunWixToolsOutOfProc> true </RunWixToolsOutOfProc >完成了它的工作。