Après avoir développé une application il faut pouvoir la déployer sur le poste de l’utilisateur final. Il existe pour cela plusieurs méthodes répondant chacunes à des besoins différents. Avant de choisir celle qui vous correspond, il faut d’abord se poser quelques questions :
- Que doit-on déployer ? des fichiers, raccourcis sur le bureau, des clés de registres, des associations d’extensions, etc.
- Quelles sont les dépendances et comment les installer ? Il faut également faire attention aux conflits de version dans le cas de composants partagés
- Qui effectue le déploiment ? L’utilisateur, un administrateur, gestion centralisée (Active Directory, Système de gestion de parc)
- Installation par utilisateur ou par machine ?
- L’application nécessite-t-elle des paramètres pour son installation ? Emplacement d’installation, composants optionnels, licence, etc.
- Comment vérifier que l’application est installée ?
- Comment mettre à jour l’application une fois déployée ? Fréquence de mise à jour ?
- Comment la désinstaller ?
- Journalisation des opérations effectuées ?
- Installation et mise à jour transactionnelle (tout ou rien) ?
- et surement d’autres…
Voici plusieurs méthodes permettant de déployer une application :
Copie des fichiers de l’application (xcopy)
C’est surement la solution la plus simple : il suffit de copier l’application (exécutable ou archive zip) à un endroit accessible à l’utilisateur (web, ftp, répertoire partagé). L’utilisateur se débrouille pour le récupérer et le copier où il veut.
Les applications déployer de cette façon doivent se désinstaller sans problème et sans laisser le système dans un état bancale par simple suppression de l’exécutable.
Windows Installer
Windows Installer (anciennement Microsoft Installer) est un composant de Windows permettant d’installer, mettre à jour et désinstaller des programmes. Le développeur crée un package (fichier MSI pour l’installation) qui, sans rentrer dans les détails, décrit le processus de déploiement : création de dossiers, copie de fichiers, création de clés de registre, création de raccourcis, lancement d’exécutable, etc. Mais Windows Installer propose de nombreuses autres fonctionnalités dont notamment :
- Installation avec interface graphique ou installation silencieuse
- Possibilité de découper l’application en plusieurs fonctionnalités (Features). L’utilisateur peut ainsi n’installer que les fonctionnalités dont il a besoin. Par exemple l’installeur d’Office permet de choisir quels produit de la suite Office on souhaite installer (Word, Excel, PowerPoint, Access, … )
- 2 contextes d’installation : Par machine (tous les utilisateurs) ou par utilisateur
- Installation à la demande : l’application (ou une fonctionnalité) n’est installé que lors de sa première utilisation
- Journalisation de l’installation
- Installation transactionnelle : 1 transaction par MSI ou 1 transaction pour plusieurs MSI
- Possibilité de signer le fichier MSI avec Authenticode
Cette solution propose beaucoup de fonctionnalités et est standard sous Windows. Seul bémol les outils gratuits permettant de créer des packages MSI ne sont pas tous intuitifs. Parmi ceux-ci on retrouve WiX ou Visual Studio Installer Project (natif sous VS2010 et disponible sous forme d’extension pour VS2013).
Utilisation de générateur d’installateurs (InnoSetup, NSIS)
Même principe que Windows Installer, mais génère un exécutable (. exe) et non un MSI. Le package généré n’utilise donc pas Windows Installer et ne profite ainsi pas de ses avantages. Cela rend aussi plus difficile leur intégration à différentes solutions déploiement tels que des GPO. Ce type d’installateur se veut en général plus simple à créer qu’un fichier MSI.
ClickOnce
ClickOnce est un mécanisme propre à .NET. Il permet de déployer une application en répondant à 3 problématiques :
- Pas besoin de droits particuliers => Tous les utilisateurs peuvent installer l’application
- Système de mise à jour intégré
- Chaque application installée dans un dossier spécifique => On évite ainsi les problèmes de conflit avec les composants partagés
Le déploiement est très simple : il suffit de copier les fichiers générés par ClickOnce sur un site web, un dossier partagé ou un simple dossier (dans le dernier cas pas de mise à jour automatique). Tout comme les MSI il est possible de signer l’installateur.
ClickOnce est très simple à mettre en oeuvre et répond à un besoin précis cependant il n’y a aucun moyen de customiser l’installation (Interface graphique, emplacement des fichiers installés, paramètre durant l’installation, etc. ).
Système de gestion de paquets (Chocolatey)
Pour traiter le déploiement de COTS (Commercial off-the-shelf), les systèmes Unix utilisent depuis longtemps des systèmes de gestion de paquets (package management system) : Aptitude, Yum, etc. Chocolatey et d’autres essayent de fournir le même mécanisme pour Windows.
Chocolatey se base sur PowerShell et le format Nuget. Chocolatey fourni des CmdLet permettant de wrapper rapidement les installateurs classiques (MSI ou EXE) et permet de faire ce que l’on souhaite grâce à la puissance de PowerShell.
Actuellement ce type de solution n’est pas encore très utilisé, mais cela va surement évoluer avec l’arrivé de Windows 10 et OneGet ! A surveiller…
Conclusion
- Pas besoin d’installation => Copie de fichiers
- Besoin simple et installation par l’utilisateur => ClickOnce
- Besoin plus avancé => MSI
Eventuellement on peut wrapper la solution choisie dans un package Chocolatey.