I. Introduction▲
Cet article se présente sous la forme d'un tutoriel basé sur l'utilisation de 2 outils commerciaux de Macrovision
- FlexNet Connect ;
- InstallShield 12.
Ce tutoriel étant suffisamment long, je ne parlerai pas de la création du setup de votre application que vous devrez avoir préalablement fait avec InstallShield. Cette création est très simple, un assistant très clair vous permet de packager votre application.
Dans ce tutoriel, j'ai packagé mon application .NET écrite en C# en utilisant un projet « InstallScript » qui offre le maximum de fonctionnalités.
Je vais plutôt me concentrer sur la partie plus complexe qui consiste à créer une nouvelle release et à paramétrer FlexNet Connect pour en tenir compte afin de proposer la mise à jour à vos applications.
II. Présentation des outils▲
II-A. InstallShield▲
InstallShield est un outil qui vous permet de packager vos applications.
C'est-à-dire qu'elle vous permet de créer un programme d'installation (setup.exe) qui va vous permettre de déployer votre application sur vos postes clients tout en gérant des processus complexes comme l'écriture dans la base de registre, la personnalisation de l'installation par l'utilisateur, etc.
InstallShield fournit principalement 2 types d'installateurs : « Basic MSI » et « InstallScript ». Ce dernier offrant un maximum de possibilité.
Si vous n'avez pas InstallShield, vous pouvez télécharger la dernière version ici :
http://macrovision.com/downloads/downloads_5850.htm?link_id=relatedLinks
II-B. FlexNet Connect▲
FlexNet Connect est un logiciel qui se présente sous la forme d'un serveur qui permet de déployer automatiquement des mises à jour sur vos postes clients.
L'idée est simple.
Le serveur contient des informations sur vos applications et de leurs mises à jour.
L'idée est de permettre à une application de se connecter à distance sur ce serveur et de demander s'il existe une mise à jour.
Si c'est le cas, le serveur lui donne alors le chemin d'accès de la mise à jour.
Le client télécharge donc cette mise à jour et l'exécute.
Ce qui est intéressant, c'est que soit vous installez le serveur dans votre intranet, soit vous utilisez directement le serveur hébergé par InstallShield qui fournit d'ailleurs un accès de 30 jours pour tester leurs services.
C'est exactement ce que nous allons voir dans ce tutoriel.
Rendez-vous sur cette adresse pour créer un compte sur leur serveur: http://macrovision.com/downloads/downloads_5426.htm?link_id=relatedLinks
Cliquez sur le lien « register » qui se trouve sous « Use the link below to create a new evaluation account. »
Remplissez le formulaire pour créer un compte.
Ensuite, après réception de votre login/mot de passe, vous aurez accès au serveur http://services.installshield.com
III. Enregistrement d'une application▲
Une fois que vous avez créé votre première release de votre application à l'aide d'InstallShield, il faut enregistrer l'application sur le serveur d'update.
Connectez-vous donc sur le serveur:
http://services.installshield.com
Voici la page de connexion :
Saisissez votre login/mot de passe.
Vous accédez à la page d'accueil :
Cliquez sur « Products » :
Cliquez maintenant sur NEW pour ajouter votre application :
Pour remplir les informations de cette page, utilisez les informations qui se trouvent dans InstallShield.
Lancez donc InstallShield et rendez-vous sur l'onglet « Installation designer ».
Cliquez sur « Installation information », « General information » puis « Product Properties ».
Faites un copier/coller des informations requises.
Le champ « product Code » correspond au « Product GUID » d'InstallShield.
Il s'agit de l'identifiant de votre application.
Voici une capture d'écran d'InstallShield :
D'autres informations (Product Signature, Product Lock) se trouvent à un autre endroit, cliquez sur « Update Service » sur Install Shield pour y accéder et faire un copier/coller:
Une fois le formulaire rempli sur le serveur, cliquez sur NEXT :
La version demandée doit être EXACTEMENT saisie comme elle apparaît sous InstallShield dans la vue « Product Properties » ici :
Cliquez à nouveau sur NEXT
C'est fini vous pouvez clique sur Save, l'application a bien été enregistrée :
IV. Création d'une release▲
Maintenant nous supposons que votre application a été installée sur un PC, et que vous avez créé une nouvelle release (R2) avec par exemple Visual Studio.
Je vais vous montrer d'abord comment packager cette release avec InstallShield, puis comment l'enregistrer sur le serveur.
Lancez InstallShield, ouvrez le projet que vous avez vous-même créé lors du packaging de la première release, allez dans l'onglet « Installation Designer », ensuite cliquez dans le menu de gauche avec le bouton droit sur « Media » « Relase », puis « New release » et « Network Image » :
Une nouvelle release est créée. Cliquez avec le bouton droit sur « Release 2 » et « Release wizard » :
Cliquez 10 fois sur Next jusqu'à tomber sur la configuration de l'update :
Vous pouvez cocher soit « Full » soit « Differential ».
« Full » réinstallera entièrement l'application, alors que « Differential » fera une comparaison, et n'installera que les fichiers modifiés/ajoutés.
Cliquez sur « Import ».
Cliquez sur le dossier jaune pour sélectionner l'emplacement du fichier data1.hdr qui a été créé lors de la première release (vous faites un update de la première release. Ce fichier lui appartient, et permettra de comparer les fichiers entre la première et la nouvelle release).
Cliquez sur OK.
Important, vérifiez le numéro de version. Il doit s'agir de la première release (en tout cas de la release n-1)
Cliquez sur Next jusqu'à la fin du wizard, puis cliquez sur « finish » :
Vous pouvez changer certains paramètres.
« Single Exe File Name », cet attribut est vide. Mettez le nom de l'exécutable qui doit être créé lors du packaging afin de contenir la mise à jour.
Exemple: Setup.exe.
C'est le fichier qui sera téléchargé et exécuté sur le poste client.
« Copy to folder », renseignez le chemin du répertoire où le fichier « setup.exe » doit être copié par InstallShield. Il s'agit de l'emplacement où le poste client pourra télécharger la mise à jour sur votre intranet (ou Internet).
Maintenant il faut indiquer le changement de version de votre application.
Allez sur la vue « Product Properties » pour changer le numéro et mettre par exemple 2.00.0000 :
Pensez à builder la nouvelle release avec le nouveau numéro de version.
Il faut retourner dans le menu de Release, sélectionnez « Release 2 », clique droit et « Build ».
Voilà une bonne chose de faite.
Vous avez donc maintenant deux packages :
- Release 1 : votre application initiale ;
- Release 2 : un update de votre application.
Il faut maintenant vous connecter sur le serveur pour enregistrer cet update et permettre à toutes vos applications d'être notifiées.
Une fois connecté sur le serveur, cliquez sur le menu « Update ».
Ensuite, cliquez sur « New » :
Remplissez les champs comme bon vous semble (pas de contrainte).
Cliquez sur « Next » :
Remplissez les champs. Ici j'ai choisi d'exposer mon update sur le serveur web de ma machine dans le cadre de ce tutoriel. Vous pouvez saisir l'adresse du serveur web de l'intranet de votre entreprise.
Cliquez sur « Next » :
Sélectionnez la version du produit à mettre à jour, en l'occurrence, la version 1.
Cliquez sur « Next », cette page vous permet de restreindre les machines qui doivent avoir accès à cette mise à jour.
Cliquez sur « Next » :
À vous de choisir ici votre stratégie de mise à jour.
Chaque champ est suffisamment clair.
Cliquez sur « Next » :
Cliquez sur « Next » puis sur « Save ».
Pour vous assurer que cela fonctionne, installez votre application (release 1) sur votre PC.
Maintenant exécutez le programme « agent.exe » fourni par IntallShield et qui permet de mettre à jour manuellement une application (manuellement, car c'est vous qui lancez ce programme):
« C:\Program Files\Common Files\InstallShield\UpdateService\agent.exe » /au{8AC7D5CB-CE0F-40A2-A551-5C3FAEF64614} /AppMenu
(remplacez le GUID par le Product GUID de votre application qui se trouve là) :
Le programme va automatiquement se connecter au serveur et regarder s'il existe un update pour l'application ayant le GUID passé en paramètre. Voici ce qui va apparaître :
Il vous suffit de cocher la case de la mise à jour et de cliquer sur « Install » !! :
V. Mise à jour automatique▲
Nous venons de voir comment mettre à jour l'application « manuellement ».
L'idéal est que l'application détecte elle-même, au lancement, qu'il existe une mise à jour, et qu'elle l'a lance.
Voici un bout de code .Net à mettre par exemple dans la méthode « Load » après avoir rajouté une référence sur Interop.DWUpdateServiceLib (dans l'onglet COM) :
const
string
productCode =
{
8AC7D5CB-
CE0F-
40A2-
A551-
5C3FAEF64614}
"; // own guid
DWUpdateServiceLib.
Agent objUSAgent =
null
;
objUSAgent =
new
DWUpdateServiceLib.
Agent
(
);
DWUpdateServiceLib.
Updates updates =
null
;
if
(
objUSAgent.
IsConnected
(
) ==
true
)
{
objUSAgent.
Register
(
productCode,
"1.00.0000"
);
objUSAgent.
AppUpdate
(
productCode,
DWUpdateServiceLib.
RunType.
AppStart);
}
Et voilà, l'application (Release 1) indique qu'elle veut savoir s'il existe une mise à jour pour la version 1.00.0000.
Si oui alors une fenêtre va s'ouvrir pour proposer le téléchargement et l'installation de la mise à jour.
J'ai mis ici en dur le GUID et le numéro de version.
En réalité il faudra les mettre à jour avec Visual Studio et les récupérer dynamiquement avec par exemple l'attribut Application.ProductVersion pour le numéro de version.
VI. Conclusion▲
Nous venons donc de voir comment permettre à vos applications de se mettre à jour automatiquement.
C'est un atout important si vous êtes en charge du déploiement des applications au sein de votre entreprise ou chez vos clients.
Je tiens à remercier Dut pour la relecture de ce document.