web-dev-qa-db-fra.com

Erreurs de validation WiX ICE

J'ai des problèmes étranges avec WiX sur ma machine locale. Le problème est intermittent, mais après quelques reconstructions de la solution, le projet WiX commence à générer des erreurs de validation ICE.

Si je vais dans mon AppData\Local\Temp dossier et supprimez tous les dossiers temporaires qui contiennent le MSI, la solution se compile à nouveau. Peu de temps après, le problème recommence. Devoir continuer à nettoyer les dossiers temporaires n'est pas une solution durable ou satisfaisante.

Quelqu'un d'autre a-t-il rencontré ce problème? Les codes d'erreur de validation semblent toujours être une combinaison de ICE30, ICE38, ICE64 et ICE91

Mise à jour:

Comme demandé, voici les entrées de l'échec le plus récent:

erreur LGHT0204: ICE38: erreur interne ICE 1002. API renvoyée: 1615.
erreur LGHT0204: ICE38: erreur 2235: /OU.AppFramework.Includes.msi, _Profile, UPDATE Directory SET _Profile = 0
erreur LGHT0204: ICE64: erreur interne ICE 1001. API renvoyée: 1615.
erreur LGHT0204: ICE64: erreur 2242: OU.AppFramework.Includes.msi, _Profile, ALTER TABLE Directory ADD _Profile MAINTIEN TEMPORAIRE COURT
erreur LGHT0204: ICE91: erreur interne ICE 1001. API renvoyée: 1615.
erreur LGHT0204: ICE91: erreur 2242: OU.AppFramework.Includes.msi, _Profile, ALTER TABLE Directory ADD _Profile MAINTIEN TEMPORAIRE COURT

Fait intéressant, cet échec s'est produit avant que je quitte le bureau la nuit dernière, et la solution s'est bien compilée à mon arrivée ce matin. Comme il semble se concentrer sur le répertoire temporaire où le MSI est construit par WiX, pourrait-il être le processus de construction verrouillant le fichier?

Mise à jour 2:

Et maintenant, nous sommes de retour à plus de 600 erreurs, principalement la répétition de cette erreur:

erreur LGHT0204: ICE30: erreur interne ICE 100. API renvoyée: 1615.
erreur LGHT0204: ICE30: erreur 2235: AppFramework.Includes.msi, _ICE30SFN, SELECT Directory_Parent, Directory, DefaultDir, _ICE30SFN, _ICE30LFN DE Directory OERE Directory.Directory =? ET Directory_Parent <>?

Mise à jour 3:

Le problème persiste même après avoir essayé la suggestion de @limpan. Il y a quelques avertissements donnés par la lumière qui sont causés par le verrouillage du dossier de sortie MSI lorsque la lumière tente d'accéder au MSI:

Avertissement 549 Le répertoire '\ AppData\Local\Temp\2opu3hxf' est en cours d'utilisation et ne peut pas être supprimé. light.exe

66
levelnis

Essayez d'ajouter <RunWixToolsOutOfProc>true</RunWixToolsOutOfProc> à votre fichier de projet WiX.

Nous avons eu le même problème pendant un certain temps et avons essayé diverses solutions de contournement, notamment la suppression des fichiers temporaires et la définition de la variable d'environnement msbuild. Tout cela a semblé fonctionner pendant un certain temps, mais finalement (parfois après quelques jours), le problème reviendrait.

J'ai remarqué que sur ma machine devenv.exe était le processus qui bloquait les fichiers que light.exe essayait de supprimer. Je suis également tombé sur un lien sans rapport thread qui mentionnait ce paramètre de projet pour que les outils WiX soient à court de processus. Je pensais que cela pouvait valoir la peine d'essayer et il semble avoir résolu le problème pour nous (jusqu'à présent ...)

61
Adrian Sureshkumar

J'avais aussi ce problème et je l'ai résolu dans mon environnement.

Réponse courte:

Ajoutez la variable d'environnement MSBUILDDISABLENODEREUSE=1 et redémarrez Visual Studio

Réponse longue:

Il y a eu un avertissement lors de la construction que je n'ai pas vu pour la première fois car j'étais trop concentré sur l'erreur:

Impossible de supprimer le répertoire temporaire: C:\Users [nom d'utilisateur]\AppData\Local\Temp\5 [uniqueFolderName] light.exe

J'ai essayé de supprimer le dossier manuellement, mais il était utilisé par un autre processus.

Il s'avère que de nombreux processus MSBuild.exe sont démarrés pendant la génération, puis ne sont pas fermés à nouveau. Vous pouvez en savoir plus sur la raison de cela et ce que vous pouvez faire pour changer ce comportement dans la question Stack Overflow msbuild.exe restant ouvert, verrouillage des fichiers.

Ce fil: lui et la solution dans ce fil:

J'espère que cette réponse pourra aider quelqu'un d'autre.

47
limpan

Pour ICE30: Erreur interne ICE 100. API renvoyée: 1615 , veuillez essayer ceci et voir si cela fonctionne:

  1. Fermez toutes les instances de Visual Studio (peut être juste celle qui compte mais juste au cas où)
  2. Aller à C:\Documents and Settings\\****user id****\\Local Settings\Temp\.
  3. Effacez tous les dossiers qui ressemblent à ceci .. 's12qgaks'. Fondamentalement, il contient les fichiers MSI
  4. Ouvrez la solution et recompilez.

Bonne chance!

18
Manu Expedith

J'avais moi aussi fait face au même problème. Dans les propriétés du projet, accédez à Paramètres de l'outil et cliquez sur Supprimer la validation ICE.

Enter image description here

9
Sunil Agarwal

Pour moi, MSBUILDDISABLENODEREUSE = 1 (ou/nr: faux sur la ligne de commande) n'a pas résolu le problème. Mais <RunWixToolsOutOfProc> true </RunWixToolsOutOfProc> a fait son travail.

3
Markus Langlotz

J'ai eu le même problème. Il s'est avéré être mon logiciel antivirus (OfficeScan). Les fichiers intermédiaires créés par Light.exe étaient verrouillés et le processus de validation a échoué. Exclure le dossier temporaire de l'analyse antivirus ou désactiver la validation ICE n'est pas une solution acceptable.

Si quelqu'un a une meilleure solution. J'aimerais savoir.

1
Mathew Gehres