13 Déc 2016

Générer un MSI via un projet WIX

Depuis l’arrivée de Visual Studio 2012, Microsoft ne fournit plus nativement la fonctionnalité permettant de créer un projet .vdproj (Projet SETUP).

Beaucoup d’utilisateurs ont souhaité un retour au support des projets de setup sur Visual Studio. C’est pour ça qu’une extension Visual Studio permet à nouveau de créer un projet de setup: Visual Studio Installer Projects.

Cependant cette méthode pour générer un MSI est obsolète, pour nos problématiques de déploiement il est maintenant nécessaire de passer par WIX (Windows Installer XML).

La première chose à faire est d’installer WIX Toolset.

La version la plus récente à ce jour est la version 3.10.3 et est compatible sous Visual Studio 2015.

Après installation du toolset, nous pouvons maintenant créer un nouveau type de projet.

creation_wix

Après avoir renseigné le nom du projet.

Un fichier Product.wxs est créé à la racine, en voici le contenu :

Placer vous au niveau de la ligne « Product » à l’attribut Name pour modifier le nom de votre WIX. Vous devez également préciser cette même valeur au niveau de la ligne Directory et au niveau du Title de la ligne Feature.

Ajoutons maintenant la référence du projet pour lequel on souhaite générer un MSI.

Cliquer droit sur Références -> Add Référence

creation_wix_add_reference

Afin de générer un msi, il faut modifier l’élément MediaTemplate :

Ainsi les fichiers .CAB seront embarqués dans le MSI.

Afin de proposer à l’utilisateur un assistant d’installation lors de l’exécution du MSI, il faut ajouter les lignes suivantes en dessous de l’élément Feature.

Il faut également ajouter la référence WIXUIExtension.dll.

creation_wix_add_reference_wixextension

Il ne reste plus qu’à définir l’ensemble des Composants qu’on souhaite déployer lors de l’installation du MSI créé. Dans mon exemple j’ai 3 ComponentGroup, un pour le fichier .exe, un pour le fichier de config et un dernier pour l’ensemble des .dll qui sont dépendantes au projet que je souhaite installer.

Chacun des composants doit avoir un ID et un GUID unique.

Voici le fichier final Product.wxs

Comme vous l’aurez remarqué nous pouvons nous placer au niveau du répertoire cible de déploiement afin de pouvoir inclure nos fichiers (dlls, images, fichiers de config…) via la syntaxe suivante :

$(var.ProjectForWIX.TargetDir)

Ici ProjectForWIX correspond au nom de la référence que nous avons ajouté.

Si vous ne souhaitez pas configurer le fichier xml à la main, il existe un Editor de WIX sur Visual Studio. Pour l’utiliser il faut installer l’extension WAX.

wax

Celui-ci est divisé en 5 régions et dispose d’une interface UserFriendly.

  1. The Setup Project : permet de choisir le projet de setup que l’on souhaite éditer.
  2. Root directory : Selectionner INSTALLFOLDER.
  3. Projects to install : Ici, il faut sélectionner le projet que vous souhaitez installer via l’installeur.
  4. Directory Mappings : Le répertoire cible d’installation.
  5. Files Mappings : Dans cette région, les fichiers rouges doivent être ajoutés à l’application. Pour les ajouter il suffit de cliquer sur le bouton « + ».

A la fin, toutes les régions doivent être « vertes »

wax_configuration

Vous connaissez maintenant le minimum à savoir pour la création d’un projet WIX.

Share