我在本地计算机上遇到了一些奇怪的问题。问题是间歇性的,但经过一些解决方案的重建后,WiX项目开始抛出ICE验证错误。
如果我进入AppData\Local\Temp
文件夹并删除包含MSI的所有临时文件夹,解决方案将再次编译。不久之后,问题又开始发生了。必须不断清理临时文件夹并不是一个可持续或令人满意的解决方案。
还有其他人遇到过这个问题吗?验证错误代码似乎总是ICE30,ICE38,ICE64和ICE91的组合
更新
根据要求,以下是最近失败的条目:
错误LGHT0204:ICE38:ICE内部错误1002.返回的API: 1615.
错误LGHT0204:ICE38:错误2235:/OU.AppFramework.Includes.msi,_Profile,UPDATEDirectory
SET_Profile
= 0
错误LGHT0204:ICE64:ICE内部错误1001. API 返回:1615。
错误LGHT0204:ICE64:错误2242: OU.AppFramework.Includes.msi,_Profile,ALTER TABLEDirectory
ADD_Profile
短暂暂停持有本次错误LGHT0204:ICE91:ICE 内部错误1001. API返回:1615。
错误LGHT0204:ICE91: 错误2242:OU.AppFramework.Includes.msi,_Profile,ALTER TABLEDirectory
添加_Profile
短暂暂停
有趣的是,这次失败是在我昨晚离开办公室之前发生的,当我今天早上来的时候解决方案编译好了。由于它似乎以WiX构建MSI的临时目录为中心,它可能是锁定文件的构建过程吗?
更新2:
现在我们又回到了600多个错误,大多数都是重复这个错误:
错误LGHT0204:ICE30:ICE内部错误100.返回的API:1615 错误LGHT0204:ICE30:错误2235:AppFramework.Includes.msi, _ICE30SFN,SELECT
Directory_Parent
,Directory
,DefaultDir
,_ICE30SFN
,_ICE30LFN
FROMDirectory
WHEREDirectory
。Directory
=?和Directory_Parent
<>?
更新3:
即使在尝试了@limpan的建议之后问题仍然存在。当灯光试图访问MSI时,由于MSI输出文件夹被锁定而导致灯光发出一些警告:
警告549目录'\ AppData \ Local \ Temp \ 2opu3hxf'正在使用中,无法删除。 light.exe
答案 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 ,请尝试此操作,看看它是否有效:
C:\Documents and Settings\\****user id****\\Local Settings\Temp\
。答案 3 :(得分:9)
我也面临同样的问题。在项目属性中,转到工具设置,然后单击抑制ICE验证。
答案 4 :(得分:3)
对我来说,MSBUILDDISABLENODEREUSE = 1(或命令行上的/ nr:false)没有解决问题。 但是&lt; RunWixToolsOutOfProc&gt; true&lt; / RunWixToolsOutOfProc&gt;完成了它的工作。
答案 5 :(得分:1)
我有同样的问题。原来是我的防病毒软件(防毒墙网络版)它锁定了Light.exe创建的中间文件,验证过程失败。从病毒扫描中排除临时文件夹或关闭ICE验证是不可接受的解决方案。
如果有人有更好的解决方案。我想知道。