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

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 Donner une note à l'article (5)

Article lu   fois.

Les deux auteurs

Profil ProSite personnel

Profil ProSite personnel

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

Introduction

Le déploiement est aujourd'hui au milieu de toutes les stratégies dans un 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'entre-vous 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.

1. Presentation 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 d'HTTP, est diponible 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 BETA 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:

 
Sélectionnez

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 possiblie 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 ;)

2. Déploiement d'une application

2.1. 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 pannerau des propriétés de votre projet (menu Projet > nom_du_projet propriétés). Cochez la case et signez le manifeste ClickOnce.

www.developpez.com

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

www.developpez.com

Passons maintenant à la partie la plus importante: la publication. Passons donc dans l'onglet publication, et définissez l'endroit où sera publié 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 facon online (retélechargée à chaque fois) ou de façon offline, téléchargée, installée et accessible via le menu Démarrer.

www.developpez.com
  • Publishing Location indique le partage Web depuis lequel votre application sera déploiyé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 poour 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
Wizard de publication (3)

Une fois ces informations renseignées, un clic sur le bouton "Publish Wizard" (également diponible 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


Wizard de publication (2)
Wizard de publication (2)


Wizard de publication (3)
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
Application publiée

2.2. Installation

Il ne nous reste plus qu'à installer l'application sur le poste client. Cette installation se fait manuellement grâce à la page publiément précedemment.
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:

Image non disponible
Vérification de mise à jour
Vérification de mise à jour

2.3. Mise à jour

2.3.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écuter 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
Détection de mise à jour


Nouvelle version installée
Nouvelle version installée

2.3.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
Sélectionnez

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 BETA), l'utilisation du code précédant sera possible et ne posera pas de problème.

3. Utilisation avancée

3.1. 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éployer 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", cocher 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")

3.2. 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 professionel. 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":

www.developpez.com

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:

www.developpez.com

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

www.developpez.com

3.3. 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éployer. En effet, votre projet peut contenir différents fichiers ressources qui ne sont pas nécessaires à l'éxecution de l'application et ne necessitent donc pas d'être déployées.

www.developpez.com



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

www.developpez.com



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 son critiques et l'utilisateur doit absolument utiliser cette nouvelle dès qu'elle est téléchargée ou alors, telecharger la version en arrière plan et elle sera chargée à la prochaine utilisation.

www.developpez.com



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 aurton des répercutions sur la page de publication et celle-ci utilisera ces informations pour créer de nouveaux élaments sur la page comme un lien vers le support.

www.developpez.com

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

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

Copyright © 2005 LEBRUN Thomas et MORAND Louis-Guillaume 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.