2013-02-14 55 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 >完成了它的工作。