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, UPDATEDirectory
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 TABLEDirectory
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 TABLEDirectory
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, SELECTDirectory_Parent
,Directory
,DefaultDir
,_ICE30SFN
,_ICE30LFN
DEDirectory
OEREDirectory
.Directory
=? ETDirectory_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
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 ...)
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.
Pour ICE30: Erreur interne ICE 100. API renvoyée: 1615 , veuillez essayer ceci et voir si cela fonctionne:
C:\Documents and Settings\\****user id****\\Local Settings\Temp\
.Bonne chance!
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.
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.
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.