Déploiement d’un addin VSTO avec clickonce, dans la vrai vie

Récemment j’ai eu à déployer un addin vsto sur un intranet via clickonce, en l’occurrence un serveur web IIS 6. J’ai rencontré 3 problématiques :
– Signer mon package clickonce avec un certificat valide plus longtemps qu’une année
– Comprendre pourquoi mon package généré sous Windows 7 ne s’installe pas correctement
– Comprendre pourquoi la mise à jour automatique ne fonctionnait pas

1 – Création du certificat

Par défaut un projet d’addin vsto sous visual studio peut être signé par un certificat de test valide 1 an. Le soucis c’est que si vous oubliez de mettre à jour ce certificat au cours de cette année, vos utilisateurs ne pourront plus installer vos mise à jour une fois le certificat expiré. Et de ce fait vous n’aurez plus d’autre solution que de leur faire désinstaller l’application et réinstaller la nouvelle version signée avec un nouveau certificat. Pas idéal …

Voici donc la procédure à suivre pour générer un certificat valide jusqu’en 2040 (ou une date de votre choix) et l’utiliser pour signer votre package :

1- les outils sont tous fournis pat visual studio sauf un qu’il faut télécharger et installer : http://download.microsoft.com/download/vba50/Utility/1.0/NT5/EN-US/pvkimprt.exe

-> exécutez ce zip self extract puis exécutez l’exe qui va installer l’outil dans C:\Windows\

2- lancez un command prompt visual studio et placez vous dans un répertoire dédié à votre certificat

3- enchainez les commandes suivantes (remplacez Bewise par le nom de votre choix) :

makecert Bewise.cer -r -n "CN=Bewise" -$ individual -sv Bewise.pvk -pe -eku 1.3.6.1.5.5.7.3.3

Pour info si vous devez choisir des dates précises pour votre certificat utilisez l’option -! pour la liste des options étendues et voire la syntaxe pour spécifier les dates…

Dans la fenêtre qui s’affiche choisissez et confirmez le mot de passe de votre clée privée

cert2spc Bewise.cer Bewise.spc

pvkimprt -pfx Bewise.spc Bewise.pvk

la dernière ligne de commande lance un assistant, choisissez "yes" pour exporter la clé privée, puis next, puis saisie encore du password, et enfin choisissez l’emplacement et le nom d’un fichier pfx de sortie, par exemple BewiseCertificate.pfx

4- Utilisez le fichier BewiseCertificate.pfx avec Visual Studio en allant dans les propriétés du projet, onglet signing Cochez la case pour signer le manifest clickonce. Pour le certificat utilisez l’option "from file" et choisissez le pfx. Après une ultime saisie de mot de passe vous devriez avoir un truc dans le genre :

image

2- Bug d’installation ?

Pour générer le package on va ensuite sur l’onglet “publishing” des propriétés du projet pour choisir pour commencer un emplacement local, le sous dossier “publish” par exemple , on sélectionne les pré requis, la politique de mise à jour automatique et on publie !

Pour ma part j’ai donc spécifié les pré requis Framework 3.5 SP1, Office 2007 Primary Interop et VSTO  runtime. Enfin Visual Studio l’a fait pour moi…

Pour les updates je lui ai dit de vérifier à chaque fois.

Vous noterez au passage que les options ne sont pas les même que sur un projet de type Winform… la technologie de déploiement VSTO c’est bien du clickonce, mais pas tout à fait…

L’action de publication crée donc dans le dossier publish un fichier setup.exe et un fichier vsto. Bien que le fichier vsto soit exécutable, vous devez faire exécuter le setup.exe à vos utilisateurs car c’est celui ci qui va vérifier les pré requis.

Et là c’est le drame, en tout cas sur mon PC sous Windows 7 j’obtiens le message d’erreur suivant :

Exception : "La version requise du .NET Framework n’est pas installée sur cet ordinateur."

clip_image001

Vous vous doutez bien qu’avec un Visual Studio 2008 SP1 installé j’ai le bon Framework d’installé…

Le problème viens du fait que sur certaine éditions de windows 7 il manque ce fichier : %ProgramFiles%\Reference Assemblies\Microsoft\Framework\v3.5\RedistList\FrameworkList.xml

le dossier existe, mais il est vide.

La solution consiste à déposer ce fichier en question (provenant d’un vista, xp ou server 2008), redémarrer Visual Studio et re générer le package !!!

3 – Bug de mise à jour automatique ?

Une fois mon package généré je le déploie sur mon serveur web en fournissant un chemin réseau UNC qui correspond à un dossier de mon serveur qui est un répertoire virtuel de mon site intranet. J’indique aussi l’url correspondante pour accéder au fichier setup.exe, c’est à cette url que l’addin va vérifier si il ya des mise à jour à chaque démarrage. Ces options sont à indiquer dans les propriétés du projet, onglet “Publishing” :

image

Bien sûr mon premier test consiste à installer l’addin une première fois en exécutant le setup depuis l’url. Attention pour que ça marche vous avez quelques “mime types” à vérifier sur votre serveur web. Il vous faut :

.application : application/x-ms-application

.manifest : application/x-ms-manifest

.deploy : application/octet-stream

Et bien sûr le test suivant consiste à publier une nouvelle version de l’addin et de relancer l’application office sur laquelle il est installé pour vérifier qu’il se met bien à jour …

Et là c’est le drame (bis) , j’ai un message d’erreur qui met dit que : “le programme de personnalisation office ne peut s’installer correctement car une version précédente est déjà installée. Il faut désinstaller la version précédente. Puis relancer l’installation”.

Arglllll !! Mais c’est exactement pour ne pas à avoir à faire ça que je voulais une mise à jour automatique !!!!

Et bien non, ne désespérez pas ! Vous n’êtes pas passez à côté d’un concept fondamental de la notion de mise à jour automatique! … Il s’agit juste d’une embrouille entre le package vsto installé et celui déployé automatiquement par Visual Studio lorsque vous avez débuggué votre addin ! Si vous testez la procédure de mise à jour sur un autre PC, vous constaterez que tout marche comme un charme, la mise à jour automatique est bel et bien automatique ! Vous pouvez aussi nettoyer le package déployé par Visual Studio en utilisant le vsto cleaner fourni dans le vsto powertools si vous souhaitez faire fonctionner cette mise à jour sur votre PC de développement.

 

Et voilà, avec tout ça je suis tranquille je pourrais faire vivre mon addin jusqu’en 2040 en assurant des mise à jour régulières et automatiques !

Publié dans Vsto Tagués avec :

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*

Verifions que vous êtes un humain * Time limit is exhausted. Please reload CAPTCHA.

Archives

Social

  • Twitter
  • LinkedIn
  • Flux RSS
  • mvp
  • technet
  • Google+