Voici l'erreur provoquée par notre suite de construction automatisée sous Windows 2008 lors de l'exécution de ICE (après la migration de WiX 2.0 vers WiX 3.0):
LGHT0217: Erreur lors de l'exécution de l'action ICE 'ICE01'. La cause la plus fréquente de ce type d'échec ICE est un moteur de script mal enregistré. Voir http://wix.sourceforge.net/faq.html#Error217 pour plus de détails et savoir comment résoudre ce problème. Le format de chaîne suivant n'était pas attendu par le consignateur de messages d'interface utilisateur externe: "Impossible d'accéder au service Windows Installer. Cela peut se produire si Windows Installer n'est pas correctement installé. Contactez le support technique pour obtenir de l'aide.". dans light.exe (0, 0)
En outre, les erreurs suivantes apparaissent dans le journal des événements:
MSIInstaller: Impossible de se connecter au serveur. Erreur: 0x80070005 Produit: [NomProduit] - Erreur 1719. Impossible d'accéder au service Windows Installer. Cela peut se produire si Windows Installer n'est pas correctement installé. Contactez votre support technique pour obtenir de l'aide.
Intuitivement:
Je suis à court d'idées jusqu'à présent.
Comment résoudre ce problème tout en conservant la validation ICE?
Fin de l'histoire :
Après avoir manipulé les autorisations du compte d'intégration, DCOM , l'activation du service, etc. sans succès, j'ai finalement simplement désactivé la validation ICE dans la construction à intégration continue, tout en la conservant dans la construction locale.
Pour désactiver la validation ICE, vous pouvez définir SuppressValidation sur true dans le fichier .wixproj:
<PropertyGroup>
<SuppressValidation>true</SuppressValidation>
</PropertyGroup>
Ou passez l'option de ligne de commande -sval
à light.exe
.
L'ajout du compte contrôleur de génération TFS au groupe d'administrateurs local et le redémarrage du service Windows ont fait le travail pour moi.
J'ai trouvé la cause racine. J'ai essayé tout ce que j'ai trouvé, y compris l'extension de validation personnalisée similaire à celle publiée dansRe: [utilisateurs de WiX] light.exe a échoué de manière aléatoire lors de l'exécution d'ICE..
Ce n'est pas un problème de concurrence, comme suggéré dans divers threads. Cela est dû à un bloc d'environnement de processus (PEB) trop important.
Il s’avère que Windows Installer ne peut pas gérer un bloc d’environnement de processus supérieur à 32 Ko. Dans mon environnement, en raison du nombre de variables définies par le système de construction et de leur taille (par exemple, variable PATH contenant plusieurs valeurs dupliquées), le PEB était d'environ 34 ko.
Fait intéressant, les variables d'environnement per, Windows XP et 2003 avaient une limite stricte de PEB définie sur 32 kilo-octets. Cela provoquerait probablement une pause de construction facile à attraper dans une phase antérieure de la construction. Les nouvelles versions de Windows n’ont pas cette limite, mais j’imagine que les développeurs Windows Installer ont limité leurs mémoires tampons d’environnement interne à 32 Ko et échouent normalement lorsque la valeur est dépassée.
Le problème peut être facilement reproduit:
set Variable<number>=<text longer than 1024 characters>
smoke.exe
pour valider votre package OUmsiexec /i Package.msi
Error 1719 - Windows Installer could not be accessed
.La solution est donc: passez en revue vos scripts de construction et réduisez le nombre et la taille des variables d’environnement de manière à ce qu’ils tiennent tous dans 32 Ko. Vous pouvez facilement vérifier les résultats en exécutant:
set > environment.txt
L’objectif est d’obtenir le fichier environment.txt
inférieur à ~ 30 Ko.
La description correcte (sans solution, sauf si l'ajout du compte CruiseControl au groupe des administrateurs locaux peut passer en solution) du problème:
Citation deWix 3.5 & Cruise Control donne errorLGHT0217:
La validation ICE nécessite un compte interactif ou des privilèges d’administrateur pour que Soit heureux. Voir, par exemple,Projets WiX contre TFS 2010 Team Build(2009-11-14) ouObjet: [Utilisateurs de WiX] Aide à la création d'un correctif(2009-11-20).
imagi a totalement raison! Je ne pouvais pas croire que c'est la vraie réponse. Supprimer la validation et créer un utilisateur TFS Administrateur ne sont pas de bonnes solutions. De plus, je ne pouvais pas trouver NT\Authority pour l'ajouter au groupe des administrateurs et j'étais totalement bloqué dans cette tâche.
J'ai la même erreur sur Windows Server 2012 Datacenter que Build Agent. Résoudre le problème :
"PF86"
qui est égal à "C:\Program Files (x86)"
"PF"
qui est égal à "C:\Program Files"
"C:\Program Files (x86)"
par %PF86%
et chaque "C:\Program Files"
par %PF%
De http://wix.sourceforge.net/faq.html#Error217 :
Dans WiX v3, Light exécute automatiquement la validation - Évaluateurs de cohérence interne de Windows Installer (ICE) - après chaque création réussie. La validation est un excellent moyen De détecter les erreurs de création courantes pouvant entraîner des problèmes de service, , raison pour laquelle elle est maintenant exécutée par défaut. Malheureusement, il existe un problème courant Qui se produit sous Windows Vista et Windows Server 2008 et qui peut entraîner l’échec des ICE . Pour plus de détails sur la cause et la marche à suivre, voir Blog de Heath Stewart Et WebLog d'Aaron Stebner .
Je recevais la même erreur ICE, mais le problème s'est avéré corrompu du service Windows Installer. Cette solution a fonctionné pour moi: http://support.Microsoft.com/kb/315353
Vérifiez également que le compte SYSTEM dispose d'autorisations d'accès de contrôle total au HKEY_CLASSES_ROOT Hive dans le registre Windows. Dans certains cas, vous devrez peut-être également ajouter des comptes d’administrateur.
J'ai des suggestions.
Aucune des suggestions ci-dessus n'a fonctionné pour moi. Pour moi, l'anti-virus (McAfee) est apparu et semble avoir mis à jour l'entrée de registre vbscript.dll dans un emplacement incorrect DLL. Ce sont les choses à garder à l'esprit:
Voici les étapes que j'ai prises pour résoudre le problème:
Une fois le chemin mis à jour, tout a commencé à fonctionner normalement.
J'ai rencontré le même problème et je n'ai pas aimé supprimer la validation ICE. Ma configuration: j'ai utilisé mon propre ordinateur en tant qu'agent de construction sur Visual Studio Online (VSO). Ma solution était de changer le compte utilisé pour exécuter le service sur ma machine. Au lieu d’utiliser le service réseau ou le service local, j’ai simplement fait en sorte que le service se connecte avec mon propre compte, qui dispose de tous les droits nécessaires.
Accédez à votre machine de construction et redémarrez le service Windows Installer.