web-dev-qa-db-de.com

WiX ICE-Validierungsfehler

Ich habe einige seltsame Probleme mit WiX auf meinem lokalen Computer. Das Problem tritt nur sporadisch auf, aber nach einigen Neuerungen der Lösung werden vom WiX-Projekt ICE-Validierungsfehler ausgegeben.

Wenn ich in mein AppData\Local\Temp Ordner und löschen Sie alle temporären Ordner, die die MSI enthalten. Die Lösung wird erneut kompiliert. Kurze Zeit später tritt das Problem erneut auf. Das Löschen der temporären Ordner ist keine nachhaltige oder zufriedenstellende Lösung.

Hat jemand dieses Problem festgestellt? Die Validierungsfehlercodes scheinen immer eine Kombination aus ICE30, ICE38, ICE64 und ICE91 zu sein

Aktualisieren:

Wie angefordert, sind hier die Einträge des letzten Fehlers:

fehler LGHT0204: ICE38: Interner ICE-Fehler 1002. API zurückgegeben: 1615.
Fehler LGHT0204: ICE38: Fehler 2235: /OU.AppFramework.Includes.msi, _Profile, UPDATE Directory SET _Profile = 0
Fehler LGHT0204: ICE64: Interner ICE-Fehler 1001. API zurückgegeben: 1615.
Fehler LGHT0204: ICE64: Fehler 2242: OU.AppFramework.Includes.msi, _Profile, ALTER TABLE Directory ADD _Profile SHORT TEMPORARY HOLD
Fehler LGHT0204: ICE91: Interner ICE-Fehler 1001. API zurückgegeben: 1615.
Fehler LGHT0204: ICE91: Fehler 2242: OU.AppFramework.Includes.msi, _Profile, ALTER TABLE Directory ADD _Profile SHORT TEMPORARY HOLD

Interessanterweise ist dieser Fehler aufgetreten, bevor ich gestern Abend das Büro verlassen habe, und die Lösung ist in Ordnung, als ich heute Morgen ankam. Da es sich scheinbar um das temporäre Verzeichnis handelt, in dem die MSI von WiX erstellt wird, kann es sich um den Erstellungsprozess handeln, der die Datei sperrt?

Update 2:

Und jetzt sind wir wieder bei über 600 Fehlern angelangt, die sich meistens wiederholen:

fehler LGHT0204: ICE30: Interner ICE-Fehler 100. API zurückgegeben: 1615.
Fehler LGHT0204: ICE30: Fehler 2235: AppFramework.Includes.msi, _ICE30SFN, SELECT Directory_Parent, Directory, DefaultDir, _ICE30SFN, _ICE30LFN FROM Directory WHERE Directory.Directory =? UND Directory_Parent <>?

Update 3:

Das Problem besteht auch nach dem Versuch des Vorschlags von @limpan. Es gibt einige Warnungen von light, die dadurch verursacht werden, dass der MSI-Ausgabeordner gesperrt wird, wenn light versucht, auf die MSI zuzugreifen:

Warnung 549 Das Verzeichnis '\ AppData\Local\Temp\2opu3hxf' wird verwendet und kann nicht gelöscht werden. light.exe

66
levelnis

Versuchen Sie, <RunWixToolsOutOfProc>true</RunWixToolsOutOfProc> zu Ihrer WiX-Projektdatei.

Wir hatten eine Weile das gleiche Problem und haben verschiedene Problemumgehungen versucht, darunter das Löschen der temporären Dateien und das Festlegen der Umgebungsvariablen msbuild. Diese schienen alle für eine Weile zu funktionieren, aber irgendwann (manchmal nach ein paar Tagen) kam das Problem wieder.

Ich bemerkte, dass devenv.exe auf meinem Computer die Dateien sperrte, die light.exe zu löschen versuchte. Ich bin auch auf einen nicht verwandten Thread gestoßen, der diese Projekteinstellung erwähnte, damit die WiX-Tools nicht mehr funktionieren. Ich dachte, es könnte einen Versuch wert sein und es scheint das Problem für uns geheilt zu haben (bisher ...)

61

Ich hatte dieses Problem auch und löste es in meiner Umgebung.

Kurze Antwort:

Fügen Sie die Umgebungsvariable MSBUILDDISABLENODEREUSE=1 Hinzu und starten Sie Visual Studio neu

Lange Antwort:

Während des Builds gab es eine Warnung, die ich zum ersten Mal nicht gesehen habe, da ich mich zu sehr auf den Fehler konzentriert habe:

Temporäres Verzeichnis konnte nicht gelöscht werden: C:\Users [Benutzername]\AppData\Local\Temp\5 [eindeutigerOrdnername] light.exe

Ich habe versucht, den Ordner manuell zu entfernen, aber er wurde von einem anderen Prozess verwendet.

Es stellt sich heraus, dass viele MSBuild.exe-Prozesse während der Erstellung gestartet und dann nicht wieder geschlossen werden. Sie können mehr über den Grund dafür und darüber, was Sie tun können, um dieses Verhalten zu ändern, in Stack Overflow question msbuild.exe bleibt geöffnet, Dateien werden gesperrt nachlesen.

Dieser Thread: es und die Lösung in diesem Thread:

Ich hoffe diese Antwort kann jemand anderem helfen.

47
limpan

Versuchen Sie dies für ICE30: ICE Internal Error 100. API Returned: 1615 und überprüfen Sie, ob es funktioniert:

  1. Schließen Sie alle Instanzen von Visual Studio (möglicherweise nur für den Fall, dass es darauf ankommt)
  2. Gehe zu C:\Documents and Settings\\****user id****\\Local Settings\Temp\.
  3. Löschen Sie alle Ordner, die so aussehen .. 's12qgaks'. Grundsätzlich enthält es die MSI Dateien
  4. Öffnen Sie die Projektmappe und kompilieren Sie sie erneut.

Viel Glück!

18
Manu Expedith

Auch ich hatte mich dem Problem gestellt. Gehen Sie in den Projekteigenschaften zu Tool Settings und klicken Sie auf Suppress ICE validation.

Enter image description here

9
Sunil Agarwal

Für mich hat MSBUILDDISABLENODEREUSE = 1 (oder/nr: false in der Befehlszeile) das Problem nicht gelöst. Aber <RunWixToolsOutOfProc> true </ RunWixToolsOutOfProc> hat seine Arbeit erledigt.

3
Markus Langlotz

Ich hatte das gleiche Problem. Es stellte sich heraus, dass es sich um meine Anti-Virus-Software (OfficeScan) handelte. Die von Light.exe erstellten Zwischendateien wurden gesperrt, und der Überprüfungsprozess ist fehlgeschlagen. Das Ausschließen des temporären Ordners vom Virenscan oder das Deaktivieren der ICE-Validierung ist keine akzeptable Lösung.

Wenn jemand eine bessere Lösung hat. Ich würde gerne wissen.

1
Mathew Gehres