Office 2013

[eBooks] – Collection d’ebooks gratuits

Posted on Updated on

Bonjour à tous.

 

Aujourd’hui, pas d’article technique mais une collection d’ebooks gratuits à télécharger (en anglais) de tous types :

  • Office & Office 365
  • SharePoint
  • SQL Server
  • System Center
  • Visual Studio
  • Web development
  • Windows
  • Windows Azure

Et en plusieurs formats pour la plupart : PDF, EPUB, MOBI. On ne va pas se priver !

Ca se passe par ici : http://blogs.msdn.com/b/mssmallbiz/archive/2013/06/18/huge-collection-of-free-microsoft-ebooks-for-you-including-office-office-365-sharepoint-sql-server-system-center-visual-studio-web-development-windows-windows-azure-and-windows-server.aspx

 

Bonne lecture !

Advertisements

[Skydrive Pro]–Sortie du client standalone pour Windows !

Posted on Updated on

 

Bonjour à tous.

Le travail en mobilité est devenu un vrai besoin à l’heure actuelle. A l’époque de SharePoint 2010 (pas encore révolu Sourire ), nous avions le client SharePoint Workspace 2010 qui permettait d’emporter ses documents en synchronisant le client avec SharePoint 2010.

Avec l’avènement de SharePoint 2013, Microsoft nous proposait le client Skydrive Pro… mais seulement avec le pack Office 2013 (et Office 365 Pro Plus ou Office 365 Small Business Premium). Il était impossible de se procurer ce client séparément ! Ce qui compliquait légèrement ce travail itinérant…

C’est maintenant chose faite, il est possible de le télécharger gratuitement ! par ici : http://www.microsoft.com/en-US/download/details.aspx?id=39050.

Il vous suffira de l’installer sur chacun des postes clients concernés et de lancer la synchronisation depuis le bouton “Sync” dans SharePoint 2013 :

image

 

Le client se lancera alors et vous demandera d’indiquer où il devra effectuer la synchronisation (répertoire local de la machine cliente) :

image

 

Le répertoire local sera alors synchronisé avec SharePoint 2013 dès que celui-ci sera accessible via le réseau :

image

 

Bonne installation !

[VSTO]–Mon premier VSTO pour Outlook 2013

Posted on Updated on

Bonjour à tous.

Aujourd’hui un petit article qui sort des traditionnels posts autour de SharePoint, avec au programme un VSTO pour Outlook (2013 dans mon cas), Visual Studio 2012 et les modèles de projets pour Office 2013.

Mon cas est simple, il faut que j’ajoute aux catégories proposées en standard par Outlook des catégories personnalisées pour colorer les Rendez-vous du calendrier suivant le type :

  • Absences (RTT, congés) : Rouge
  • Production : Orange
  • Formation : Mauve
  • Avant-Vente : Vert
  • Intercontrat (Le moins possible !!!) : Jaune

Je ne vais pas personnaliser le ruban dans cet exemple… peut être plus tard !

1/ La plateforme de développement

Dans le but de rentrer le plus vite dans le vif du sujet, ma plateforme de développement se compose de ma machine de travail quotidienne :

  • Windows 8 Enterprise x64 en anglais
  • Office Professional Plus 2013 x86 en anglais
  • Visual Studio 2012 Ultimate en anglais

Pour pouvoir développer avec les modèles de projet Office 2013, la première chose à faire est de télécharger les extensions pour Visual Studio 2012 que vous trouverez ici : http://msdn.microsoft.com/en-us/office/apps/fp123627.aspx

01

Une fois l’exécutable téléchargé, lancez le. Il s’agit d’un WebInstaller de Microsoft qui téléchargera le nécessaire et l’installera sur votre poste. Attendez la fin de l’installation.

2/ Création du projet Visual Studio

Vous pourrez ensuite lancer Visual Studio 2012 :

02

Créez un nouveau projet en faisant : File > New > Project. L’assistant de création d’un projet se lance. Dans les modèles de projet, vous devriez trouver (dans la section C# dans mon cas) la section Office/SharePoint, puis Office Add-ins. Dans cette section vous trouverez tous les modèles pour Office 2013 : Word, Excel, PowerPoint et autres… :

03

On choisit ici “Outlook 2013 Add-In”, on nomme le projet (Demo.Outlook.Addin) et on le place dans le bon répertoire. Puis on clique sur OK.

Le projet est créé dans l’explorateur de solution :

04

Le projet se compose pour le moment d’un élément (une classe) ThisAddin avec deux évènements : ThisAddIn_Startup et ThisAddIn_Shutdown. Ces deux évènements sont appelés au chargement de l’Add-in (lancement d’Outlook ou activation de l’Add-in via le gestionnaire) ou au déchargement (fermeture d’Outlook ou désactivation de l’Add-In).

05

3 / Le code

Dans mon cas c’est plutôt simple. Pour ajouter des éléments dans les catégories existantes, je vais m’appuyer sur le modèle objet (Interop) d’Outlook pour ajouter dans la collection des catégories de nouveau éléments.

Pour cela, nous allons recourir au namespace : Microsoft.Office.Interop.Outlook en utilisant la classe Categories. Cette classe possède une méthode Add() prenant en paramètres :

  • Un nom : string
  • Une couleur : Microsoft.Office.Interop.Outlook.OlCategoryColor [Option]
  • Un raccourci clavier : Microsoft.Office.Interop.Outlook.OlCategoryShortcutKey [Option]

Ce qui donne :

Application.Session.Categories.Add(“Absences”, Microsoft.Office.Interop.Outlook.OlCategoryColor.olCategoryColorRed, Microsoft.Office.Interop.Outlook.OlCategoryShortcutKey.olCategoryShortcutKeyCtrlF2);

Nous allons répéter cela pour toutes les catégories à ajouter :

06

Dans le souci de ne pas ajouter ces catégories à chaque activation de l’Add-In, j’ai ajouter une méthode CategoryExists() qui retourne True si la catégorie existe, False sinon :

private bool CategoryExists(string categoryName)
{
foreach (Microsoft.Office.Interop.Outlook.Category item in Application.Session.Categories)
{
if (item.Name == categoryName)
return true;
}
return false;
}

On vérifie pour cela que le nom n’apparaisse pas déjà dans les catégories existantes (on aurait pu vérifier la couleur, le raccourci etc.)

07

Le code étant ok, nous allons passer au debug.

3/ Debug

Pour tester, rien de plus simple ! On ferme toutes les instances d’Outlook ouvertes sur le poste de travail, et on utilise la touche F5 pour démarrer le débug. Visual Studio déploie le projet, lance Outlook… Et on a plus qu’à vérifier que tout fonctionne :

08

Nikel… Mais il manque quand même quelque chose… un projet pour déployer tout ça sur le poste des collègues !

4/ Projet de déploiement

Pour créer un projet de déploiement, avec Visual Studio 2012 vous pouvez utiliser InstallShield etc.

Mais dans mon cas, je voulais tester WIX depuis un moment… Vous pourrez télécharger le modèle de projet ici : http://wixtoolset.org/

WIX Toolset permet de créer des setup d’installation paramétrables et personnalisables à partir de fichiers XML. Il faut donc télécharger puis installer les modèles de projet et accessoirement redémarrer Visual Studio 2012.

Après avoir redémarré Visual Studio, nous allons commencer par réouvrir la solution VSTO. Puis nous allons faire un clic droit sur la solution, Add > New Project… :

09

Dans l’arborescence des modèles de projet disponibles, un nouveau regroupement est disponible : “Windows Installer XML”. Dans ce regroupement on sélectionnera “Setup Project” et bien sûr on nommera le projet (ici Demo.Outlook.Addin.Setup) et on clique sur OK :

10

Le nouveau projet est créé, il est composé principalement d’un fichier “Product.wxs” qui est en fait un fichier XML :

11

Ce fichier va décrire tout le processus de déploiement du VSTO sur les machines clientes. Nous allons parcourir le schéma pour ajouter les nœuds utiles. Je suis parti sur la base de cet article : http://www.add-in-express.com/creating-addins-blog/2012/11/13/wix-installation-vsto-office-addin/ pour décrire le processus de déploiement.

Première ligne, Product. Nous allons ici déclarer les attributs du produit à déployer. J’ai choisi de générer un GUID grâce à l’outil intégré à Visual Studio (Create GUID Tool) et de replacer l’attribut “Id”. Ensuite j’ai remplacé l’attribut Name avec le nom de mon VSTO, la langue par 1036 (Français, 1033 == Anglais) et le “Manufacturer” par Neos-SDI dans mon cas :

<Product Id=”E7F42E5E-7474-4E27-909B-D1E4A8A1B028″ Name=”Demo.Outlook.Addin” Language=”1036″ Version=”1.0.0.0″ Manufacturer=”Neos-SDI” UpgradeCode=”3786b23e-f5d5-4119-b0ef-0680416f6fae”>

Puis j’ai remplacé le MajorUpgrade par (en Français) :

<MajorUpgrade DowngradeErrorMessage=”Une version plus récente de [ProductName] est déjà installée.” />

NB : Toutes les sections suivantes seront ajoutées dans <Product>[…]</Product>

Ensuite, j’ai ajouté un “Property” & un “Condition” pour vérifier à l’installation si la bonne version des VSTO (Runtime version 4 pour Office 2013) est disponible sur la machine cliente (Recherche dans la base de registre de la machine). Pour cela on utilise :

<Property Id=”VSTORUNTIMEREDIST”>
<RegistrySearch
Id=”VSTORuntimeRedist”
Root=”HKLM”
Key=”SOFTWARE\Microsoft\VSTO Runtime Setup\v4R”
Name=”Version”
Type=”raw” />
</Property>

<Condition Message=”The Visual Studio 2010 Tools for Office Runtime is not installed. Please download and install from http://www.microsoft.com/en-us/download/details.aspx?id=20479.”>
<![CDATA[Installed OR VSTORUNTIMEREDIST>=”10.0.30319″]]>
</Condition>

Cela affichera un message d’erreur si la version du Runtime n’est pas la bonne, proposant de la télécharger grâce au lien http fourni.

Nous allons également vérifier que le Framework 4.0 est bien installé sur la machine cliente. Pour cela, on utilise une “PropertyRef” et une “Condition” :

<PropertyRef Id=”NETFRAMEWORK40FULL”/>
<Condition Message=”This application requires .NET Framework 4.0.”>
<![CDATA[Installed OR NETFRAMEWORK40FULL]]>
</Condition>

Nous allons maintenant nous occuper des composants à déployer. Pour cela nous allons utiliser des “<Component>”, “<ComponentGroup>” et des “<Feature>”.

En dehors de la balise <Product> nous allons déclarer les composants à déployer puis les références avec une <Feature> dans <Product>.

Les fichiers à déployer sont situés dans le répertoire de sortie (output) du projet Visual Studio, dans mon cas Demo.Outlook.Addin/bin/debug :

12

Commençons par créer les ComponentGroup nécessaires. Il faut référencer les output produits par la compilation du projet VSTO par Visual Studio. Pour cela, il faut utiliser (après </Product>) :

<Fragment>
<ComponentGroup Id=”ProductComponents” Directory=”INSTALLFOLDER”>
<Component Id=”OutlookAddin1_vsto_Component”>
<File Id=”OutlookAddin1_vsto” KeyPath=”yes” Name=”Demo.Outlook.Addin.vsto” Source=”$(var.AddinFiles)” />
</Component>

<Component Id=”OutlookAddin1_dll_manifest_Component”>
<File Id=”OutlookAddin1_dll_manifest” KeyPath=”yes” Name=”Demo.Outlook.Addin.dll.manifest” Source=”$(var.AddinFiles)” />
</Component>

<Component Id=”MSOfficeToolsCommon_dll_Component”>
<File Id=”MSOfficeToolsCommon_dll” KeyPath=”yes” Name=”Microsoft.Office.Tools.Common.v4.0.Utilities.dll” Source=”$(var.AddinFiles)” />
</Component>
<Component Id=”MSOfficeToolsOutlook_dll_Component”>
<File Id=”MSOfficeToolsOutlook_dll” KeyPath=”yes” Name=”Microsoft.Office.Tools.Outlook.v4.0.Utilities.dll” Source=”$(var.AddinFiles)” />
</Component>
<Component Id=”OutlookAddIn1_dll_Component” >
<File Id=”OutlookAddIn1_dll” KeyPath=”yes” Name=”Demo.Outlook.Addin.dll” Source=”$(var.AddinFiles)” />
</Component>
</ComponentGroup>
</Fragment>

Nous référençons ici le fichier *.vsto produit avec (Demo.Outlook.Addin.vsto) :

<Component Id=”OutlookAddin1_vsto_Component”>
<File Id=”OutlookAddin1_vsto” KeyPath=”yes”      Name=”Demo.Outlook.Addin.vsto” Source=”$(var.AddinFiles)” />
</Component>

Puis le manifest produit (Demo.Outlook.Addin.dll.manifest) :

<Component Id=”OutlookAddin1_dll_manifest_Component”>
<File Id=”OutlookAddin1_dll_manifest” KeyPath=”yes” Name=”Demo.Outlook.Addin.dll.manifest” Source=”$(var.AddinFiles)” />
</Component>

Puis les DLL pour les VSTO (Common + Outlook) :

  • Microsoft.Office.Tools.Common.v4.0.Utilities.dll
  • Microsoft.Office.Tools.Outlook.v4.0.Utilities.dll

<Component Id=”MSOfficeToolsCommon_dll_Component”>
<File Id=”MSOfficeToolsCommon_dll” KeyPath=”yes” Name=”Microsoft.Office.Tools.Common.v4.0.Utilities.dll” Source=”$(var.AddinFiles)” />
</Component>
<Component Id=”MSOfficeToolsOutlook_dll_Component”>
<File Id=”MSOfficeToolsOutlook_dll” KeyPath=”yes” Name=”Microsoft.Office.Tools.Outlook.v4.0.Utilities.dll” Source=”$(var.AddinFiles)” />
</Component>

Et enfin la DLL du projet (Demo.Outlook.Addin.dll) :

<Component Id=”OutlookAddIn1_dll_Component” >
<File Id=”OutlookAddIn1_dll” KeyPath=”yes” Name=”Demo.Outlook.Addin.dll” Source=”$(var.AddinFiles)” />
</Component>

Pour que WIX prenne en compte ces demandes d’installation des vsto, dll et autres manifests, il faut lui indiquer dans la balise <Product></Product> qu’il doit prendre en compte ces Components. Pour cela on ajoute une balise Feature dans <Product></Product> :

<Feature Id=”ProductFeature” Title=”Demo.Outlook.Addin.Setup” Level=”1″>
<ComponentGroupRef Id=”ProductComponents” />
</Feature>

Il se peut que la balise apparaisse déjà et soit déjà ok…

Il faut maintenant indiquer à WIX que lorsque le produit sera installé, il apparaitra dans le menu Ajout/Suppression de Programmes en ajoutant des clés de registre. Pour cela on utilise à nouveau des Components de la manière suivante :

<Fragment>
<Directory Id=”TARGETDIR” Name=”SourceDir”>
<Directory Id=”ProgramFilesFolder”>
<Directory Id=”NeosFolder” Name=”Neos”>
<Directory Id=”INSTALLFOLDER” Name=”Planning Outlook Add-in” />
<Component Id=”Registry_FriendlyName”>
<RegistryValue Id=”RegKey_FriendlyName” Root=”HKCU” Key=”Software\Microsoft\Office\Outlook\AddIns\Demo.Outlook.Addin” Name=”FriendlyName” Value=”Demo.Outlook.Addin Add-in for Outlook” Type=”string” KeyPath=”yes” />
</Component>
<Component Id=”Registry_Description”>
<RegistryValue Id=”RegKey_Description” Root=”HKCU” Key=”Software\Microsoft\Office\Outlook\AddIns\Demo.Outlook.Addin” Name=”Description” Value=”Demo.Outlook.Addin Add-in for Outlook to manage Categories in Calendars and Inbox.” Type=”string” KeyPath=”yes” />
</Component>
<Component Id=”Registry_Manifest”>
<RegistryValue Id=”RegKey_Manifest” Root=”HKCU” Key=”Software\Microsoft\Office\Outlook\AddIns\Demo.Outlook.Addin” Name=”Manifest” Value=”[INSTALLFOLDER]Demo.Outlook.Addin.vsto|vstolocal” Type=”string” KeyPath=”yes” />
</Component>
<Component Id=”Registry_LoadBehavior”>
<RegistryValue Id=”RegKey_LoadBehavior” Root=”HKCU” Key=”Software\Microsoft\Office\Outlook\AddIns\Demo.Outlook.Addin” Name=”LoadBehavior” Value=”3″ Type=”integer” KeyPath=”yes” />
</Component>
</Directory>
</Directory>
</Directory>
</Fragment>

On indique ici le répertoire d’installation par défaut du projet. Ici ce sera dans C:\Program Files (x86)\Neos\Planning Outlook Add-in. On y placera l’intégralité des composants à déployer et on créera 4 clés de registre dans HKEY_CURRENT_USER\Software\Microsoft\Office\Outlook\AddIns\Demo :

  • FriendlyName = Demo.Outlook.Addin Add-in for Outlook
  • Description = Demo.Outlook.Addin Add-in for Outlook to manage Categories in Calendars and Inbox.
  • Manifest = =[INSTALLFOLDER]Demo.Outlook.Addin.vsto|vstolocal
  • LoadBehavior = 3

Il faut ensuite référencer ces components dans la <Feature> utilisée précédemment, ce qui donne :

<Feature Id=”ProductFeature” Title=”Neos.Planning Add-in for Outlook” Level=”1″>
<ComponentGroupRef Id=”ProductComponents” />
<ComponentRef Id=”Registry_FriendlyName” />
<ComponentRef Id=”Registry_Description” />
<ComponentRef Id=”Registry_Manifest” />
<ComponentRef Id=”Registry_LoadBehavior” />
</Feature>

Dernière étape, ajouter des composants utiles à WIX pour le manifest de licence produit (EULA.rtf) et à préciser le type d’interface à utiliser :

<UIRef Id=”WixUI_Minimal” />
<WixVariable Id=”WixUILicenseRtf” Value=”EULA.rtf” />

Ce fichier EULA.rtf doit être ajouté à la solution (WIX en fournit un de base sur leur site) :

13

Si vous compilez dès à présent. Vous obtiendrez une erreur :

Undefined preprocessor variable ‘$(var.AddinFiles)’.

14

C’est tout à fait normal ! En effet, dans les déclaration des chemins vers les fichiers, nous avons utilisé cette directive “$(var.AddinFiles)” sans la déclarer. Pour cela, il faut se rendre dans les propriétés du projet WIX :

15

Dans la section “Build” nous allons déclarer une “preprocessor variable” (il vous faudra modifier le nom du projet en gras ici) :

  • AddinFiles=..\Demo.Outlook.Addin\bin\$(Configuration)\

16

On sauvegarde et on compile la solution.

De nouvelles erreurs apparaissent :

17

Rien de grave ici non plus, il manque seulement des références à des DLL utiles à la compilation. Nous allons faire un clic droit sur le répertoire References du projet WIX, puis “Add Reference” :

18

Une fenêtre d’ajout de références (pas celle de Visual Studio mais celle de WIX) apparait. On ajoute 2 références :

  • WixNetFxExtension.dll
  • WixUIExtension.dll

19

Et on recompile à nouveau ! Tout se passe bien :

20

5/ Tests

Il reste maintenant à tester le setup et que le projet fonctionne. Pour cela, rendez vous dans le répertoire de sortie du projet d’installation :

21

Lancer le .msi :

22

Le contenu apparaissant dans cette fenêtre est en fait le contenu du fichier EULA.rtf… On accepte les termes et on clique sur “Install”…

Puis on lance Outlook, les nouvelles catégories apparaissent !

23

Voila, le post s’achève… un merci tout particulier à Benoit Laut pour ses conseils et son aide ! A bientôt !

Télécharger le source : ici.