web-dev-qa-db-fra.com

WiX 3.0 l'identifiant 217, alors qu'il est terminée par intégration continue

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:

  • VBScript et JScript ont été enregistrés sous admin.
  • Le service d'intégration dispose d'autorisations pour l'interaction avec le bureau et tous les fichiers.
  • Les constructions réussissent, lorsqu'elles sont exécutées manuellement sur le même ordinateur par un autre utilisateur ou même par un utilisateur connecté en tant que compte d'intégration (via RDP )

Je suis à court d'idées jusqu'à présent.

Comment résoudre ce problème tout en conservant la validation ICE?

59
Rinat Abdullin

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.

46
Rinat Abdullin

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.

29

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:

  • Créez un fichier .bat qui définit les variables d’environnement dont la taille dépasse 32 ko. Par exemple, il peut s'agir de 32 lignes de set Variable<number>=<text longer than 1024 characters>
  • Lancer cmd.exe
  • Exécutez le fichier de commandes que vous avez créé
  • Depuis la même fenêtre cmd.exe:
    • Essayez de construire le paquet MSI en utilisant WiX avec la validation ICE sur OU
    • Exécutez smoke.exe pour valider votre package OU
    • Il suffit de lancer msiexec /i Package.msi
  • Toutes les commandes ci-dessus finiront par signaler 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.

22
imagi

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).

9
vlad2135

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 :

  1. Élément de liste
  2. Accéder aux variables d'environnement sur la machine de l'agent de génération
  3. Créer deux variables système 
  4. "PF86" qui est égal à "C:\Program Files (x86)" 
  5. "PF" qui est égal à "C:\Program Files" 
  6. Ils sont si courts parce que je veux sauvegarder des caractères. Je les ai créés sans la barre oblique inverse finale parce que TEMP, TMP et d’autres ont été créés de la sorte et j’ai décidé de respecter la norme MS pour ces variables.
  7. Editez la variable PATH en remplaçant chaque "C:\Program Files (x86)" par %PF86% et chaque "C:\Program Files" par %PF%
  8. Fermer et construire et profiter!
  9. Cela a fonctionné pour moi. :)
4
Ognyan Dimitrov

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 .

2
gregmac

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

  1. Connectez-vous à votre ordinateur en tant qu'administrateur.
  2. Cliquez sur Démarrer, puis sur Exécuter.
  3. Dans la zone Ouvrir, tapez cmd, puis cliquez sur OK.
  4. À l'invite de commande, tapez msiexec.exe/unregister, puis appuyez sur Entrée.
  5. Tapez msiexec/regserver, puis appuyez sur Entrée.
  6. Redémarrer Windows

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.

2
Vladimir Demirev

J'ai des suggestions.

  • Essayez de mettre à jour la version de Microsoft Installer sur le serveur de génération.
  • Assurez-vous d'utiliser la dernière version de WiX 3.0, car sa version 3.0 est stable maintenant.
  • Si tout échoue, essayez d'exécuter le service de génération sous un utilisateur spécifique à qui vous pouvez manipuler des autorisations pour ...
1
Christopher Karper

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:

  1. Certaines des validations WiX ICE sont implémentées à l’aide de VBSCRIPT.
  2. Ainsi, lors de la compilation du fichier MSI, le serveur de génération doit avoir accès à c:\windows\system32\vbscript.dll. 
  3. Il est fort probable que l'utilisateur qui exécute votre génération a perdu l'accès à cette DLL. 
  4. Comme mentionné dans les réponses ci-dessus, recherchez l’accès administrateur/accès au registre et assurez-vous que votre utilisateur le possède bien. 

Voici les étapes que j'ai prises pour résoudre le problème: 

  1. Ouvrez cmd (exécuté en tant qu'administrateur) sur la machine de l'agent de génération.
  2. Exécuter RegEdit
  3. Sélectionnez la racine, puis cliquez sur ctrl + f et recherchez l'entrée de registre suivante: {B54F3741-5B07-11cf-A4B0-00AA004A55E8}
  4. Recherchez la clé InprocServer32\Default

 enter image description here

  1. Sur mon agent de génération, le chemin a été remplacé par un emplacement McAfee DLL. J'ai mis à jour le chemin d'accès à c:\windows\system32\vbscript.dll 
  2. La modification de l'entrée de registre n'était pas facile, car il s'agissait d'une entrée de registre protégée. J'ai utilisé le lien ci-dessous pour obtenir les autorisations d'accès modifiées avant de pouvoir modifier la propriété: Modifier une entrée de registre protégée

Une fois le chemin mis à jour, tout a commencé à fonctionner normalement.

0
Isaiah4110

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.

0
nath

Accédez à votre machine de construction et redémarrez le service Windows Installer.

0
TVSuser1654136