Introduction
Afin d’assurer la succession du langage VBA (Visual Basic for Applications) qui était auparavant la seule manière d’étendre les applications de la gamme Office, Microsoft propose depuis quelques années Visual Studio Tools for Office qui permet de se passer totalement de VBA pour écrire des Addins pour Word, Excel, Powerpoint ou encore Outlook en bénéficiant de tous les avantages du monde .net.
VSTO est un complément de Visual Studio qui permet de créer de nouveaux projets qui pourront être chargés directement par les outils de Microsoft Office. Outils de design, prévisualisations, déboggage tous les outils nécessaires pour développer de manière simple un complément sont disponibles.
Nous allons voir grâce à ce tutorial comment créer un addin outlook.
Développement d’un addin
L’Addin que nous allons développer afin d’illustrer le développement de compléments pour Outlook va combler un manque important d’Outlook : Détecter automatiquement lors de l’envoi d’un mail si vous avez oublié de joindre des pièces jointes à votre mail.
L’Addin va en effet analyser le contenu des messages juste avant leur envoi afin de détecter si le message contient des références vers d’hypothétiques pièces jointes et, si tel est le cas, une boite de dialogue apparaitra afin de demander à l’utilisateur de confirmer l’envoi :
Afin d’arriver à ce résultat, la première étape consiste à créer un nouveau projet de type Addin Outlook 2007 :
Une fois le projet créé vous devriez avoir l’arborescence de solution suivante :
Le code de l’addin se situe dans le fichier ThisAddin.cs. Rien ne vous empêche de rajouter des formulaires Windows si vous souhaitez afficher des fenêtres, vous pouvez utiliser toutes les possibilités du framework .net sans aucun problème.
La première tâche à réaliser est de s’abonner à l’évènement d’envoi d’éléments grâce au modèle objet d’Outlook. Ainsi dès qu’un message sera envoyé nous pourrons l’intercepter afin de l’analyser.
Une fois abonné, nous devons analyser le corps du message à la recherche de mots-clés permettant de détecter si une pièce jointe devrait être présente ou non. Nous pouvons faire cela en créant un mini dictionnaire et en vérifiant la présence ou non des différents termes du dictionnaire.
Il ne nous reste plus qu’à analyser le message avant l’envoi du message :
Pour cela, nous devons vérifier que l’élément envoyé est bien un mail car l’évènement est levé pour tout type d’envoi (les request meeting par exemple). Puis nous analysons le message à l’aide de la méthode créé précédemment et en fonction du nombre de pièces jointes des messages et affichons un message de confirmation.
Il reste cependant une petite subtilité à résoudre. Ce code est en effet partiellement fonctionnel car nous ne faisons aucune différence avec les pièces jointes incluses dans le corps même du message et les pièces jointes au message. En effet, si on effectue un test avec un message ne contenant que du texte le code fonctionnera sans aucun problème, mais si vous rajoutez une signature contenant une ou plusieurs images, ces images inclues dans votre signature seront considérées comme étant des pièces jointes.
Pour palier à ce problème, il existe une petite astuce qui consiste à regarder la taille des pièces jointes. Si la pièce jointe est en réalité un fichier inclus dans le message (comme les images inclues dans les signatures), Outlook considérera que sa taille est nulle contrairement aux pièces jointes au message manuellement. Nous devons donc modifier légèrement notre algorithme afin que le plugin soit pleinement fonctionnel :
Une fois la modification effectuée, il ne reste plus qu’à tester notre Addin. Pour cela il suffit de lancer le débogage comme nous pouvons le faire habituellement avec Visual Studio 2008 via la touche F5 ou via le bouton Start Debugging.
Déploiement
La partie déploiement était auparavant une des principales difficultés que l’on rencontrait lorsque l’on développait des AddIns basés sur VSTO et ceci dès la première version de ce framework.
La bonne nouvelle est qu’avec VSTO 3 et Click Once, cela est à présent très facile et ne pose plus aucun problème de gestion de dépendances ou de sécurité.
Gestion des dépendances
La gestion des dépendances peut en effet se faire directement dans les propriétés du Projet :
Vous pouvez via cette fenêtre définir les différentes dépendances de votre applicatif en cochant les éléments nécessaire au bon fonctionnement de votre AddIn.
A noter que grâce au SP1 du framework .net 3.5 vous avez la possiblité de ne pas imposer à l’utilisateur d’installer l’intégralité du framework .net ce qui est souvent inutile puisqu’une application Windows a rarement besoin des éléments liés à ASP.net par exemple. Le SP1 du framework .net 3.5 et de Visual Studio 2008 vous permette en effet de sélectionner une version allégée du framework .net dite « Client-only ». si vous souhaitez bénéficier de cette fonctionnalité afin d’alléger la taille des prérequis il suffit de se rendre dans les propriétés du projet et de cocher la case « Client-only Framework subset ».
Création du programme d’installation
La création du programme d’installation ne nécessite pas de créer un projet de type SETUP. La manipulation est beaucoup plus simple puisqu’il suffit de cliquer sur l’élément Publish présent dans menu contextuel du projet contenant l’addin. Un assistant s’affiche permettant de sélectionner le dossier de publication de l’application.
Il est ensuite possible de sélectionner le type de support destiné à recueillir le programme d’installation. Si vous souhaitez distribuer de manière simple votre setup sous forme de fichiers vous pouvez opter pour l’option CD-ROM ou DVD-ROM.
Lorsque le programme d’installation est créé vous pourrez lancer l’installation de votre plugin en lançant directement le fichier .vsto qui effectuera toutes les étapes nécessaires à son intégration dans Outlook.
Diagnostics des erreurs de déploiement
Bien que la création de programmes d’installation soit à présent beaucoup plus simple à réaliser avec VSTO 3 et Visual Studio 2008, il peut arriver que le programme d’installation échoue lorsque l’utilisateur essaie d’installer votre Add-in. Dans un tel cas, avec les versions précédentes, on se retrouvait assez embêté puisqu’il n’y avait pas de mécanismes intégrés permettant de diagnostiquer les causes d’un tel échec.
Ce problème est à présent résolu via les nouveautés apportées par le SP1 du framework 3.5 puisque les programmes d’installation de vos addin basés sur VSTO écriront automatiquement dans l’EventLog les erreurs rencontrés ce qui vous permettra d’effectuer un diagnostic assez simplement :

Conclusion
Avec VSTO 3, Visual Studio 2008, et le SP1 du framework 3.5, le développement d’Addin pour Office atteint enfin une maturité avec tous les outils nécessaires pour réaliser ces développements simplement et de manière productive. Du développement pur au déploiement, toutes les étapes sont simples et réalisables par n’importe quel développeur Windows « traditionnel ».