Résoudre l’Erreur 217 rencontrée avec Azure Pipeline et WIX

Si vous souhaitez mettre en place un pipeline de build utilisant WIX pour générer vos fichiers .msi il est possible que rencontriez l’erreur 217.

En se reportant à la documentation de WIX, on constate qu’il s’agit d’un problème d’exécution de scripts VBScript. Mais les solutions proposées ne s’appliquent pas à des environnements récents (Windows Server 2012 à 2019, ou Windows 8 à 10). Si vous y regardez de plus près, vous ne trouverez pas les clés de registre évoquées.

Ces scripts joint un rôle important dans la vérification des fichiers .msi produits. Il ne faut donc pas les désactiver.

Mais si l’on tente d’exécuter un petit script VBScript sur le serveur, on constatera qu’il s’exécute parfaitement.

Quelle est la source du problème ?

Le problème vient en fait de la seule différence existante entre votre contexte d’exécution et celui de l’agent de build.

Par commodité, l’agent de build s’exécute le plus souvent en mode service Windows avec le compte de service réseau. Dans ce cas, le compte à les droits pour effectuer l’ensemble des actions de manipulation de fichiers et de build. La seule chose qui lui est impossible est d’interagir avec le bureau. C’est justement ce dont les scripts VBScript de WIX ont besoin pour s’exécuter.

Quelle solution appliquer ?

Pour pouvoir utiliser WIX, il suffit donc de modifier le compte qui sert à exécuter le service et de lui donner le droit d’interagir avec le bureau.

Pour cela, on ouvre la console des services Windows. Il faut alors identifier le service (préfixé par Azure Pipeline pour les versions récentes ou VSTS Agent pour les anciennes versions).

Un click droit sur le service permet d’éditer les propriétés du service.

Identification du service windows


La partie à modifier se trouve sur l’onglet « Connexion ».

Affichage de la configuration du service windows


Il suffit de sélectionner le compte système local et de cocher la case autorisant les interactions avec le bureau.

Service modifié


Après validation des modifications, on a droit à un avertissement qui indique que notre modification n’interviendra qu’après redémarrage du service.

Avertissement qui demande le redémarrage sur service

Soit on utilise les commandes situées sur la gauche de la console, soit on effectue un click-droit et on utilise la commande « Redémarrer ».

Redémarrer le service

Moralité

Voilà, simple, efficace et sans détruire son serveur de build.

Jérémy Jeanson

Comments

You have to be logged in to comment this post.