Tutoriel ClickOnce : Le déploiement facile d'applications .NET

| LEBRUN Thomas | MORAND Louis-Guillaume |

ClickOnce est la nouvelle technologie de déploiement d'applications.
Cet article vous montrera les différentes possibilités que cette technologie vous apporte, tant au niveau du déploiement que de la mise à jour de vos applications.

N'hésitez pas à commenter cet article ! Commentez ♪

- Titre : Tutoriel ClickOnce : Le déploiement facile d'applications .NET

- Auteurs : LEBRUN Thomas, MORAND Louis-Guillaume

- Parution : 20 août 2005

- Mise à jour : 20 août 2005

- Licence : Copyright ® 2005 Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- Introduction

- I. Présentation de ClickOnce

- II. Déploiement d'une application

- II-A. Premier déploiement

- II-B. Installation

- II-C. Mise à jour

- II-C-1. Automatique

- II-C-2. Manuelle

- III. Utilisation avancée

- III-A. Signature du manifest

- III-B. Définition des stratégies de sécurité

- III-C. Déploiement avancé

- Conclusion

- Liens

Introduction

Le déploiement est aujourd'hui au milieu de toutes les stratégies dans une entreprise. Que cela soit le déploiement d'une mise à jour, le déploiement d'un logiciel (antivirus, ou autre) ou n'importe, le déploiement est une problématique et l'objectif principal de l'administrateur réseau est de le rendre le plus simple possible.
La plupart d'entrevous doit connaître Windows Update qui permet à partir d'une page web de « deviner » les mises à jour qu'il est nécessaire d'installer, et peut-être connaissez-vous SUS (Software Update Service) qui permet de déployer automatiquement des mises à jour sur les postes du réseau.

Aujourd'hui, Microsoft nous propose une nouvelle merveille, qui combine les avantages des deux technologies citées juste avant. Avec ClickOnce, vous pourrez redistribuer vos applications .Net chez les clients qui en auront le besoin.

I - Présentation de ClickOnce

Disponible depuis la version 2.0 du framework .NET, ClickOnce est la nouvelle technologie de déploiement (et de mise à jour) d'applications.
Elle se base sur le protocole HTTP pour effectuer les installations ou les mises à jour.
Le déploiement d'applications, au moyen de HTTP, est disponible depuis la version 1.0 du framework .NET, mais il a subi de nombreuses modifications qui l'ont rendu plus performant. Pour mettre en place ClickOnce, il vous suffit de posséder :

- Visual Studio 2005 (actuellement en BÊTA 2) pour développer votre application ;

- un serveur Web IIS, pour publier votre application.

Avec les précédentes versions du framework .NET, exécuter une application pouvait se faire via un simple lien dans une page Web:

Cliquer <a href="MonProjet.exe">ici</a> pour télécharger et exécuter le logiciel <b>MonProjet.exe</b>

Bien qu'efficace, cette technique présentait tout de même des inconvénients :

- le framework .NET devait être installé sur les machines cibles ;

- l'application est disponible « Offline » seulement si l'utilisateur choisit « Travailler en mode déconnecté » dans son navigateur Web ;

- le fichier .config de l'application n'est pas disponible par défaut ;

- l'application ne possède pas de raccourci sur le bureau ou dans le menu « Démarrer » ;

- etc.

Si vous aviez besoin de plus de contrôle sur le déploiement ou la mise à jour de votre application, vous pouviez utiliser l'« Updater Application Block-Version 2.0 »: il s'agit d'un composant, développé par Microsoft, qui peut détecter, télécharger, et mettre à jour votre application.
Cette technique, très efficace, mais possédant malgré tout quelques « failles » (par exemple, le code exécuté possède les droits « Full Trust », ce qui est potentiellement dangereux, d'un point de vue sécurité, etc.) existe toujours (vous pouvez télécharger et avoir plus d'informations sur l'UAB ici), mais laisse sa place, dans la version 2.0 du Framework .NET, à ClickOnce.

Pour faire simple, on peut dire que ClickOnce possède tous les avantages de l'UAB (plus quelques autres), sans les inconvénients.
Voici une liste des caractéristiques (non exhaustive) de ClickOnce :

- les mises à jour sont transactionnelles (c'est-à-dire qu'elles sont faites entièrement ou pas du tout) ;

- bonne intégration avec Visual Studio ;

- il est possible de proposer le téléchargement de prérequis, nécessaires au bon fonctionnement de l'application ;

- il est possible d'avoir un raccourci dans le menu « Démarrer » ;

- etc.

Maintenant que nous avons vu la théorie, passons un peu à la pratique: rien de tel pour apprendre ;)

II - Déploiement d'une application

II-A - Premier déploiement

Au cours de cette démonstration, et pour que l'explication soit la plus claire possible, nous prendrons un cas pratique réel, plus précisément, nous déploierons une application et ses différentes mises à jour.

Créer une application Winform basique. Compilez-la, pour que nous puissions la déployer. Pour cela, veuillez ouvrir le panneau des propriétés de votre projet (menu Projet > nom_du_projet propriétés). Cochez la case et signez le manifeste ClickOnce.

Nous devons maintenant définir les autorisations de sécurité. Pour le moment, cochez la case qui indique que notre application est « full trust » (on peut lui fait totalement confiance). Par mesure de sécurité, il faudra mieux éviter ce choisir cette option; nous verrons donc un peu plus tard dans ce tutoriel comment définir au mieux ces options de sécurité.

Passons maintenant à la partie la plus importante: la publication. Passons donc dans l'onglet publication, et définissez l'endroit où sera publiée votre application ainsi que la page d'installation de votre application.
Sur cette page, vous allez définir si votre application sera publiée sur un ftp, un partage réseau ou un serveur IIS et vous pouvez également définir si l'application ne sera accessible que de façon online (retéléchargée à chaque fois) ou de façon offline, téléchargée, installée et accessible via le menu Démarrer.

- Publishing Location indique le partage Web depuis lequel votre application sera déployée/mise à jour.

- Install Mode and Settings permet de spécifier si votre application doit être disponible « OnLine » et « OffLine ».

- Prerequisites vous permet de spécifier les programmes prérequis pour installer votre application.

- Updates vous permet d'indiquer que votre application doit (ou non) vérifier la présence de mise à jour sur le serveur. Vous indiquez également à quel moment vous souhaitez faire cette vérification (avant ou après le démarrage de l'application).

- Grâce au panneau Options, vous pouvez renseigner différentes informations

Une fois ces informations renseignées, un clic sur le bouton « Publish Wizard » (également disponible depuis le menu « Build » ou bien, dans l'explorateur de solution, via un clic droit) lance l'assistant de configuration de l'installeur ClickOnce.

Le « Publish Wizard » vous permet de configurer toutes les options nécessaires au déploiement de votre application.

Wizard de publication

Wizard de publication (2)

Wizard de publication (3)

Un clic sur le bouton « Finish » vous permet de déployer votre application sur le serveur IIS et vous ouvre la page de publication, qu'il vous suffit d'envoyer à vos utilisateurs pour qu'ils installent votre application :

Application publiée

II-B - Installation

Il ne nous reste plus qu'à installer l'application sur le poste client. Cette installation se fait manuellement grâce à la page publiée précédemment.
Un clic sur le bouton « Install » vous permet de lancer l'installation de l'application sur le poste et on aperçoit bien la vérification de la présence de mise à jour, juste avant le lancement :

Vérification de mise à jour

II-C - Mise à jour

II-C-1 - Automatique

Pour faire une mise à jour de votre application, rien de plus simple: il vous suffit faire vos modifications et de refaire un « Publish », dans Visual Studio.
Ensuite, exécutez votre application et dès le démarrage, celle-ci détectera la présence d'une nouvelle version, la téléchargera et relancera l'application pour prendre en compte les modifications.

Détection de mise à jour

Nouvelle version installée

II-C-2 - Manuelle

Vous avez également la possibilité de lancer une vérification manuelle de la mise à jour (utilisée généralement dans les menus « Mettre à jour » ou autre) en utilisant le code suivant :

Mise à jour manuelle

private void UpdateApp()
{
ApplicationDeployment updater = ApplicationDeployment.CurrentDeployment;
bool verDepServer = updater.CheckForUpdate();

if (verDepServer) // Update disponible
{
DialogResult res = MessageBox.Show(
String.Format("Une nouvelle version est disponible{0}Mettre à jour maintenant ?",
Environment.NewLine),
"Mise à jour",
MessageBoxButtons.YesNo);

if (res == DialogResult.Yes)
{
updater.Update();

MessageBox.Show("Attention, l'application va redémarrer", "Redémarrage",
MessageBoxButtons.OK, MessageBoxIcon.Information);

Application.Restart();
}
}
else
{
MessageBox.Show("Pas de nouvelle version disponible");
}
}

Cependant, il semblerait que dans sa version actuelle, le framework .NET 2.0 ait quelques problèmes à ce niveau-là (voir ici pour plus d'explications) : sachez juste que plus tard (comprendre par là, lorsque le framework .NET 2.0 ne sera plus en version BÊTA), l'utilisation du code précédant sera possible et ne posera pas de problème.

III - Utilisation avancée

III-A - Signature du manifest

Vous avez la possibilité de signer le manifest de votre application ClickOnce, ainsi que de signer votre assembly .NET.
Pour rappel, dans la version 2003 de Visual Studio, pour signer une application, vous deviez utiliser l'utilitaire en ligne de commande sn.exe qui vous servait à générer un fichier de clé publique/privée (avec une extension .snk), et vous utilisiez le fichier AssemblyInfo.cs (ou .vb si vous développiez en VB.NET) pour ajouter un lien vers ce fichier .snk.

Sous Visual Studio 2005, le procédé est le même, hormis que vous n'avez plus besoin de passer par l'utilitaire en ligne de commande: dans l'onglet « Signing » de la page de propriétés de votre projet, cochez la case « Sign the assembly » et, via le menu déroulant, créer un nouveau fichier snk.

Rappelons que signer les assemblies .NET est une technique efficace et très pratique, dans le cas où vous seriez amené à les réutiliser dans d'autres projets, car cela vous permet de les inscrire dans la GAC (Global Assembly Cache) et vous évite, ainsi, de devoir redéployer la DLL de votre assembly à chaque fois que vous déployez un nouveau projet.

Vous avez également la possibilité de signer le manifest de votre application ClickOnce, en utilisant un certificat de sécurité.
Dans l'onglet « Signing », cochez la case « Sign the ClickOnce manifests », puis choisissez le certificat que vous voulez utiliser. Vous pouvez :

- utiliser un certificat déjà installé (bouton « Select from Store ») ;

- importer votre certificat (bouton « Select from File »).

III-B - Définition des stratégies de sécurité

Vous devez savoir qu'il ne faut jamais sous-estimer la sécurité, surtout dans un environnement professionnel. Il faut garder à l'esprit que l'application est souvent la passerelle qui permet à « l'attaquant » d'effectuer des actions non autorisées, c'est pourquoi il faut sécuriser l'application avec par exemple, « le principe du moindre privilège ». Ainsi, une bonne sécurité est celle qui donne le moins de libertés possibles, plus précisément, celle qui donne simplement les droits nécessaires. Vous pouvez donc le faire manuellement en choisissant un après un les droits que vous accordez à votre application ou alors, vous pouvez laisser Visual Studio faire cela pour vous.
Cliquez alors sur « Calculer les permissions » :

Visual Studio va alors analyser chaque ligne de votre code afin de détecter (en fonction de vos méthodes) quelles seront les autorisations à effectuer :

À la fin du scan, seules les autorisations nécessaires seront cochées et mises en gras. Vous pouvez ainsi ajouter des droits ou alors passer outre les conseils de Visual Studio.

III-C - Déploiement avancé

Même si le déploiement via ClickOnce peut trouver certaines limitations, il possède néanmoins plusieurs fonctionnalités accessibles via de nouvelles fenêtres qui se trouvent sur l'onglet Publication des propriétés du projet.

La seconde de ces fonctionnalités est de définir sur le projet, quels fichiers seront publiés puis déployés. En effet, votre projet peut contenir différents fichiers ressources qui ne sont pas nécessaires à l'exécution de l'application et ne nécessitent donc pas d'être déployées.

La seconde de ces fonctionnalités est la possibilité de définir des conditions d'installation. Vous pouvez par exemple exiger que certains composants comme le framework 2.0 ou encore SQL Serveur soient installés sur l'ordinateur client, comme le monde la capture suivante :

Une autre des possibilités est de définir le type de mise à jour de l'application déployée.
Vous pouvez par exemple définir si les mises à jour sont critiques et l'utilisateur doit absolument utiliser cette nouvelle dès qu'elle est téléchargée ou alors, téléchargez la version en arrière-plan et elle sera chargée à la prochaine utilisation.

Enfin, le dernier panneau d'options permet de personnaliser la page de publication, allant du nom fichier, à l'URL du support technique, en passant par la personnalisation du créateur de l'application. Toutes ces informations auront des répercussions sur la page de publication et celle-ci utilisera ces informations pour créer de nouveaux éléments sur la page comme un lien vers le support.

Conclusion

ClickOnce est la nouvelle technologie de déploiement et de mise à jour qui possède de beaux jours devant elle : son utilisation simple et très agréable nous permet d'affirmer que ce sera sans doute la technologie qui remplacera, à terme, la technologie des MSI.

Liens

Quelques liens en rapport avec ClickOnce :

http://msdn.microsoft.com/smartclient/understanding/windowsforms/2.0/features/clickonce.aspx
http://msdn.microsoft.com/vstudio/using/Columns/default.aspx?pull=/library/en-us/dnreal/html/realworld12012004.asp
http://www.softinsight.com/bnoyes/PermaLink.aspx?guid=896b807d-37a9-4ac1-a6d2-5bacc28d9963
http://msdn.microsoft.com/msdnmag/issues/04/05/clickonce/default.aspx