web-dev-qa-db-ja.com

WiX ICE検証エラー

ローカルマシンのWiXに奇妙な問題があります。問題は断続的ですが、ソリューションを数回再構築した後、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 SHORT TEMPORARY HOLD
エラーLGHT0204:ICE91:ICE内部エラー1001。APIが返されました:1615。
エラーLGHT0204:ICE91:エラー2242:OU.AppFramework.Includes.msi、_Profile、ALTER TABLE Directory ADD _Profile SHORT TEMPORARY HOLD

興味深いことに、昨夜オフィスを出る前にこの失敗が発生し、今朝来たときに解決策は問題なくコンパイルされました。 MSIがWiXによってビルドされる一時ディレクトリに集中しているように見えるため、ビルドプロセスがファイルをロックしている可能性がありますか?

アップデート2:

そして今、私たちは600を超えるエラーに戻りました。主にこのエラーの繰り返しです。

エラーLGHT0204:ICE30:ICE内部エラー100。APIが返されました:1615。
エラーLGHT0204:ICE30:エラー2235:AppFramework.Includes.msi、_ICE30SFN、SELECT Directory_ParentDirectoryDefaultDir_ICE30SFN_ICE30LFN FROM Directory WHERE Directory.Directory =? AND Directory_Parent <>?

アップデート3:

@limpanによる提案を試みた後でも、問題は依然として存在します。ライトがMSIにアクセスしようとしたときにロックされるMSI出力フォルダーによって引き起こされる、ライ​​トによって与えられる警告がいくつかあります。

警告549ディレクトリ '\ AppData\Local\Temp\2opu3hxf'は使用中であり、削除できません。 light.exe

66
levelnis

WiXプロジェクトファイルに<RunWixToolsOutOfProc>true</RunWixToolsOutOfProc>を追加してみてください。

しばらくの間、同じ問題が発生しており、一時ファイルの削除やmsbuild環境変数の設定など、さまざまな回避策を試しました。これらはすべてしばらくは機能しているように見えましたが、最終的には(数日後に)問題が再発する可能性があります。

私のマシンでは、devenv.exeがlight.exeが削除しようとしているファイルをロックしているプロセスであることに気付きました。また、関連のない thread に出くわしました。このプロジェクト設定では、WiXツールをプロセス外で実行できるようになっています。私はそれが試してみる価値があると思い、それは私たちのために問題を治したように見えます(これまで...)

61

私もこの問題を抱えており、私の環境でそれを解決しました。

短い答え:

環境変数MSBUILDDISABLENODEREUSE=1を追加し、Visual Studioを再起動します

長答:

ビルド中に、エラーに集中しすぎたために最初に表示されなかった警告がありました。

一時ディレクトリの削除に失敗しました:C:\ Users [ユーザー名]\AppData\Local\Temp\5 [uniqueFolderName] light.exe

手動でフォルダーを削除しようとしましたが、別のプロセスで使用されていました。

ビルド中に多くのMSBuild.exeプロセスが開始され、その後再び閉じられないことがわかりました。 Stack Overflowの質問msbuild.exeは開いたまま、ファイルをロックでその理由とその動作を変更するためにできることについて詳しく読むことができます。

このスレッド:それとこのスレッドのソリューション:

この答えが他の人の助けになることを願っています。

47
limpan

ICE30の場合:ICE内部エラー100。返されるAPI:1615、これを試して、動作するかどうかを確認してください。

  1. Visual Studioのすべてのインスタンスを閉じます(重要な場合がありますが、念のため)
  2. C:\Documents and Settings\\****user id****\\Local Settings\Temp\に移動します。
  3. 「.12qgaks」のように見えるすべてのフォルダーをクリアします。基本的には [〜#〜] msi [〜#〜] ファイルが含まれます
  4. ソリューションを開き、再コンパイルします。

がんばろう!

18
Manu Expedith

私も同じ問題に直面していました。プロジェクトプロパティで、ツール設定に移動し、-ICE検証の抑制をクリックします。

Enter image description here

9
Sunil Agarwal

私にとっては、MSBUILDDISABLENODEREUSE = 1(またはコマンドラインで/ nr:false)は問題を解決しませんでした。しかし、<RunWixToolsOutOfProc> true </ RunWixToolsOutOfProc>はその仕事を完了しました。

3
Markus Langlotz

同じ問題がありました。私のウイルス対策ソフトウェア(OfficeScan)であることが判明しました。Light.exeによって作成された中間ファイルがロックされ、検証プロセスが失敗しました。一時フォルダをウイルススキャンから除外するか、ICE検証をオフにすることは、許容できる解決策ではありません。

誰かがより良い解決策を持っているなら。私が知りたいのですが。

1
Mathew Gehres