<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2frenchfull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:a10="http://www.w3.org/2005/Atom" version="2.0"><channel><title>bewise labs rss</title><link>http://labs.bewise.fr/rss</link><description>bewise labs</description><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/BewiseLabs/Blogs" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="bewiselabs/blogs" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://add.my.yahoo.com/content?lg=fr&amp;url=http%3A%2F%2Ffeeds.feedburner.com%2FBewiseLabs%2FBlogs" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/bn/intatm_fr_1.gif">Subscribe with Mon Yahoo!</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FBewiseLabs%2FBlogs" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.bloglines.com/sub/http://feeds.feedburner.com/BewiseLabs/Blogs" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FBewiseLabs%2FBlogs" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FBewiseLabs%2FBlogs" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FBewiseLabs%2FBlogs" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.plusmo.com/add?url=http%3A%2F%2Ffeeds.feedburner.com%2FBewiseLabs%2FBlogs" src="http://plusmo.com/res/graphics/fbplusmo.gif">Subscribe with Plusmo</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.thefreedictionary.com/_/hp/AddRSS.aspx?http%3A%2F%2Ffeeds.feedburner.com%2FBewiseLabs%2FBlogs" src="http://img.tfd.com/hp/addToTheFreeDictionary.gif">Subscribe with The Free Dictionary</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.bitty.com/manual/?contenttype=rssfeed&amp;contentvalue=http%3A%2F%2Ffeeds.feedburner.com%2FBewiseLabs%2FBlogs" src="http://www.bitty.com/img/bittychicklet_91x17.gif">Subscribe with Bitty Browser</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.live.com/?add=http%3A%2F%2Ffeeds.feedburner.com%2FBewiseLabs%2FBlogs" src="http://tkfiles.storage.msn.com/x1piYkpqHC_35nIp1gLE68-wvzLZO8iXl_JMledmJQXP-XTBOLfmQv4zhj4MhcWEJh_GtoBIiAl1Mjh-ndp9k47If7hTaFno0mxW9_i3p_5qQw">Subscribe with Live.com</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://mix.excite.eu/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FBewiseLabs%2FBlogs" src="http://image.excite.co.uk/mix/addtomix.gif">Subscribe with Excite MIX</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.webwag.com/wwgthis.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FBewiseLabs%2FBlogs" src="http://www.webwag.com/images/wwgthis.gif">Subscribe with Webwag</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.podcastready.com/oneclick_bookmark.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FBewiseLabs%2FBlogs" src="http://www.podcastready.com/images/podcastready_button.gif">Subscribe with Podcast Ready</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.wikio.com/subscribe?url=http%3A%2F%2Ffeeds.feedburner.com%2FBewiseLabs%2FBlogs" src="http://www.wikio.com/shared/img/add2wikio.gif">Subscribe with Wikio</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.dailyrotation.com/index.php?feed=http%3A%2F%2Ffeeds.feedburner.com%2FBewiseLabs%2FBlogs" src="http://www.dailyrotation.com/rss-dr2.gif">Subscribe with Daily Rotation</feedburner:feedFlare><item><guid isPermaLink="false">https://kazoumoulox.wordpress.com/?p=1880</guid><link>http://kazoumoulox.wordpress.com/2013/05/15/install-owa2013-sp2013/</link><a10:author><a10:name>Florent Cazenave</a10:name><a10:uri>http://kazoumoulox.wordpress.com/feed</a10:uri></a10:author><category>Administration SharePoint</category><category>Configuration SharePoint</category><category>Office 2013</category><category>Office Web Apps</category><category>Outils</category><category>SharePoint</category><category>SharePoint 2013</category><category>Administration</category><category>Office Web Apps 2013</category><title>[SharePoint 2013] – Installation des Office Web Apps 2013 avec SharePoint Server 2013</title><description>&amp;#160; Bonjour à tous. Un nouvel article pour vous montrer comment installer et configurer les Office Web Apps 2013 couplées à SharePoint Server 2013. Pour l’histoire, les Office Web Apps sont arrivées dans leur deuxième version : nous avons les Office Web Apps 2010 et 2013 à ce jour. Ces OWA vont nous permettre, couplées [&amp;#8230;]&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kazoumoulox.wordpress.com&amp;#038;blog=2355550&amp;#038;post=1880&amp;#038;subd=kazoumoulox&amp;#038;ref=&amp;#038;feed=1" width="1" height="1" /&gt;</description><pubDate>Wed, 15 May 2013 14:14:05 Z</pubDate><comments>http://kazoumoulox.wordpress.com/2013/05/15/install-owa2013-sp2013/#comments</comments><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Florent Cazenave</dc:creator><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/">&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Bonjour à tous.&lt;/p&gt;
&lt;p&gt;Un nouvel article pour vous montrer comment installer et configurer les Office Web Apps 2013 couplées à SharePoint Server 2013.&lt;/p&gt;
&lt;p&gt;Pour l’histoire, les Office Web Apps sont arrivées dans leur deuxième version : nous avons les Office Web Apps 2010 et 2013 à ce jour. Ces OWA vont nous permettre, couplées à SharePoint, d’ouvrir des documents Word, Excel, PowerPoint et OneNote directement dans le navigateur, sans utiliser les composants clients Office. Ce qui peut être évidemment très pratique lors les collaborateurs utilisent des plateformes hétérogènes de types tablettes iPad, Android, des téléphones mobiles ou encore des postes de travail sous MacOS ou une distribution Linux.&lt;/p&gt;
&lt;p&gt;Il faut bien intégrer pour commencer qu’à chaque version de SharePoint correspond une version des Office Web Apps :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SharePoint 2010 (Foundation ou Server) =&amp;gt; Office Web Apps 2010&lt;/li&gt;
&lt;li&gt;SharePoint 2013 (Foundation ou Server) =&amp;gt; Office Web Apps 2013&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Coté Licencing, vous pourrez installer ces OWA (2010 ou 2013) suivant le type de licences que vous possédez pour le pack Office. Si vous possédez les packs Office (en volumes) version 2010 vous pourrez éditer les fichiers Office. Si vous ne les possédez pas, vous pourrez seulement lire des documents Office via les OWA.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;De plus, avec la version 2010 des OWA, il était possible d’installer ce composant logiciel sur le même serveur que le serveur SharePoint (en le boostant un peu…). Avec la version 2013, ce n’est plus possible et ces composants s’installe sur un serveur dédié, rattaché au même domaine que SharePoint. Il y a quelques contraintes supplémentaires comme de ne pas avoir installé le pack Office sur ce serveur. Pour plus de renseignements : &lt;a href="http://technet.microsoft.com/fr-fr/library/jj219458.aspx" target="_blank"&gt;http://technet.microsoft.com/fr-fr/library/jj219458.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Pour l’architecture utilisée pour cet article, j’ai 3 machines virtuelles (VM) :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1 contrôleur de domaine : DOMAIN&lt;/li&gt;
&lt;li&gt;1 serveur SharePoint Server 2013 Enterprise (EN) : SP2013-DEV&lt;/li&gt;
&lt;li&gt;1 serveur Office Web Apps 2013 : SPOWA2013&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ces trois serveurs sont rattachés au même domaine : DEMO, sont installés sous Windows Server 2012 ou Windows Server 2008R2 (EN) et à jour :&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/05/image.png"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border-width:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb.png?w=342&amp;#038;h=351" width="342" height="351" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Et oui… une belle débauche de mémoire et de processeurs… &lt;img class="wlEmoticon wlEmoticon-smile" style="border-style:none;" alt="Sourire" src="http://kazoumoulox.files.wordpress.com/2013/05/wlemoticon-smile.png?w=595" /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Je précise que mes machines Active Directory &amp;amp; SharePoint étaient déjà installées et fonctionnelles avant l’installation d’Office Web Apps.&lt;/p&gt;
&lt;p&gt;Première étape installer et configurer Windows Server 2012 (et mettre à jour !), je ne détaillerai pas cela dans cet article.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;1/ Préparation du serveur pour Office Web Apps 2013&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Lorsque le serveur a été installé et configuré, il faut commencer par télécharger les Office Web Apps 2013. Pour cela, vous pouvez télécharger la Preview ici : &lt;a href="http://www.microsoft.com/en-us/download/details.aspx?id=30358"&gt;http://www.microsoft.com/en-us/download/details.aspx?id=30358&lt;/a&gt; ou ici &lt;a href="http://www.microsoft.com/fr-fr/download/details.aspx?id=35489"&gt;http://www.microsoft.com/fr-fr/download/details.aspx?id=35489&lt;/a&gt;. Vous pourrez également télécharger l’iso depuis votre compte MSDN ou Technet.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Connectez vous ensuite à votre serveur OWA avec un compte du domaine qui est administrateur local du serveur (dans mon cas, c’est le même que le compte d’installation de SharePoint : DEMO\spadmin).&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Il faut ensuite exécuter un script PowerShell sur le serveur OWA en lançant la commande en administrateur. Pour cela, rendez-vous sur les “tuiles” de Windows Server 2012, repérez la tuile Windows PowerShell :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/05/image1.png"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border-width:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb1.png?w=530&amp;#038;h=300" width="530" height="300" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Faites un clic-droit sur la tuile :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/05/image2.png"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border-width:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb2.png?w=538&amp;#038;h=305" width="538" height="305" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Et cliquez sur “Run as administrator” :&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/05/image3.png"&gt;&lt;img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border-width:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb3.png?w=547&amp;#038;h=310" width="547" height="310" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Vous pouvez avoir l’UAC qui se déclenche, on clique sur “Yes” :&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/05/image4.png"&gt;&lt;img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border-width:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb4.png?w=377&amp;#038;h=237" width="377" height="237" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Et PowerShell 3.0 :&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/05/image5.png"&gt;&lt;img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border-width:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb5.png?w=427&amp;#038;h=277" width="427" height="277" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Nous allons lancer un script permettant d’installer et de configurer les rôles et services nécessaires sur le serveur pour OWA 2013. Vous trouverez des informations complémentaires ici : &lt;a href="http://technet.microsoft.com/fr-fr/library/jj219455.aspx" target="_blank"&gt;http://technet.microsoft.com/fr-fr/library/jj219455.aspx&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;On copie / colle le script :&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Add-WindowsFeature Web-Server,Web-Mgmt-Tools,Web-Mgmt-Console,Web-WebServer,Web-Common-Http,Web-Default-Doc,Web-Static-Content,Web-Performance,Web-Stat-Compression,Web-Dyn-Compression,Web-Security,Web-Filtering,Web-Windows-Auth,Web-App-Dev,Web-Net-Ext45,Web-Asp-Net45,Web-ISAPI-Ext,Web-ISAPI-Filter,Web-Includes,InkandHandwritingServices&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Le script d’installation se lance et devrait durer… moins de 3 minutes :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/05/image6.png"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border-width:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb6.png?w=457&amp;#038;h=297" width="457" height="297" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Mais que fait ce script me direz-vous ? Il se charge d’installer le rôle Web Server de Windows Server 2012 (installer IIS), et active sur ce rôle les différents protocoles, utilitaires qu’utiliseront les OWA 2013.&lt;/p&gt;
&lt;p&gt;Lorsque le script est terminé, redémarrer le serveur OWA 2013. En allant dans le gestionnaire du serveur, on voit tout de suite le nouveau rôle IIS qui apparait :&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/05/image7.png"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border-width:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb7.png?w=422&amp;#038;h=422" width="422" height="422" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/05/image8.png"&gt;&lt;img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border-width:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb8.png?w=427&amp;#038;h=420" width="427" height="420" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Les extensions et fonctionnalités activées :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/05/image9.png"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border-width:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb9.png?w=521&amp;#038;h=448" width="521" height="448" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;2/ Installation des Office Web Apps 2013&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Maintenant que les prérequis sont installés, il va falloir installer les binaires des Office Web Apps 2013. Pour cela il faut monter l’iso téléchargé précédemment sur la machine virtuelle et lancer le setup d’installation :&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/05/image10.png"&gt;&lt;img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border-width:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb10.png?w=529&amp;#038;h=319" width="529" height="319" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Pour cela, on se rend dans l’explorateur de fichier et on fait un clic-droit sur le lecteur DVD avec l’iso monté, puis “Install or run program from your media” (s’il ne démarre pas tout seul).&lt;/p&gt;
&lt;p&gt;Encore une fois, l’UAC peut s’activer, on clique sur “Yes” :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/05/image11.png"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border-width:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb11.png?w=353&amp;#038;h=199" width="353" height="199" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Le contrat de licence apparait, on sélectionne la case à cocher en bas, puis on clique sur “Continue” :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/05/image12.png"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border-width:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb12.png?w=368&amp;#038;h=300" width="368" height="300" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;On nous demande ensuite d’indiquer l’emplacement d’installation des binaires. Je conserve l’emplacement par défaut : C:\Program Files\Microsoft Office Web Apps et on clique sur “Install Now” :&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/05/image13.png"&gt;&lt;img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border-width:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb13.png?w=375&amp;#038;h=307" width="375" height="307" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;L’installation débute… on patiente :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/05/image14.png"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border-width:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb14.png?w=379&amp;#038;h=310" width="379" height="310" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/05/image15.png"&gt;&lt;img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border-width:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb15.png?w=384&amp;#038;h=314" width="384" height="314" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;L’installation est terminée, on clique sur “Close” :&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/05/image16.png"&gt;&lt;img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border-width:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb16.png?w=387&amp;#038;h=315" width="387" height="315" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;En option, vous pouvez également installer les languages packs pour OWA 2013. Pour plus de renseignements, visitez ceci : &lt;a href="http://technet.microsoft.com/fr-fr/library/jj219455.aspx"&gt;http://technet.microsoft.com/fr-fr/library/jj219455.aspx&lt;/a&gt; =&amp;gt; Etape 3.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;3/ Déploiement des Office Web Apps&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;L’étape suivante consiste à créer l’application Web qui permettra d’afficher nos documents. Il existe plusieurs types de configurations suivant votre besoin : http ou https, équilibrage de charge, etc.&lt;/p&gt;
&lt;p&gt;Dans mon cas, je reste dans un périmètre interne, tous les utilisateurs se connectent en http. Pour corser un peu le tout, nous allons créer l’application en PowerShell. Pour cela, on reprend notre console PowerShell lancée en administrateur et on exécute :&lt;/p&gt;
&lt;pre&gt;New-OfficeWebAppsFarm –InternalURL "http://servername" –AllowHttp -EditingEnabled&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Où :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;New-OfficeWebAppsFarm : permet de créer la ferme OWA 2013&lt;/li&gt;
&lt;li&gt;InternalURL : adresse du serveur courant, dans mon cas &lt;a href="http://spowa2013"&gt;http://spowa2013&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;AllowHttp : puisque je reste en http&lt;/li&gt;
&lt;li&gt;EditingEnabled : puisque je veux permettre de lire / modifier les documents&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Cela donne :&lt;/p&gt;
&lt;pre&gt;New-OfficeWebAppsFarm –InternalURL http://spowa2013 –AllowHttp -EditingEnabled&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Un avertissement vous stipule que pour utiliser le mode édition de document des OWA 2013, il faut que vos utilisateur aient les licences adéquates. Pour savoir si vous pouvez utiliser le mode édition, je vous renvoie vers : &lt;a href="http://technet.microsoft.com/fr-fr/library/ff431682.aspx#license"&gt;http://technet.microsoft.com/fr-fr/library/ff431682.aspx#license&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Pour faire simple, vous avez les licences pour Office 2013, vous pouvez éditer. Sinon la lecture des fichiers est “offerte” par Microsoft.&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/05/image17.png"&gt;&lt;img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border-width:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb17.png?w=600&amp;#038;h=242" width="600" height="242" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Pour configurer les licences à utiliser, reportez vous à : &lt;a href="http://technet.microsoft.com/fr-fr/library/jj219627.aspx"&gt;http://technet.microsoft.com/fr-fr/library/jj219627.aspx&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Dans mon cas, je choisis donc “Yes” (Y) :&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/05/image18.png"&gt;&lt;img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border-width:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb18.png?w=522&amp;#038;h=136" width="522" height="136" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;La configuration se poursuit. A la fin, un résumé apparait :&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/05/image19.png"&gt;&lt;img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border-width:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb19.png?w=529&amp;#038;h=343" width="529" height="343" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Remarque MSDN&lt;/em&gt; : Si des composants de .NET Framework 3.5 ont été installés puis supprimés, il est possible que vous rencontriez des messages de type « Exceptions de service web (500) » ou « Erreur interne du serveur (500.21) » lorsque vous exécutez des applets de commande OfficeWebApps. Pour résoudre ces problèmes, exécutez les exemples de commandes suivants à partir d’une invite de commandes avec élévation de privilèges afin de supprimer les paramètres susceptibles de gêner le fonctionnement normal d’Office Web Apps Server :&lt;/p&gt;
&lt;pre&gt;%systemroot%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe –iru
iisreset /restart /noforce&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;4/ Vérification que tout est ok…&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Pour cela, nous allons utiliser le service de discovery des Office Web Apps en se connectant tout simplement sur une URL :&lt;/p&gt;
&lt;pre&gt;http://servername/hosting/discovery&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Dans mon cas :&lt;/p&gt;
&lt;pre&gt;http://spowa2013/hosting/discovery&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Je lance donc simplement un navigateur (IE 10 ici) et on entre l’adresse ci-dessus. Si Office Web Apps Server fonctionne comme prévu, vous verrez s’afficher un flux XML de découverte WOPI (Web app Open Platform Interface). Les premières lignes de ce fichier doivent se présenter comme dans l’exemple suivant : :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/05/image20.png"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border-width:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb20.png?w=595&amp;#038;h=324" width="595" height="324" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Et ce n’est pas fini…&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;5/ Configurer SharePoint Server 2013 pour Office Web Apps 2013&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Il nous reste maintenant à faire le lien entre notre ferme SharePoint Server 2013 et les Office Web Apps 2013. Et encore une fois… une bonne dose de PowerShell !&lt;/p&gt;
&lt;p&gt;Cependant, nous n’allons pas utiliser la console PowerShell 3.0 de Windows Server 2012, mais le &lt;strong&gt;SharePoint Management Shell &lt;/strong&gt;de SharePoint Server 2013… un outil bien connu des administrateurs SharePoint !&lt;/p&gt;
&lt;p&gt;Lançons donc la console SharePoint Management Shell, &lt;strong&gt;sur le serveur SharePoint&lt;/strong&gt; bien entendu !&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/05/image21.png"&gt;&lt;img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border-width:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb21.png?w=472&amp;#038;h=240" width="472" height="240" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Puis toujours dans cette console, on lance la commande :&lt;/p&gt;
&lt;pre&gt;New-SPWOPIBinding -ServerName &amp;lt;WacServerName&amp;gt; -AllowHTTP&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Dans mon cas (attention aux paramètres suivant ceux fixés lors de la configuration des OWA : http / https en particulier) :&lt;/p&gt;
&lt;pre&gt;New-SPWOPIBinding –ServerName SPOWA2013 -AllowHTTP&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/05/image22.png"&gt;&lt;img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border-width:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb22.png?w=445&amp;#038;h=228" width="445" height="228" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Le Shell vous liste un ensemble de connections WOPI disponibles :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/05/image23.png"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border-width:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb23.png?w=353&amp;#038;h=450" width="353" height="450" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Puis on exécute :&lt;/p&gt;
&lt;pre&gt;Get-SPWOPIZone&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/05/image24.png"&gt;&lt;img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border-width:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb24.png?w=453&amp;#038;h=232" width="453" height="232" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Dans les résultats vous devez avoir absolument :&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="background-color:#ffffff;"&gt;Internal-https&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Et bien sûr nous voudrions avoir du http ! Nous allons donc modifier cette zone avec la commande :&lt;/p&gt;
&lt;pre&gt;Set-SPWOPIZone –zone “internal-http”&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Et on relance avec Get-SPWOPIZone pour vérifier que cela a bien été pris en compte :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/05/image25.png"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border-width:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb25.png?w=453&amp;#038;h=230" width="453" height="230" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Maintenant nous avons :&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="background-color:#ffffff;"&gt;Internal-http&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Ca sent la fin… mais pas tout de suite. Il nous reste à autoriser l’authentification OAuth sur http pour que cela fonctionne. Pour cela on éxécute :&lt;/p&gt;
&lt;pre&gt;(Get-SPSecurityTokenServiceConfig).AllowOAuthOverHttp&lt;/pre&gt;
&lt;p align="center"&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/05/image26.png"&gt;&lt;img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border-width:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb26.png?w=474&amp;#038;h=243" width="474" height="243" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Si cela renvoie “False” dans la console, alors il faut forcer la valeur à “True” :&lt;/p&gt;
&lt;pre&gt;$config = (Get-SPSecurityTokenServiceConfig)
$config.AllowOAuthOverHttp = $true
$config.Update()&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;On relance une petite vérification :&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre&gt;(Get-SPSecurityTokenServiceConfig).AllowOAuthOverHttp&lt;/pre&gt;
&lt;p&gt;La valeur renvoyée doit être maintenant à “True” :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/05/image27.png"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border-width:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb27.png?w=538&amp;#038;h=275" width="538" height="275" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Pour plus d’informations : &lt;a href="http://technet.microsoft.com/fr-fr/library/ff431687.aspx"&gt;http://technet.microsoft.com/fr-fr/library/ff431687.aspx&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;6/ Vérification de la configuration globale&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Pour vérifier… il faut tester ! Nous allons donc nous connecter sur un de nos sites SharePoint avec un compte utilisateur / collaborateur (pas d’administrateur, super admin etc.)&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/05/image28.png"&gt;&lt;img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border-width:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb28.png?w=536&amp;#038;h=230" width="536" height="230" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;J’ajoute quelques documents de type Office… dans une bibliothèque de documents :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/05/image29.png"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border-width:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb29.png?w=453&amp;#038;h=311" width="453" height="311" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;On clique sur un des fichiers (PowerPoint pour ma part)… et ça marche !&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/05/image30.png"&gt;&lt;img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border-width:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb30.png?w=600&amp;#038;h=309" width="600" height="309" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Et du Word :&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/05/image31.png"&gt;&lt;img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border-width:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb31.png?w=600&amp;#038;h=309" width="600" height="309" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Et de l’Excel :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/05/image32.png"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border-width:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb32.png?w=600&amp;#038;h=309" width="600" height="309" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Et un OneNote :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/05/image33.png"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border-width:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb33.png?w=600&amp;#038;h=309" width="600" height="309" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Notez à chaque fois la présence des boutons dans le ruban pour éditer les documents, les sauvegarder etc. Ca marche plutôt bien !&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Grâce aux Office Web Apps 2013, nous avons aussi la prévisualisation des documents (dans la bibliothèque de documents et dans la recherche) :&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/05/image34.png"&gt;&lt;img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border-width:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb34.png?w=501&amp;#038;h=306" width="501" height="306" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/05/image35.png"&gt;&lt;img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb35.png?w=514&amp;#038;h=310" width="514" height="310" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Si vous avez activé l’édition / création des documents depuis OWA 2013, lorsque vous cliquez sur le bouton Nouveau document Word, vous pourrez créer vos document directement en Web !&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/05/image36.png"&gt;&lt;img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb36.png?w=455&amp;#038;h=327" width="455" height="327" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/05/image37.png"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb37.png?w=452&amp;#038;h=247" width="452" height="247" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/05/image38.png"&gt;&lt;img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb38.png?w=460&amp;#038;h=196" width="460" height="196" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Voilà, c’est fini !&lt;/p&gt;
&lt;br /&gt;  &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kazoumoulox.wordpress.com/1880/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kazoumoulox.wordpress.com/1880/" /&gt;&lt;/a&gt; &lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kazoumoulox.wordpress.com&amp;#038;blog=2355550&amp;#038;post=1880&amp;#038;subd=kazoumoulox&amp;#038;ref=&amp;#038;feed=1" width="1" height="1" /&gt;</content:encoded><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://kazoumoulox.wordpress.com/2013/05/15/install-owa2013-sp2013/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://2.gravatar.com/avatar/2936677cba6281757d94cbedbcd1a561?s=96&amp;d=identicon&amp;r=G" medium="image">
			<media:title type="html">kazoumoulox</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/05/wlemoticon-smile.png" medium="image">
			<media:title type="html">Sourire</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb1.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb2.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb3.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb4.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb5.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb6.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb7.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb8.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb9.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb10.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb11.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb12.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb13.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb14.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb15.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb16.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb17.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb18.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb19.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb20.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb21.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb22.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb23.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb24.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb25.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb26.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb27.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb28.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb29.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb30.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb31.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb32.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb33.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb34.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb35.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb36.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb37.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/05/image_thumb38.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content></item><item><guid isPermaLink="false">http://paslatek.net/?p=1000</guid><link>http://feedproxy.google.com/~r/PaslatekBlog/~3/eukCXwbnWi8/</link><a10:author><a10:name>Lionel Limozin</a10:name><a10:uri>http://feeds.feedburner.com/PaslatekBlog</a10:uri></a10:author><category>SharePoint</category><category>APPs; Provider Hosted;Chrome Control;Dev;2013;SharePoint;Chrome Control; Description; ConfSharePoint; JQuery</category><title>Ajouter un texte de description dans le “Chrome Control” de vos APPs SharePoint 2013</title><description>J'ai ecris pour vous le javascript qui permet d'ajouter une description sous le titre de votre APPs dans le Chrome Control de SharePoint 2013</description><pubDate>Thu, 09 May 2013 16:14:17 Z</pubDate><comments>http://paslatek.net/2013/05/sharepoint/ajouter-un-texte-de-description-dans-le-chrome-control-de-vos-apps-sharepoint-2013/#comments</comments><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Lionel</dc:creator><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/">&lt;p&gt;Voici la KB technique du mois ! ça faisait longtemps que j’avais pas fait de billet technique…. En ce moment je prépare des APPs pour &lt;a href="http://www.confsharepoint.com/" target="_blank"&gt;la Conf SharePoint&lt;/a&gt;, et récemment j’ai mis un petit “hook” en place pour le look de mes APPs qui utilisent le Chrome Control&lt;/p&gt;
&lt;p&gt;C’est quoi le Chrome Control ? En quelques mots c’est un composant client (JavaScript) qui permet, dans une APPs de type “Provider Hosted” (donc hébergée ailleurs que sur le site SharePoint), d’utiliser la css du site SharePoint ”parent” ainsi que son “look &amp;amp; feel”. En gros on est à la base sur une page blanche d’un site asp maison, et avec quelques lignes de JS on à l’impression d’être dans SharePoint &lt;img src='http://paslatek.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /&gt; . Voilà ce que ça peut donner :&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msdn.microsoft.com/fr-fr/library/fp179916.aspx" target="_blank"&gt;&lt;img style="border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; float: none; margin-left: auto; display: block; border-top-width: 0px; margin-right: auto" border="0" alt="Page web distante avec le contrôle Chrome" src="http://i.msdn.microsoft.com/dynimg/IC628013.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;Pour plus de détail sur son utilisation : &lt;a href="http://msdn.microsoft.com/fr-fr/library/fp179916.aspx"&gt;http://msdn.microsoft.com/fr-fr/library/fp179916.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;Mais la KB n’est pas là &lt;img src='http://paslatek.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /&gt;  …&lt;/p&gt;
&lt;p&gt;&lt;span id="more-1000"&gt;&lt;/span&gt;
&lt;p&gt;Au niveau du bandeau ce composant permet un minimum de paramétrage : Logo, Titre, Lien d’aide, Menu de settings. Ni plus, ni moins. &lt;/p&gt;
&lt;p&gt;Pour l’utiliser c’est très simple comme vous le verrez dans la doc msdn citée ci dessus, voilà ma version initiale de la fonction renderChrome :&lt;/p&gt;
&lt;pre&gt;  function renderChrome() {
          var options = {
              &amp;quot;appIconUrl&amp;quot;: &amp;quot;../img/Logo Bleu.png&amp;quot;,
              &amp;quot;appTitle&amp;quot;: &amp;quot;Bon App'&amp;quot;

          };

          var nav = new SP.UI.Controls.Navigation(
                                  &amp;quot;chrome_ctrl_placeholder&amp;quot;,
                                  options
                            );
          nav.setVisible(true);
	}&lt;/pre&gt;
&lt;p&gt;Et ça donne ça :&lt;/p&gt;
&lt;p&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px" border="0" alt="image" src="http://paslatek.net/wp-content/uploads/2013/05/image.png" width="393" height="128" /&gt; &lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;Un peu vide non ?…&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;Malheureusement, le composant ne semble pas prendre en charge aujourd’hui l’ajout d’une description (ou sous titre, ou slogan, appelez ça comme vous voulez).&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;Et c’est là que je vous offre ce magnifique Tips &lt;img src='http://paslatek.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /&gt;  (bon j’avoue j’ai pas eu à chercher très longtemps l’id de la div qui va bien où insérer mon texte)&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;Le Tips consiste à ajouter un poil de JQuery et de “compléter” le html&amp;#160; généré par le Chrome Control :&lt;/p&gt;
&lt;pre&gt;	function renderChrome() {
          var options = {
              &amp;quot;appIconUrl&amp;quot;: &amp;quot;../img/Logo Bleu.png&amp;quot;,
              &amp;quot;appTitle&amp;quot;: &amp;quot;Bon App'&amp;quot;

          };
          var nav = new SP.UI.Controls.Navigation(
                                  &amp;quot;chrome_ctrl_placeholder&amp;quot;,
                                  options
                            );
          nav.setVisible(true);

&lt;b&gt;
	  //récupération de la div contenant le titre de l'APP
          var titleDiv = $(&amp;quot;#chromeControl_bottomheader_apptitle&amp;quot;).parent().parent();
	  //sauvegarde du html de cette div
          var originalHtml = titleDiv.html();
 	  //ajout d'une div en plus pour le message secondaire
          titleDiv.html(originalHtml + &amp;quot;&amp;lt;div style=&amp;quot;clear: left&amp;quot;&amp;gt;&amp;lt;p&amp;gt;L'app SharePoint qui vous dit Bon appétit !&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;);
&lt;/b&gt;         
      }&lt;/pre&gt;
&lt;p&gt;Et voilà le résultat :&lt;/p&gt;
&lt;p&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px" border="0" alt="image" src="http://paslatek.net/wp-content/uploads/2013/05/image1.png" width="400" height="130" /&gt; &lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;Plus sympa non !? &lt;/p&gt;
</content:encoded><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://paslatek.net/2013/05/sharepoint/ajouter-un-texte-de-description-dans-le-chrome-control-de-vos-apps-sharepoint-2013/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://paslatek.net/2013/05/sharepoint/ajouter-un-texte-de-description-dans-le-chrome-control-de-vos-apps-sharepoint-2013/</feedburner:origLink></item><item><guid isPermaLink="false">http://paslatek.net/?p=995</guid><link>http://feedproxy.google.com/~r/PaslatekBlog/~3/u384vmNfuro/</link><a10:author><a10:name>Lionel Limozin</a10:name><a10:uri>http://feeds.feedburner.com/PaslatekBlog</a10:uri></a10:author><category>SharePoint</category><category>Harmon.ie; Conf SharePoint; vote; concours; influenceur; mvp</category><title>TOP 10 Des Influenceurs SharePoint</title><description>Votez pour moi au concours Top10 des influenceurs sharepoint francophones</description><pubDate>Thu, 09 May 2013 15:26:10 Z</pubDate><comments>http://paslatek.net/2013/05/sharepoint/top-10-des-influenceurs-sharepoint/#comments</comments><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Lionel</dc:creator><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/">&lt;p&gt;Un petit concours pour le Fun ! Après le vote au niveau Européen, cette fois ci à l’occasion de &lt;a href="http://www.confsharepoint.com/" target="_blank"&gt;la 1ere conf SharePoint&lt;/a&gt; qui aura lieu très bientôt (22 au 24 mai 2013), Harmon.ie remet le couvert avec ce concours mais limité aux Francophones ! &lt;/p&gt;
&lt;p&gt;Donc pour ceux qui lisent ce billet et n’ont pas vu mon message sur twitter ou linkedin, il est encore temps de voter pour vos “SharePointistes” favoris ! ça ce passe ici : &lt;b&gt;&lt;a href="http://harmon.ie/top-10-french-sharepoint-influencers"&gt;http://harmon.ie/top-10-french-sharepoint-influencers&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Si vous voulez voter pour moi, je suis dans la colonne du milieu vers le bas &lt;img src='http://paslatek.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /&gt; &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Les résultats lors de la Conf et bien sûr je mettrais un petit billet pour vous donner ces résultats…&lt;/p&gt;
</content:encoded><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://paslatek.net/2013/05/sharepoint/top-10-des-influenceurs-sharepoint/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://paslatek.net/2013/05/sharepoint/top-10-des-influenceurs-sharepoint/</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5619051591853320584.post-8709578935233947671</guid><link>http://blog.adhess.net/2013/05/winjs-ouvrir-une-url-dans-le-navigateur.html</link><a10:author><a10:name>Guillaume Lacasa</a10:name><a10:uri>http://blog.adhess.net/feeds/posts/default</a10:uri></a10:author><category domain="http://www.blogger.com/atom/ns#">Windows8</category><category domain="http://www.blogger.com/atom/ns#">WinJS</category><title>WinJS : ouvrir une url dans le navigateur du système</title><description>&lt;p&gt;Aujourd’hui c’est une toute petite astuce que je vous propose, puisqu’elle tient en 2 lignes de code. Mais comme à chaque fois que j’ai besoin de ces 2 lignes, je cherche sur Google, je me suis dit que j’allais le mettre ici, histoire de savoir où le trouver la prochaine fois.&lt;/p&gt;  &lt;p&gt;Donc le problème : comment on fait en WinJS pour ouvrir une url dans le navigateur ? La réponse se trouve sur &lt;a href="http://www.notreallycode.com/2012/09/04/winjs-open-browser-programmatically/"&gt;ce blog&lt;/a&gt;, et la doc &lt;a href="http://msdn.microsoft.com/library/windows/apps/Hh701476"&gt;sur msdn&lt;/a&gt;. Il suffit d’utiliser le Launcher adéquat.&lt;/p&gt;  &lt;div id="codeSnippetWrapper" style="overflow: auto; cursor: text; font-size: 8pt; border-top: silver 1px solid; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right: silver 1px solid; border-bottom: silver 1px solid; padding-bottom: 4px; direction: ltr; text-align: left; padding-top: 4px; padding-left: 4px; margin: 20px 0px 10px; border-left: silver 1px solid; line-height: 12pt; padding-right: 4px; max-height: 200px; width: 97.5%; background-color: #f4f4f4"&gt;   &lt;pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 8pt; border-left-style: none; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; line-height: 12pt; padding-right: 0px; width: 100%; background-color: #f4f4f4"&gt;&lt;span style="color: #0000ff"&gt;var&lt;/span&gt; uri = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Windows.Foundation.Uri(&lt;span style="color: #006080"&gt;'http://www.yoururl.com/'&lt;/span&gt;);&lt;br /&gt;Windows.System.Launcher.launchUriAsync(uri);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Notez qu’ici on utilise LaunchUriAsync pour ouvrir le navigateur, mais d’autres applications peuvent être démarrées ; par exemple un éditeur d’image pour une uri associée à une image, ou une autre de vos applications présente sur le store.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Par contre, vous n’avez aucune visibilité sur ce que votre utilisateur fera une fois le launcher démarré : il peut utiliser une autre application que celle que vous lui recommandez, c’est son droit. Faites-y attention.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Pour plus de détails, &lt;a href="http://msdn.microsoft.com/en-US/library/windows/apps/hh452690"&gt;la doc est toujours là&lt;/a&gt; !&lt;/p&gt;  </description><pubDate>Mon, 06 May 2013 16:15:00 +0200</pubDate><a10:link rel="replies" type="application/atom+xml" title="Publier les commentaires" href="http://blog.adhess.net/feeds/8709578935233947671/comments/default" /><a10:link rel="replies" type="text/html" title="0 commentaires" href="http://www.blogger.com/comment.g?blogID=5619051591853320584&amp;postID=8709578935233947671" /><a10:link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5619051591853320584/posts/default/8709578935233947671" /><a10:link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5619051591853320584/posts/default/8709578935233947671" /><a10:updated>2013-05-06T16:16:24+02:00</a10:updated><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><guid isPermaLink="false">https://kazoumoulox.wordpress.com/?p=1797</guid><link>http://kazoumoulox.wordpress.com/2013/04/18/sp-2013-color-palette-tool/</link><a10:author><a10:name>Florent Cazenave</a10:name><a10:uri>http://kazoumoulox.wordpress.com/feed</a10:uri></a10:author><category>Branding</category><category>CSS3</category><category>Design</category><category>Outils</category><category>SharePoint</category><category>SharePoint 2013</category><category>branding</category><category>Color Palette Tool</category><category>css</category><category>Outil SharePoint</category><title>[SharePoint 2013]–Nouvel outil : SharePoint Color Palette Tool</title><description>Avec la sortie de la nouvelle version de SharePoint 2013, nous avons vu (encore) son design général changé. Ce design reprend les principes de Modern UI dictés par Microsoft et repris sur l’intégralité des plateformes : Windows 8, Windows Phone, Xbox. Nous retrouvons donc dans SharePoint en particulier les Tuiles bien connues, et d’autres un [&amp;#8230;]&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kazoumoulox.wordpress.com&amp;#038;blog=2355550&amp;#038;post=1797&amp;#038;subd=kazoumoulox&amp;#038;ref=&amp;#038;feed=1" width="1" height="1" /&gt;</description><pubDate>Thu, 18 Apr 2013 07:15:10 Z</pubDate><comments>http://kazoumoulox.wordpress.com/2013/04/18/sp-2013-color-palette-tool/#comments</comments><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Florent Cazenave</dc:creator><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/">&lt;p&gt;Avec la sortie de la nouvelle version de SharePoint 2013, nous avons vu (encore) son design général changé. Ce design reprend les principes de Modern UI dictés par Microsoft et repris sur l’intégralité des plateformes : Windows 8, Windows Phone, Xbox.&lt;/p&gt;
&lt;p&gt;Nous retrouvons donc dans SharePoint en particulier les Tuiles bien connues, et d’autres un peu moins “Visibles” au premier abord.&lt;/p&gt;
&lt;p&gt;SharePoint 2013 apporte également son lot de nouveau thèmes graphiques natifs sur lesquels on peut personnaliser le jeu de couleurs, l’icône, et même la navigation latérale via les materpages oslo.master &amp;amp; seattle.master. Cet éditeur de thèmes permet quand même bien des personnalisations, mais il se peut que cela ne suffise pas !&lt;/p&gt;
&lt;p&gt;Dans ces cas là, on peut utiliser le Design Manager permettant d’importer des découpages html pour les convertir en masterpages, les canaux, etc. (voir mon article : &lt;a href="http://kazoumoulox.wordpress.com/2012/08/02/sp2013-design-manager/" target="_blank"&gt;SP2013–Design Manager&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Pour nous permettre d’aller plus loin, mais sans recourir à SharePoint Designer, aux CSS, aux masterpages, Microsoft nous propose un nouvel outil fraichement releasé : &lt;a href="http://www.microsoft.com/en-us/download/details.aspx?id=38182" target="_blank"&gt;SharePoint Color Palette Tool&lt;/a&gt; ! Les prérequis sont Internet Explorer 8 ou supérieur et le Framework 4.5.&lt;/p&gt;
&lt;p&gt;Pour ceux qui le connaitraient, pour SharePoint 2010 nous avions Theme Builder renommé Open XML Theme Builder et disponible récemment sur CodePlex : &lt;a href="http://openxmlthemebuilder.codeplex.com" target="_blank"&gt;Open XML Theme Builder&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Voyons ensemble à quoi cela ressemble !&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;On télécharge l’outil ici : &lt;a href="http://www.microsoft.com/en-us/download/details.aspx?id=38182" target="_blank"&gt;SharePoint Color Palette Tool&lt;/a&gt; (1,1Mb).&lt;/p&gt;
&lt;p&gt;Et on l’installe (ici sur une machine Windows 8 Enterprise x64 en anglais) :&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;On lance le setup, “Next” :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/04/01.png"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border:0;" title="01" alt="01" src="http://kazoumoulox.files.wordpress.com/2013/04/01_thumb.png?w=374&amp;#038;h=288" width="374" height="288" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;On accepte les termes du contrat de licence et “Next” :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/04/02.png"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border:0;" title="02" alt="02" src="http://kazoumoulox.files.wordpress.com/2013/04/02_thumb.png?w=380&amp;#038;h=293" width="380" height="293" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;On choisit l’emplacement d’installation, puis “Next” :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/04/03.png"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border:0;" title="03" alt="03" src="http://kazoumoulox.files.wordpress.com/2013/04/03_thumb.png?w=383&amp;#038;h=295" width="383" height="295" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Résumé des information, “Next” :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/04/04.png"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border:0;" title="04" alt="04" src="http://kazoumoulox.files.wordpress.com/2013/04/04_thumb.png?w=387&amp;#038;h=298" width="387" height="298" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;L’installation est terminée, on coche “Launch the program”, “Finish” :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/04/05.png"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border:0;" title="05" alt="05" src="http://kazoumoulox.files.wordpress.com/2013/04/05_thumb.png?w=389&amp;#038;h=299" width="389" height="299" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Le programme se lance :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/04/06.png"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border:0;" title="06" alt="06" src="http://kazoumoulox.files.wordpress.com/2013/04/06_thumb.png?w=600&amp;#038;h=398" width="600" height="398" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Premières impressions… plutôt bonnes ! On retrouve sur la gauche un ensemble de contrôles “couleur” avec prévisualisation et code couleur RGB. Au centre, une prévisualisation du résultat (on reprend le thème général de SharePoint 2013) et tout en haut le choix du layout (oslo ou seattle), en dessous un affichage des warnings &amp;amp; erreurs. Sur la droite, un contrôle permet de placer une image en fond, de choisir un jeu de couleurs originel, et au centre un outil permettant de tester le contraste appliqué…&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Première chose que je vérifie… qu’est-ce que génère cet outil ? En faisant File &amp;gt; Save, on me propose de sauvegarder un fichier *.spcolor :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/04/07.png"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border:0;" title="07" alt="07" src="http://kazoumoulox.files.wordpress.com/2013/04/07_thumb.png?w=496&amp;#038;h=281" width="496" height="281" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Ce fichier spcolor n’est autre qu’un fichier XML :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/04/08.png"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border:0;" title="08" alt="08" src="http://kazoumoulox.files.wordpress.com/2013/04/08_thumb.png?w=592&amp;#038;h=362" width="592" height="362" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Qu’il faudra importer dans SharePoint 2013, pour en savoir plus, direction MSDN : &lt;a href="http://msdn.microsoft.com/en-us/library/jj945889.aspx"&gt;http://msdn.microsoft.com/en-us/library/jj945889.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;En fait on retrouve une certaine analogie entre ce fichier spcolor et les css, mais seulement pour la partie couleurs. En effet, on ne retrouve dans ce fichier aucun information sur la masterpage, le layout etc. Donc les paramètres dans l’outil Color Palette ne servent qu’à la prévisualisation, pas au paramétrage du thème en lui-même.&lt;/p&gt;
&lt;p&gt;Notons également que dans la zone de gauche, on a des sous items sur lesquels on pourra modifier les couleurs :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/04/09.png"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border:0;" title="09" alt="09" src="http://kazoumoulox.files.wordpress.com/2013/04/09_thumb.png?w=595&amp;#038;h=324" width="595" height="324" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;A mon avis, cela va être difficile de faire un jeu de couleur correct dès le premier essai ! Il y a beaucoup de couleurs à paramétrer…&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Avec 3 ou 4 clics, on arrive à quelque chose… ou pas ! (Notez les warnings…)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/04/10.png"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border:0;" title="10" alt="10" src="http://kazoumoulox.files.wordpress.com/2013/04/10_thumb.png?w=599&amp;#038;h=326" width="599" height="326" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;A bientôt !&lt;/p&gt;
&lt;br /&gt;  &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kazoumoulox.wordpress.com/1797/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kazoumoulox.wordpress.com/1797/" /&gt;&lt;/a&gt; &lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kazoumoulox.wordpress.com&amp;#038;blog=2355550&amp;#038;post=1797&amp;#038;subd=kazoumoulox&amp;#038;ref=&amp;#038;feed=1" width="1" height="1" /&gt;</content:encoded><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://kazoumoulox.wordpress.com/2013/04/18/sp-2013-color-palette-tool/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">1</slash:comments><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://2.gravatar.com/avatar/2936677cba6281757d94cbedbcd1a561?s=96&amp;d=identicon&amp;r=G" medium="image">
			<media:title type="html">kazoumoulox</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/04/01_thumb.png" medium="image">
			<media:title type="html">01</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/04/02_thumb.png" medium="image">
			<media:title type="html">02</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/04/03_thumb.png" medium="image">
			<media:title type="html">03</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/04/04_thumb.png" medium="image">
			<media:title type="html">04</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/04/05_thumb.png" medium="image">
			<media:title type="html">05</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/04/06_thumb.png" medium="image">
			<media:title type="html">06</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/04/07_thumb.png" medium="image">
			<media:title type="html">07</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/04/08_thumb.png" medium="image">
			<media:title type="html">08</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/04/09_thumb.png" medium="image">
			<media:title type="html">09</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/04/10_thumb.png" medium="image">
			<media:title type="html">10</media:title>
		</media:content></item><item><guid isPermaLink="false">http://paslatek.net/?p=972</guid><link>http://feedproxy.google.com/~r/PaslatekBlog/~3/5xkboeUensU/</link><a10:author><a10:name>Lionel Limozin</a10:name><a10:uri>http://feeds.feedburner.com/PaslatekBlog</a10:uri></a10:author><category>Perso</category><category>Mvp</category><category>SharePoint</category><category>TechNet</category><title>MVP du mois</title><description>Petit moment de “gloire” ! http://technet.microsoft.com/fr-fr/bb291006.aspx Non ce n’est pas l’employé du mois, mais un “remerciement” de Microsoft pour ma participation active sur les forums Technet. C’est sympa, surtout en terme de référencement ! Merci donc aux community manager de Technet !</description><pubDate>Wed, 17 Apr 2013 11:51:30 Z</pubDate><comments>http://paslatek.net/2013/04/perso/mvp-du-mois/#comments</comments><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Lionel</dc:creator><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/">&lt;p&gt;Petit moment de “gloire” ! &lt;img src='http://paslatek.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /&gt;  &lt;a href="http://technet.microsoft.com/fr-fr/bb291006.aspx"&gt;http://technet.microsoft.com/fr-fr/bb291006.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Non ce n’est pas l’employé du mois, mais un “remerciement” de Microsoft pour ma participation active sur les forums Technet. C’est sympa, surtout en terme de référencement ! Merci donc aux community manager de Technet !&lt;/p&gt;
</content:encoded><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://paslatek.net/2013/04/perso/mvp-du-mois/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">2</slash:comments><feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://paslatek.net/2013/04/perso/mvp-du-mois/</feedburner:origLink></item><item><guid isPermaLink="false">http://paslatek.net/?p=962</guid><link>http://feedproxy.google.com/~r/PaslatekBlog/~3/1jEhKLMcQbo/</link><a10:author><a10:name>Lionel Limozin</a10:name><a10:uri>http://feeds.feedburner.com/PaslatekBlog</a10:uri></a10:author><category>SharePoint</category><category>2013</category><category>APP</category><category>Conférence</category><category>ConfSharePoint</category><category>disney</category><category>france</category><category>géolocalisation</category><category>mobile</category><category>office 2013</category><category>Provider Hosted</category><title>Conf SharePoint 2013</title><description>L’agenda et la liste des sessions sont confirmés ! Je serais conférencier à la 1ere Conférence Française entièrement dédiée à SharePoint qui se déroulera au centre des congrès du « Disney’s Hôtel New-York » à Paris du 22 au 24 Mai 2013 ! &amp;#160; Cette conférence s’annonce très riche en découvertes, informations techniques et autres [...]</description><pubDate>Sun, 07 Apr 2013 08:28:43 Z</pubDate><comments>http://paslatek.net/2013/04/sharepoint/conf-sharepoint-2013/#comments</comments><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Lionel</dc:creator><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/">&lt;p&gt;&lt;img title="banniere2" style="border-top: 0px; border-right: 0px; border-bottom: 0px; margin-left: 0px; border-left: 0px; display: inline; margin-right: 0px" border="0" alt="banniere2" align="left" src="http://paslatek.net/wp-content/uploads/2013/04/banniere2.png" width="151" height="151" /&gt; L’agenda et la liste des sessions sont confirmés ! Je serais conférencier à la 1ere Conférence Française entièrement dédiée à SharePoint qui se déroulera au centre des congrès du « Disney’s Hôtel New-York » à Paris du 22 au 24 Mai 2013 !&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;Cette conférence s’annonce très riche en découvertes, informations techniques et autres retours d’expérience avec 4 parcours différents :&lt;/p&gt;
&lt;p&gt;· &lt;a href="http://www.confsharepoint.com/LaConf%C3%A9rence/Programme/Parcours1Usagesetretoursclients/tabid/115/Default.aspx" target="_blank"&gt;Usages et retours clients&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;· &lt;a href="http://www.confsharepoint.com/LaConf%C3%A9rence/Programme/Parcours2GouvernanceetStrat%C3%A9gie/tabid/116/Default.aspx" target="_blank"&gt;Gouvernance et stratégie&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;· &lt;a href="http://www.confsharepoint.com/LaConf%C3%A9rence/Programme/Parcours3Infrastructure/tabid/117/Default.aspx" target="_blank"&gt;Infrastructure&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;· &lt;a href="http://www.confsharepoint.com/LaConf%C3%A9rence/Programme/Parcours4D%C3%A9veloppement/tabid/118/Default.aspx" target="_blank"&gt;Développement&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;Au total, pas loin de 60 sessions reparties sur les 3 jours, vous pouvez &lt;a href="http://www.confsharepoint.com/LaConf%C3%A9rence/Agenda/tabid/91/Default.aspx" target="_blank"&gt;consulter l’agenda ici&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;Pour ma part je serais accompagné de &lt;a href="http://www.linkedin.com/pub/benoit-marc-bernardin/33/2b4/a62" target="_blank"&gt;Benoit Bernardin&lt;/a&gt; (l’un de mes « anciens » collègues de chez Bewise by AI3) sur la session « &lt;b&gt;Géolocalisation, Mobile et SharePoint 2013&lt;/b&gt; » planifiée Mercredi 22 à 14H50. Nous vous ferons découvrir qu’elle nouveautés apporte SharePoint 2013 sur la gestion des données de localisation ainsi que sur la prise en charge facilité des accès mobile. Pour plus de détail : &lt;a href="http://www.confsharepoint.com/LaConf%C3%A9rence/Programme/Parcours4D%C3%A9veloppement/tabid/118/Default.aspx#D10" target="_blank"&gt;cliquez ici&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;Et le lendemain j’aurais le plaisir d’animer une seconde session avec &lt;a href="http://ptitomtech.blogspot.fr/" target="_blank"&gt;Thomas Merly&lt;/a&gt; (là aussi un de mes « anciens » collègues de chez Bewise by AI3) sur la session « &lt;b&gt;Développez pour SharePoint 2013 sans intrusion&lt;/b&gt; » planifiée donc Jeudi 23 à 14H50. Cette fois ci nous vous ferons découvrir le développement d’APP pour SharePoint 2013 et en particulier l’intérêt que cela peut amener en mode « Provider Hosted » au sein du SI de votre entreprise. Pour plus de détail : &lt;a href="http://www.confsharepoint.com/LaConf%C3%A9rence/Programme/Parcours4D%C3%A9veloppement/tabid/118/Default.aspx#D14" target="_blank"&gt;cliquez ici&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;Enfin je vous rappelle que l’accès à cette conférence est payant et vous devez &lt;a href="http://www.confsharepoint.com/Inscrivezvous/tabid/92/Default.aspx" target="_blank"&gt;vous inscrire directement sur le site ici&lt;/a&gt;. Pour ceux d’entre vous qui m’aideront à promouvoir cet évènement (par exemple en relayant ce billet) j’ai la possibilité de vous obtenir un prix réduit donc n’hésitez pas à me le demander mais 1er arrivé, 1er servi et vous avez jusqu’au 27 Avril !&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;Je vous donne donc rdv très bientôt pour faire découvrir SharePoint à Mickey et tous ses amis &lt;img src='http://paslatek.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /&gt; &lt;/p&gt;
</content:encoded><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://paslatek.net/2013/04/sharepoint/conf-sharepoint-2013/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://paslatek.net/2013/04/sharepoint/conf-sharepoint-2013/</feedburner:origLink></item><item><guid isPermaLink="false">http://paslatek.net/?p=958</guid><link>http://feedproxy.google.com/~r/PaslatekBlog/~3/UyykOo2xp64/</link><a10:author><a10:name>Lionel Limozin</a10:name><a10:uri>http://feeds.feedburner.com/PaslatekBlog</a10:uri></a10:author><category>SharePoint</category><category>10 comandement</category><category>2013</category><category>session</category><category>TechDays</category><category>top ten</category><category>top10</category><category>Webcast</category><title>WebCast les 10 commandements de SharePoint 2013</title><description>Le WebCast de la session à laquelle j&amp;#8217;ai participé est disponible ici  Ma partie est de la min 30 à 38, mais bien sûr je vous invite à visionner l&amp;#8217;intégralité de la session ! &amp;#160; &amp;#160;</description><pubDate>Thu, 21 Mar 2013 14:21:04 Z</pubDate><comments>http://paslatek.net/2013/03/sharepoint/webcast-les-10-commandements-de-sharepoint-2013/#comments</comments><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Lionel</dc:creator><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/">&lt;p&gt;Le WebCast de la session à laquelle j&amp;rsquo;ai participé &lt;a href="http://www.microsoft.com/france/mstechdays/programmes/2013/fiche-session.aspx?ID=8d85ec92-3d3d-48c4-b3fe-a92f14b31517" target="_blank"&gt;est disponible ici &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Ma partie est de la min 30 à 38, mais bien sûr je vous invite à visionner l&amp;rsquo;intégralité de la session !&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
</content:encoded><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://paslatek.net/2013/03/sharepoint/webcast-les-10-commandements-de-sharepoint-2013/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://paslatek.net/2013/03/sharepoint/webcast-les-10-commandements-de-sharepoint-2013/</feedburner:origLink></item><item><guid isPermaLink="false">https://kazoumoulox.wordpress.com/?p=1773</guid><link>http://kazoumoulox.wordpress.com/2013/03/04/vs-sp-parametres-remplacables/</link><a10:author><a10:name>Florent Cazenave</a10:name><a10:uri>http://kazoumoulox.wordpress.com/feed</a10:uri></a10:author><category>Développement SharePoint</category><category>MOSS 2007</category><category>Outils</category><category>Package</category><category>SharePoint</category><category>SharePoint 2010</category><category>SharePoint 2010 Server</category><category>SharePoint 2013</category><category>SharePoint Foundation 2010</category><category>Visual Studio 2012</category><category>WSS 3.0</category><category>Visual Studio 2012; Outils; SharePoint; Paramètres remplaçables</category><title>[Visual Studio &amp; SharePoint]–Paramètres remplaçables</title><description>Bonjour à tous. Si vous développez des projets SharePoint 2010 ou 2013 avec Visual Studio 2010 ou 2012, vous devez connaitre les paramètres remplaçable. En effet, Visual Studio vous permet d’utiliser des sortes de “Pragmas&amp;#8221; remplacés à la compilation par Visual Studio lui-même. Vous reconnaitrez ces paramètres remplaçables rapidement car ils sont entourés par des [&amp;#8230;]&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kazoumoulox.wordpress.com&amp;#038;blog=2355550&amp;#038;post=1773&amp;#038;subd=kazoumoulox&amp;#038;ref=&amp;#038;feed=1" width="1" height="1" /&gt;</description><pubDate>Mon, 04 Mar 2013 08:37:11 Z</pubDate><comments>http://kazoumoulox.wordpress.com/2013/03/04/vs-sp-parametres-remplacables/#comments</comments><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Florent Cazenave</dc:creator><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/">&lt;p&gt;Bonjour à tous.&lt;/p&gt;
&lt;p&gt;Si vous développez des projets SharePoint 2010 ou 2013 avec Visual Studio 2010 ou 2012, vous devez connaitre les paramètres remplaçable. En effet, Visual Studio vous permet d’utiliser des sortes de “Pragmas&amp;#8221; remplacés à la compilation par Visual Studio lui-même.&lt;/p&gt;
&lt;p&gt;Vous reconnaitrez ces paramètres remplaçables rapidement car ils sont entourés par des “$”, du type : $SharePoint.Project.FileName$&lt;/p&gt;
&lt;p&gt;Vous retrouverez ces paramètres par exemple dans les pages d’application (Applications Pages), dans l’entête de chacune des pages :&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&amp;lt;%@ Assembly Name=&amp;#8221;$SharePoint.Project.AssemblyFullName$&amp;#8221; %&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;span style="background-color:#ffffff;"&gt;Lorsque on lancera la compilation du projet dans Visual Studio, ces paramètres seront remplacés par :&lt;/span&gt;&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&amp;lt;%@ Assembly Name=&amp;#8221;MonProjet.SharePoint, Version=X.X.X.X, Culture=neutral, PublicKeyToken=XXXXXXXXXXXX&amp;#8221; %&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Voici le tableau des paramètres remplaçables que vous pourrez utiliser :&lt;/p&gt;
&lt;table width="600" border="1" cellspacing="0" cellpadding="2"&gt;
&lt;tbody&gt;
&lt;tr style="color:white;background-color:#0094ff;"&gt;
&lt;td valign="top" width="359"&gt;Nom du paramètre&lt;/td&gt;
&lt;td valign="top" width="242"&gt;Description&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="359"&gt;$SharePoint.Package.Name$&lt;/td&gt;
&lt;td valign="top" width="242"&gt;Nom du package&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="359"&gt;$SharePoint.Package.FileName$&lt;/td&gt;
&lt;td valign="top" width="242"&gt;Nom du fichier de définition du package&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="359"&gt;$SharePoint.Package.FileNameWithoutExtension$&lt;/td&gt;
&lt;td valign="top" width="242"&gt;Nom sans extension du fichier de définition du package&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="359"&gt;$SharePoint.Package.Id$&lt;/td&gt;
&lt;td valign="top" width="242"&gt;ID unique SharePoint du package&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="359"&gt;$SharePoint.Feature.FileName$&lt;/td&gt;
&lt;td valign="top" width="242"&gt;Nom du fichier de définition d’une fonctionnalité&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="359"&gt;$SharePoint.Feature.FileNameWithoutExtension$&lt;/td&gt;
&lt;td valign="top" width="242"&gt;Nom du fichier de définition d’une fonctionnalité sans l&amp;#8217;extension du nom de fichier&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="359"&gt;$SharePoint.Feature.Id$&lt;/td&gt;
&lt;td valign="top" width="242"&gt;ID unique SharePoint de la fonctionnalité&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="359"&gt;$SharePoint.Feature.DeploymentPath$&lt;/td&gt;
&lt;td valign="top" width="242"&gt;Nom du dossier de la fonctionnalité dans le package&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="359"&gt;$SharePoint.Project.FileName$&lt;/td&gt;
&lt;td valign="top" width="242"&gt;Nom du projet&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="359"&gt;$SharePoint.Project.FileNameWithoutExtension$&lt;/td&gt;
&lt;td valign="top" width="242"&gt;Nom du projet sans l&amp;#8217;extension&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="359"&gt;$SharePoint.Project.AssemblyFullName$&lt;/td&gt;
&lt;td valign="top" width="242"&gt;Nom complet de l&amp;#8217;assembly du projet&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="359"&gt;$SharePoint.Project.AssemblyFileName$&lt;/td&gt;
&lt;td valign="top" width="242"&gt;Nom de l&amp;#8217;assembly du projet&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="359"&gt;$SharePoint.Project.AssemblyFileNameWithoutExtension$&lt;/td&gt;
&lt;td valign="top" width="242"&gt;Nom de l&amp;#8217;assembly du projet sans l&amp;#8217;extension&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="359"&gt;$SharePoint.Project.AssemblyPublicKeyToken$&lt;/td&gt;
&lt;td valign="top" width="242"&gt;PublicKeyToken de l’assembly&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="359"&gt;$SharePoint.ProjectItem.Name$&lt;/td&gt;
&lt;td valign="top" width="242"&gt;Nom de l&amp;#8217;élément de projet&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="359"&gt;$SharePoint.Type.[GUID].AssemblyQualifiedName$&lt;/td&gt;
&lt;td valign="top" width="242"&gt;Nom qualifié de l&amp;#8217;assembly&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="359"&gt;$SharePoint.Type.[GUID].FullName$&lt;/td&gt;
&lt;td valign="top" width="242"&gt;Nom complet de l’assembly&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Microsoft précise également que l’on peut utiliser ces paramètres remplaçables dans les fichiers de type :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;XML&lt;/li&gt;
&lt;li&gt;ASPX&lt;/li&gt;
&lt;li&gt;ASCX&lt;/li&gt;
&lt;li&gt;WebPart&lt;/li&gt;
&lt;li&gt;DWP&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Il est possible d’étendre ces possibilités en modifiant le fichier : Microsoft.VisualStudio.SharePoint.targets qui se trouve dans : …\&amp;lt;program files&amp;gt;\MSBuild\Microsoft\VisualStudio\v10.0\SharePointTools&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/03/01.png"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border-width:0;" title="01" alt="01" src="http://kazoumoulox.files.wordpress.com/2013/03/01_thumb.png?w=497&amp;#038;h=316" width="497" height="316" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;On l’édite avec NotePad par exemple :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/03/02.png"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border-width:0;" title="02" alt="02" src="http://kazoumoulox.files.wordpress.com/2013/03/02_thumb.png?w=550&amp;#038;h=336" width="550" height="336" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;On ajoute des extensions de fichier supportées si besoin. &lt;strong&gt;Par contre, si on change de machine, on prendra cette configuration !!! Donc attention, ces paramètres ne seront plus remplacés.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;En résumé, ces paramètres sont vraiment très pratiques, et on les utilise très souvent (Visual Studio en utilise lui aussi fréquemment lorsque l’on créé une page d’application par exemple).&lt;/p&gt;
&lt;p&gt;Pensez-y !&lt;/p&gt;
&lt;br /&gt;  &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kazoumoulox.wordpress.com/1773/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kazoumoulox.wordpress.com/1773/" /&gt;&lt;/a&gt; &lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kazoumoulox.wordpress.com&amp;#038;blog=2355550&amp;#038;post=1773&amp;#038;subd=kazoumoulox&amp;#038;ref=&amp;#038;feed=1" width="1" height="1" /&gt;</content:encoded><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://kazoumoulox.wordpress.com/2013/03/04/vs-sp-parametres-remplacables/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://2.gravatar.com/avatar/2936677cba6281757d94cbedbcd1a561?s=96&amp;d=identicon&amp;r=G" medium="image">
			<media:title type="html">kazoumoulox</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/03/01_thumb.png" medium="image">
			<media:title type="html">01</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/03/02_thumb.png" medium="image">
			<media:title type="html">02</media:title>
		</media:content></item><item><guid isPermaLink="false">https://kazoumoulox.wordpress.com/?p=1762</guid><link>http://kazoumoulox.wordpress.com/2013/02/28/vsto-outlook-2013/</link><a10:author><a10:name>Florent Cazenave</a10:name><a10:uri>http://kazoumoulox.wordpress.com/feed</a10:uri></a10:author><category>Office 2013</category><category>Outlook 2013</category><category>Visual Studio 2012</category><category>VSTO</category><category>WIX</category><category>office</category><category>Outlook</category><title>[VSTO]–Mon premier VSTO pour Outlook 2013</title><description>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 [&amp;#8230;]&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kazoumoulox.wordpress.com&amp;#038;blog=2355550&amp;#038;post=1762&amp;#038;subd=kazoumoulox&amp;#038;ref=&amp;#038;feed=1" width="1" height="1" /&gt;</description><pubDate>Thu, 28 Feb 2013 10:21:30 Z</pubDate><comments>http://kazoumoulox.wordpress.com/2013/02/28/vsto-outlook-2013/#comments</comments><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Florent Cazenave</dc:creator><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/">&lt;p&gt;Bonjour à tous.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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 :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Absences (RTT, congés) : Rouge&lt;/li&gt;
&lt;li&gt;Production : Orange&lt;/li&gt;
&lt;li&gt;Formation : Mauve&lt;/li&gt;
&lt;li&gt;Avant-Vente : Vert&lt;/li&gt;
&lt;li&gt;Intercontrat (Le moins possible !!!) : Jaune&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Je ne vais pas personnaliser le ruban dans cet exemple… peut être plus tard !&lt;/p&gt;
&lt;h2&gt;1/ La plateforme de développement&lt;/h2&gt;
&lt;p&gt;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 :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Windows 8 Enterprise x64 en anglais&lt;/li&gt;
&lt;li&gt;Office Professional Plus 2013 x86 en anglais&lt;/li&gt;
&lt;li&gt;Visual Studio 2012 Ultimate en anglais&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;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 : &lt;a title="http://msdn.microsoft.com/en-us/office/apps/fp123627.aspx" href="http://msdn.microsoft.com/en-us/office/apps/fp123627.aspx"&gt;http://msdn.microsoft.com/en-us/office/apps/fp123627.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/02/01.png"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border-width:0;" title="01" alt="01" src="http://kazoumoulox.files.wordpress.com/2013/02/01_thumb.png?w=523&amp;#038;h=168" width="523" height="168" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;h2&gt;2/ Création du projet Visual Studio&lt;/h2&gt;
&lt;p&gt;Vous pourrez ensuite lancer Visual Studio 2012 :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/02/02.png"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border-width:0;" title="02" alt="02" src="http://kazoumoulox.files.wordpress.com/2013/02/02_thumb.png?w=449&amp;#038;h=275" width="449" height="275" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Créez un nouveau projet en faisant : File &amp;gt; New &amp;gt; 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… :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/02/03.png"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border-width:0;" title="03" alt="03" src="http://kazoumoulox.files.wordpress.com/2013/02/03_thumb.png?w=549&amp;#038;h=381" width="549" height="381" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;Le projet est créé dans l’explorateur de solution :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/02/04.png"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border-width:0;" title="04" alt="04" src="http://kazoumoulox.files.wordpress.com/2013/02/04_thumb.png?w=463&amp;#038;h=358" width="463" height="358" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;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).&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/02/05.png"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border-width:0;" title="05" alt="05" src="http://kazoumoulox.files.wordpress.com/2013/02/05_thumb.png?w=517&amp;#038;h=337" width="517" height="337" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;3 / Le code&lt;/h2&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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 :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Un nom : string&lt;/li&gt;
&lt;li&gt;Une couleur : Microsoft.Office.Interop.Outlook.OlCategoryColor [Option]&lt;/li&gt;
&lt;li&gt;Un raccourci clavier : Microsoft.Office.Interop.Outlook.OlCategoryShortcutKey [Option]&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ce qui donne :&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Application.Session.Categories.Add(&amp;#8220;Absences&amp;#8221;, Microsoft.Office.Interop.Outlook.OlCategoryColor.olCategoryColorRed, Microsoft.Office.Interop.Outlook.OlCategoryShortcutKey.olCategoryShortcutKeyCtrlF2);&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Nous allons répéter cela pour toutes les catégories à ajouter :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/02/06.png"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border-width:0;" title="06" alt="06" src="http://kazoumoulox.files.wordpress.com/2013/02/06_thumb.png?w=600&amp;#038;h=329" width="600" height="329" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;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 :&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;private bool CategoryExists(string categoryName)&lt;br /&gt;
{&lt;br /&gt;
foreach (Microsoft.Office.Interop.Outlook.Category item in Application.Session.Categories)&lt;br /&gt;
{&lt;br /&gt;
if (item.Name == categoryName)&lt;br /&gt;
return true;&lt;br /&gt;
}&lt;br /&gt;
return false;&lt;br /&gt;
}&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;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.)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/02/07.png"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border-width:0;" title="07" alt="07" src="http://kazoumoulox.files.wordpress.com/2013/02/07_thumb.png?w=600&amp;#038;h=362" width="600" height="362" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Le code étant ok, nous allons passer au debug.&lt;/p&gt;
&lt;h2&gt;3/ Debug&lt;/h2&gt;
&lt;p&gt;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 :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/02/08.png"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border-width:0;" title="08" alt="08" src="http://kazoumoulox.files.wordpress.com/2013/02/08_thumb.png?w=559&amp;#038;h=358" width="559" height="358" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Nikel… Mais il manque quand même quelque chose… un projet pour déployer tout ça sur le poste des collègues !&lt;/p&gt;
&lt;h2&gt;4/ Projet de déploiement&lt;/h2&gt;
&lt;p&gt;Pour créer un projet de déploiement, avec Visual Studio 2012 vous pouvez utiliser InstallShield etc.&lt;/p&gt;
&lt;p&gt;Mais dans mon cas, je voulais tester WIX depuis un moment… Vous pourrez télécharger le modèle de projet ici : &lt;a title="http://wixtoolset.org/" href="http://wixtoolset.org/"&gt;http://wixtoolset.org/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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 &amp;gt; New Project… :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/02/09.png"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border:0;" title="09" alt="09" src="http://kazoumoulox.files.wordpress.com/2013/02/09_thumb.png?w=486&amp;#038;h=390" width="486" height="390" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;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 :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/02/10.png"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border:0;" title="10" alt="10" src="http://kazoumoulox.files.wordpress.com/2013/02/10_thumb.png?w=571&amp;#038;h=396" width="571" height="396" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Le nouveau projet est créé, il est composé principalement d’un fichier “Product.wxs” qui est en fait un fichier XML :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/02/11.png"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border:0;" title="11" alt="11" src="http://kazoumoulox.files.wordpress.com/2013/02/11_thumb.png?w=600&amp;#038;h=329" width="600" height="329" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;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 : &lt;a title="http://www.add-in-express.com/creating-addins-blog/2012/11/13/wix-installation-vsto-office-addin/" href="http://www.add-in-express.com/creating-addins-blog/2012/11/13/wix-installation-vsto-office-addin/"&gt;http://www.add-in-express.com/creating-addins-blog/2012/11/13/wix-installation-vsto-office-addin/&lt;/a&gt; pour décrire le processus de déploiement.&lt;/p&gt;
&lt;p&gt;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 :&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&amp;lt;Product Id=&amp;#8221;E7F42E5E-7474-4E27-909B-D1E4A8A1B028&amp;#8243; Name=&amp;#8221;Demo.Outlook.Addin&amp;#8221; Language=&amp;#8221;1036&amp;#8243; Version=&amp;#8221;1.0.0.0&amp;#8243; Manufacturer=&amp;#8221;Neos-SDI&amp;#8221; UpgradeCode=&amp;#8221;3786b23e-f5d5-4119-b0ef-0680416f6fae&amp;#8221;&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Puis j’ai remplacé le MajorUpgrade par (en Français) :&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&amp;lt;MajorUpgrade DowngradeErrorMessage=&amp;#8221;Une version plus récente de [ProductName] est déjà installée.&amp;#8221; /&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;em&gt;NB : Toutes les sections suivantes seront ajoutées dans &amp;lt;Product&amp;gt;[…]&amp;lt;/Product&amp;gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Ensuite, j’ai ajouté un “Property” &amp;amp; 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 :&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&amp;lt;Property Id=&amp;#8221;VSTORUNTIMEREDIST&amp;#8221;&amp;gt;&lt;br /&gt;
&amp;lt;RegistrySearch&lt;br /&gt;
Id=&amp;#8221;VSTORuntimeRedist&amp;#8221;&lt;br /&gt;
Root=&amp;#8221;HKLM&amp;#8221;&lt;br /&gt;
Key=&amp;#8221;SOFTWARE\Microsoft\VSTO Runtime Setup\v4R&amp;#8221;&lt;br /&gt;
Name=&amp;#8221;Version&amp;#8221;&lt;br /&gt;
Type=&amp;#8221;raw&amp;#8221; /&amp;gt;&lt;br /&gt;
&amp;lt;/Property&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;Condition Message=&amp;#8221;The Visual Studio 2010 Tools for Office Runtime is not installed. Please download and install from &lt;a href="http://www.microsoft.com/en-us/download/details.aspx?id=20479.&amp;quot;"&gt;http://www.microsoft.com/en-us/download/details.aspx?id=20479.&amp;#8221;&lt;/a&gt;&amp;gt;&lt;br /&gt;
&amp;lt;![CDATA[Installed OR VSTORUNTIMEREDIST&amp;gt;="10.0.30319"]]&amp;gt;&lt;br /&gt;
&amp;lt;/Condition&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;span style="background-color:#ffffff;"&gt;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.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;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” :&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&amp;lt;PropertyRef Id=&amp;#8221;NETFRAMEWORK40FULL&amp;#8221;/&amp;gt;&lt;br /&gt;
&amp;lt;Condition Message=&amp;#8221;This application requires .NET Framework 4.0.&amp;#8221;&amp;gt;&lt;br /&gt;
&amp;lt;![CDATA[Installed OR NETFRAMEWORK40FULL]]&amp;gt;&lt;br /&gt;
&amp;lt;/Condition&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Nous allons maintenant nous occuper des composants à déployer. Pour cela nous allons utiliser des “&amp;lt;Component&amp;gt;”, “&amp;lt;ComponentGroup&amp;gt;” et des “&amp;lt;Feature&amp;gt;”.&lt;/p&gt;
&lt;p&gt;En dehors de la balise &amp;lt;Product&amp;gt; nous allons déclarer les composants à déployer puis les références avec une &amp;lt;Feature&amp;gt; dans &amp;lt;Product&amp;gt;.&lt;/p&gt;
&lt;p&gt;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 :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/02/12.png"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border:0;" title="12" alt="12" src="http://kazoumoulox.files.wordpress.com/2013/02/12_thumb.png?w=576&amp;#038;h=378" width="576" height="378" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;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 &amp;lt;/Product&amp;gt;) :&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&amp;lt;Fragment&amp;gt;&lt;br /&gt;
&amp;lt;ComponentGroup Id=&amp;#8221;ProductComponents&amp;#8221; Directory=&amp;#8221;INSTALLFOLDER&amp;#8221;&amp;gt;&lt;br /&gt;
&amp;lt;Component Id=&amp;#8221;OutlookAddin1_vsto_Component&amp;#8221;&amp;gt;&lt;br /&gt;
&amp;lt;File Id=&amp;#8221;OutlookAddin1_vsto&amp;#8221; KeyPath=&amp;#8221;yes&amp;#8221; Name=&amp;#8221;Demo.Outlook.Addin.vsto&amp;#8221; Source=&amp;#8221;$(var.AddinFiles)&amp;#8221; /&amp;gt;&lt;br /&gt;
&amp;lt;/Component&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;Component Id=&amp;#8221;OutlookAddin1_dll_manifest_Component&amp;#8221;&amp;gt;&lt;br /&gt;
&amp;lt;File Id=&amp;#8221;OutlookAddin1_dll_manifest&amp;#8221; KeyPath=&amp;#8221;yes&amp;#8221; Name=&amp;#8221;Demo.Outlook.Addin.dll.manifest&amp;#8221; Source=&amp;#8221;$(var.AddinFiles)&amp;#8221; /&amp;gt;&lt;br /&gt;
&amp;lt;/Component&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;Component Id=&amp;#8221;MSOfficeToolsCommon_dll_Component&amp;#8221;&amp;gt;&lt;br /&gt;
&amp;lt;File Id=&amp;#8221;MSOfficeToolsCommon_dll&amp;#8221; KeyPath=&amp;#8221;yes&amp;#8221; Name=&amp;#8221;Microsoft.Office.Tools.Common.v4.0.Utilities.dll&amp;#8221; Source=&amp;#8221;$(var.AddinFiles)&amp;#8221; /&amp;gt;&lt;br /&gt;
&amp;lt;/Component&amp;gt;&lt;br /&gt;
&amp;lt;Component Id=&amp;#8221;MSOfficeToolsOutlook_dll_Component&amp;#8221;&amp;gt;&lt;br /&gt;
&amp;lt;File Id=&amp;#8221;MSOfficeToolsOutlook_dll&amp;#8221; KeyPath=&amp;#8221;yes&amp;#8221; Name=&amp;#8221;Microsoft.Office.Tools.Outlook.v4.0.Utilities.dll&amp;#8221; Source=&amp;#8221;$(var.AddinFiles)&amp;#8221; /&amp;gt;&lt;br /&gt;
&amp;lt;/Component&amp;gt;&lt;br /&gt;
&amp;lt;Component Id=&amp;#8221;OutlookAddIn1_dll_Component&amp;#8221; &amp;gt;&lt;br /&gt;
&amp;lt;File Id=&amp;#8221;OutlookAddIn1_dll&amp;#8221; KeyPath=&amp;#8221;yes&amp;#8221; Name=&amp;#8221;Demo.Outlook.Addin.dll&amp;#8221; Source=&amp;#8221;$(var.AddinFiles)&amp;#8221; /&amp;gt;&lt;br /&gt;
&amp;lt;/Component&amp;gt;&lt;br /&gt;
&amp;lt;/ComponentGroup&amp;gt;&lt;br /&gt;
&amp;lt;/Fragment&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Nous référençons ici le fichier *.vsto produit avec (Demo.Outlook.Addin.vsto) :&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&amp;lt;Component Id=&amp;#8221;OutlookAddin1_vsto_Component&amp;#8221;&amp;gt;&lt;br /&gt;
&amp;lt;File Id=&amp;#8221;OutlookAddin1_vsto&amp;#8221; KeyPath=&amp;#8221;yes&amp;#8221;      Name=&amp;#8221;Demo.Outlook.Addin.vsto&amp;#8221; Source=&amp;#8221;$(var.AddinFiles)&amp;#8221; /&amp;gt;&lt;br /&gt;
&amp;lt;/Component&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Puis le manifest produit (Demo.Outlook.Addin.dll.manifest) :&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&amp;lt;Component Id=&amp;#8221;OutlookAddin1_dll_manifest_Component&amp;#8221;&amp;gt;&lt;br /&gt;
&amp;lt;File Id=&amp;#8221;OutlookAddin1_dll_manifest&amp;#8221; KeyPath=&amp;#8221;yes&amp;#8221; Name=&amp;#8221;Demo.Outlook.Addin.dll.manifest&amp;#8221; Source=&amp;#8221;$(var.AddinFiles)&amp;#8221; /&amp;gt;&lt;br /&gt;
&amp;lt;/Component&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Puis les DLL pour les VSTO (Common + Outlook) :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Microsoft.Office.Tools.Common.v4.0.Utilities.dll&lt;/li&gt;
&lt;li&gt;Microsoft.Office.Tools.Outlook.v4.0.Utilities.dll&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;&lt;p&gt;&amp;lt;Component Id=&amp;#8221;MSOfficeToolsCommon_dll_Component&amp;#8221;&amp;gt;&lt;br /&gt;
&amp;lt;File Id=&amp;#8221;MSOfficeToolsCommon_dll&amp;#8221; KeyPath=&amp;#8221;yes&amp;#8221; Name=&amp;#8221;Microsoft.Office.Tools.Common.v4.0.Utilities.dll&amp;#8221; Source=&amp;#8221;$(var.AddinFiles)&amp;#8221; /&amp;gt;&lt;br /&gt;
&amp;lt;/Component&amp;gt;&lt;br /&gt;
&amp;lt;Component Id=&amp;#8221;MSOfficeToolsOutlook_dll_Component&amp;#8221;&amp;gt;&lt;br /&gt;
&amp;lt;File Id=&amp;#8221;MSOfficeToolsOutlook_dll&amp;#8221; KeyPath=&amp;#8221;yes&amp;#8221; Name=&amp;#8221;Microsoft.Office.Tools.Outlook.v4.0.Utilities.dll&amp;#8221; Source=&amp;#8221;$(var.AddinFiles)&amp;#8221; /&amp;gt;&lt;br /&gt;
&amp;lt;/Component&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Et enfin la DLL du projet (Demo.Outlook.Addin.dll) :&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&amp;lt;Component Id=&amp;#8221;OutlookAddIn1_dll_Component&amp;#8221; &amp;gt;&lt;br /&gt;
&amp;lt;File Id=&amp;#8221;OutlookAddIn1_dll&amp;#8221; KeyPath=&amp;#8221;yes&amp;#8221; Name=&amp;#8221;Demo.Outlook.Addin.dll&amp;#8221; Source=&amp;#8221;$(var.AddinFiles)&amp;#8221; /&amp;gt;&lt;br /&gt;
&amp;lt;/Component&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Pour que WIX prenne en compte ces demandes d’installation des vsto, dll et autres manifests, il faut lui indiquer dans la balise &amp;lt;Product&amp;gt;&amp;lt;/Product&amp;gt; qu’il doit prendre en compte ces Components. Pour cela on ajoute une balise Feature dans &amp;lt;Product&amp;gt;&amp;lt;/Product&amp;gt; :&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&amp;lt;Feature Id=&amp;#8221;ProductFeature&amp;#8221; Title=&amp;#8221;Demo.Outlook.Addin.Setup&amp;#8221; Level=&amp;#8221;1&amp;#8243;&amp;gt;&lt;br /&gt;
&amp;lt;ComponentGroupRef Id=&amp;#8221;ProductComponents&amp;#8221; /&amp;gt;&lt;br /&gt;
&amp;lt;/Feature&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Il se peut que la balise apparaisse déjà et soit déjà ok…&lt;/p&gt;
&lt;p&gt;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 :&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&amp;lt;Fragment&amp;gt;&lt;br /&gt;
&amp;lt;Directory Id=&amp;#8221;TARGETDIR&amp;#8221; Name=&amp;#8221;SourceDir&amp;#8221;&amp;gt;&lt;br /&gt;
&amp;lt;Directory Id=&amp;#8221;ProgramFilesFolder&amp;#8221;&amp;gt;&lt;br /&gt;
&amp;lt;Directory Id=&amp;#8221;NeosFolder&amp;#8221; Name=&amp;#8221;Neos&amp;#8221;&amp;gt;&lt;br /&gt;
&amp;lt;Directory Id=&amp;#8221;INSTALLFOLDER&amp;#8221; Name=&amp;#8221;Planning Outlook Add-in&amp;#8221; /&amp;gt;&lt;br /&gt;
&amp;lt;Component Id=&amp;#8221;Registry_FriendlyName&amp;#8221;&amp;gt;&lt;br /&gt;
&amp;lt;RegistryValue Id=&amp;#8221;RegKey_FriendlyName&amp;#8221; Root=&amp;#8221;HKCU&amp;#8221; Key=&amp;#8221;Software\Microsoft\Office\Outlook\AddIns\Demo.Outlook.Addin&amp;#8221; Name=&amp;#8221;FriendlyName&amp;#8221; Value=&amp;#8221;Demo.Outlook.Addin Add-in for Outlook&amp;#8221; Type=&amp;#8221;string&amp;#8221; KeyPath=&amp;#8221;yes&amp;#8221; /&amp;gt;&lt;br /&gt;
&amp;lt;/Component&amp;gt;&lt;br /&gt;
&amp;lt;Component Id=&amp;#8221;Registry_Description&amp;#8221;&amp;gt;&lt;br /&gt;
&amp;lt;RegistryValue Id=&amp;#8221;RegKey_Description&amp;#8221; Root=&amp;#8221;HKCU&amp;#8221; Key=&amp;#8221;Software\Microsoft\Office\Outlook\AddIns\Demo.Outlook.Addin&amp;#8221; Name=&amp;#8221;Description&amp;#8221; Value=&amp;#8221;Demo.Outlook.Addin Add-in for Outlook to manage Categories in Calendars and Inbox.&amp;#8221; Type=&amp;#8221;string&amp;#8221; KeyPath=&amp;#8221;yes&amp;#8221; /&amp;gt;&lt;br /&gt;
&amp;lt;/Component&amp;gt;&lt;br /&gt;
&amp;lt;Component Id=&amp;#8221;Registry_Manifest&amp;#8221;&amp;gt;&lt;br /&gt;
&amp;lt;RegistryValue Id=&amp;#8221;RegKey_Manifest&amp;#8221; Root=&amp;#8221;HKCU&amp;#8221; Key=&amp;#8221;Software\Microsoft\Office\Outlook\AddIns\Demo.Outlook.Addin&amp;#8221; Name=&amp;#8221;Manifest&amp;#8221; Value=&amp;#8221;[INSTALLFOLDER]Demo.Outlook.Addin.vsto|vstolocal&amp;#8221; Type=&amp;#8221;string&amp;#8221; KeyPath=&amp;#8221;yes&amp;#8221; /&amp;gt;&lt;br /&gt;
&amp;lt;/Component&amp;gt;&lt;br /&gt;
&amp;lt;Component Id=&amp;#8221;Registry_LoadBehavior&amp;#8221;&amp;gt;&lt;br /&gt;
&amp;lt;RegistryValue Id=&amp;#8221;RegKey_LoadBehavior&amp;#8221; Root=&amp;#8221;HKCU&amp;#8221; Key=&amp;#8221;Software\Microsoft\Office\Outlook\AddIns\Demo.Outlook.Addin&amp;#8221; Name=&amp;#8221;LoadBehavior&amp;#8221; Value=&amp;#8221;3&amp;#8243; Type=&amp;#8221;integer&amp;#8221; KeyPath=&amp;#8221;yes&amp;#8221; /&amp;gt;&lt;br /&gt;
&amp;lt;/Component&amp;gt;&lt;br /&gt;
&amp;lt;/Directory&amp;gt;&lt;br /&gt;
&amp;lt;/Directory&amp;gt;&lt;br /&gt;
&amp;lt;/Directory&amp;gt;&lt;br /&gt;
&amp;lt;/Fragment&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;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 :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;FriendlyName = Demo.Outlook.Addin Add-in for Outlook&lt;/li&gt;
&lt;li&gt;Description = Demo.Outlook.Addin Add-in for Outlook to manage Categories in Calendars and Inbox.&lt;/li&gt;
&lt;li&gt;Manifest = =[INSTALLFOLDER]Demo.Outlook.Addin.vsto|vstolocal&lt;/li&gt;
&lt;li&gt;LoadBehavior = 3&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Il faut ensuite référencer ces components dans la &amp;lt;Feature&amp;gt; utilisée précédemment, ce qui donne :&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&amp;lt;Feature Id=&amp;#8221;ProductFeature&amp;#8221; Title=&amp;#8221;Neos.Planning Add-in for Outlook&amp;#8221; Level=&amp;#8221;1&amp;#8243;&amp;gt;&lt;br /&gt;
&amp;lt;ComponentGroupRef Id=&amp;#8221;ProductComponents&amp;#8221; /&amp;gt;&lt;br /&gt;
&amp;lt;ComponentRef Id=&amp;#8221;Registry_FriendlyName&amp;#8221; /&amp;gt;&lt;br /&gt;
&amp;lt;ComponentRef Id=&amp;#8221;Registry_Description&amp;#8221; /&amp;gt;&lt;br /&gt;
&amp;lt;ComponentRef Id=&amp;#8221;Registry_Manifest&amp;#8221; /&amp;gt;&lt;br /&gt;
&amp;lt;ComponentRef Id=&amp;#8221;Registry_LoadBehavior&amp;#8221; /&amp;gt;&lt;br /&gt;
&amp;lt;/Feature&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Dernière étape, ajouter des composants utiles à WIX pour le manifest de licence produit (EULA.rtf) et à préciser le type d’interface à utiliser :&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&amp;lt;UIRef Id=&amp;#8221;WixUI_Minimal&amp;#8221; /&amp;gt;&lt;br /&gt;
&amp;lt;WixVariable Id=&amp;#8221;WixUILicenseRtf&amp;#8221; Value=&amp;#8221;EULA.rtf&amp;#8221; /&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Ce fichier EULA.rtf doit être ajouté à la solution (WIX en fournit un de base sur leur site) :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/02/13.png"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border:0;" title="13" alt="13" src="http://kazoumoulox.files.wordpress.com/2013/02/13_thumb.png?w=332&amp;#038;h=331" width="332" height="331" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Si vous compilez dès à présent. Vous obtiendrez une erreur :&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Undefined preprocessor variable &amp;#8216;$(var.AddinFiles)&amp;#8217;.&lt;br /&gt;
&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/02/14.png"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border:0;" title="14" alt="14" src="http://kazoumoulox.files.wordpress.com/2013/02/14_thumb.png?w=600&amp;#038;h=329" width="600" height="329" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;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 :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/02/15.png"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border:0;" title="15" alt="15" src="http://kazoumoulox.files.wordpress.com/2013/02/15_thumb.png?w=312&amp;#038;h=387" width="312" height="387" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Dans la section “Build” nous allons déclarer une “preprocessor variable” (il vous faudra modifier le nom du projet en gras ici) :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AddinFiles=..\&lt;strong&gt;Demo.Outlook.Addin&lt;/strong&gt;\bin\$(Configuration)\&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/02/16.png"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border:0;" title="16" alt="16" src="http://kazoumoulox.files.wordpress.com/2013/02/16_thumb.png?w=522&amp;#038;h=418" width="522" height="418" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;On sauvegarde et on compile la solution.&lt;/p&gt;
&lt;p&gt;De nouvelles erreurs apparaissent :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/02/17.png"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border:0;" title="17" alt="17" src="http://kazoumoulox.files.wordpress.com/2013/02/17_thumb.png?w=600&amp;#038;h=151" width="600" height="151" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;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” :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/02/18.png"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border:0;" title="18" alt="18" src="http://kazoumoulox.files.wordpress.com/2013/02/18_thumb.png?w=427&amp;#038;h=233" width="427" height="233" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;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 :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;WixNetFxExtension.dll&lt;/li&gt;
&lt;li&gt;WixUIExtension.dll&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/02/19.png"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border:0;" title="19" alt="19" src="http://kazoumoulox.files.wordpress.com/2013/02/19_thumb.png?w=359&amp;#038;h=439" width="359" height="439" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Et on recompile à nouveau ! Tout se passe bien :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/02/20.png"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border:0;" title="20" alt="20" src="http://kazoumoulox.files.wordpress.com/2013/02/20_thumb.png?w=600&amp;#038;h=329" width="600" height="329" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;5/ Tests&lt;/h2&gt;
&lt;p&gt;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 :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/02/21.png"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border:0;" title="21" alt="21" src="http://kazoumoulox.files.wordpress.com/2013/02/21_thumb.png?w=490&amp;#038;h=322" width="490" height="322" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Lancer le .msi :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/02/22.png"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border:0;" title="22" alt="22" src="http://kazoumoulox.files.wordpress.com/2013/02/22_thumb.png?w=493&amp;#038;h=387" width="493" height="387" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;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”…&lt;/p&gt;
&lt;p&gt;Puis on lance Outlook, les nouvelles catégories apparaissent !&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/02/23.png"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border:0;" title="23" alt="23" src="http://kazoumoulox.files.wordpress.com/2013/02/23_thumb.png?w=549&amp;#038;h=349" width="549" height="349" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Voila, le post s’achève… un merci tout particulier à &lt;a href="http://benoitlaut.net/" target="_blank"&gt;Benoit Laut&lt;/a&gt; pour ses conseils et son aide ! A bientôt !&lt;/p&gt;
&lt;p&gt;Télécharger le source : &lt;a title="Source" href="https://skydrive.live.com/redir?resid=75FE5300B9306184!2039&amp;amp;authkey=!AIHiScUmRLws_PE" target="_blank"&gt;ici&lt;/a&gt;.&lt;/p&gt;
&lt;br /&gt;  &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kazoumoulox.wordpress.com/1762/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kazoumoulox.wordpress.com/1762/" /&gt;&lt;/a&gt; &lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kazoumoulox.wordpress.com&amp;#038;blog=2355550&amp;#038;post=1762&amp;#038;subd=kazoumoulox&amp;#038;ref=&amp;#038;feed=1" width="1" height="1" /&gt;</content:encoded><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://kazoumoulox.wordpress.com/2013/02/28/vsto-outlook-2013/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">6</slash:comments><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://2.gravatar.com/avatar/2936677cba6281757d94cbedbcd1a561?s=96&amp;d=identicon&amp;r=G" medium="image">
			<media:title type="html">kazoumoulox</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/02/01_thumb.png" medium="image">
			<media:title type="html">01</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/02/02_thumb.png" medium="image">
			<media:title type="html">02</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/02/03_thumb.png" medium="image">
			<media:title type="html">03</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/02/04_thumb.png" medium="image">
			<media:title type="html">04</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/02/05_thumb.png" medium="image">
			<media:title type="html">05</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/02/06_thumb.png" medium="image">
			<media:title type="html">06</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/02/07_thumb.png" medium="image">
			<media:title type="html">07</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/02/08_thumb.png" medium="image">
			<media:title type="html">08</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/02/09_thumb.png" medium="image">
			<media:title type="html">09</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/02/10_thumb.png" medium="image">
			<media:title type="html">10</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/02/11_thumb.png" medium="image">
			<media:title type="html">11</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/02/12_thumb.png" medium="image">
			<media:title type="html">12</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/02/13_thumb.png" medium="image">
			<media:title type="html">13</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/02/14_thumb.png" medium="image">
			<media:title type="html">14</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/02/15_thumb.png" medium="image">
			<media:title type="html">15</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/02/16_thumb.png" medium="image">
			<media:title type="html">16</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/02/17_thumb.png" medium="image">
			<media:title type="html">17</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/02/18_thumb.png" medium="image">
			<media:title type="html">18</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/02/19_thumb.png" medium="image">
			<media:title type="html">19</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/02/20_thumb.png" medium="image">
			<media:title type="html">20</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/02/21_thumb.png" medium="image">
			<media:title type="html">21</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/02/22_thumb.png" medium="image">
			<media:title type="html">22</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/02/23_thumb.png" medium="image">
			<media:title type="html">23</media:title>
		</media:content></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5619051591853320584.post-3917380303565134543</guid><link>http://blog.adhess.net/2013/02/arretons-avec-le-browser-sniffing.html</link><a10:author><a10:name>Guillaume Lacasa</a10:name><a10:uri>http://blog.adhess.net/feeds/posts/default</a10:uri></a10:author><category domain="http://www.blogger.com/atom/ns#">HTML</category><category domain="http://www.blogger.com/atom/ns#">Navigateurs</category><title>Arrêtons avec le browser-sniffing !</title><description>&lt;p&gt;En tant qu’utilisateur d’Opera*, ça fait un petit moment que j’ai envie de parler de ce sujet, et l’annonce récente de &lt;a href="http://my.opera.com/ODIN/blog/300-million-users-and-move-to-webkit" target="_blank"&gt;l’abandon du moteur Presto&lt;/a&gt; par mon navigateur fétiche m’a enfin décidé à écrire cet article.&lt;/p&gt;  &lt;p&gt;Le “browser-sniffing”, pour ceux qui ne savent pas ce que c’est, consiste à activer ou désactiver des fonctionnalités d’un site web en fonction du user-agent du navigateur. Mais avant de voir pourquoi c’est si mal de faire ça, nous allons faire un peu d’histoire.&lt;/p&gt;  &lt;h4&gt;&lt;/h4&gt;  &lt;h4&gt;Petit historique des user-agents&lt;/h4&gt;  &lt;p&gt;Le “user-agent” d’un navigateur est une chaine de caractères, qui est incluse dans l’en-tête de chaque requête HTTP effectuée. Ceci permets de fournir diverses informations sur le navigateur, la version, la langue…&lt;/p&gt;  &lt;p&gt;Le user-agent “&lt;em&gt;&lt;strong&gt;Opera/8.50 (Windows NT 5.1; U; en)&lt;/strong&gt;&lt;/em&gt;” par exemple, représente le navigateur Opera, en version 8.5, qui tourne sous Windows XP, et installé en anglais (&lt;a href="http://fr.wikipedia.org/wiki/User-Agent#Lettre_.22U.22.2F.22I.22" target="_blank"&gt;le “U” ne veut plus rien dire&lt;/a&gt;).&lt;/p&gt;  &lt;p&gt;Remontons un peu dans le temps. À l’origine, il y avait Mosaic, le premier navigateur web devenu populaire. Il se faisait appeler à l’époque tout simplement “&lt;strong&gt;NCSA_Mosaic/2.0 (Windows 3.1)&lt;/strong&gt;”.     &lt;br /&gt;Puis est arrivé Mozilla (“&lt;strong&gt;Mozilla/1.0 (Win3.1)&lt;/strong&gt;”), rapidement renommé en Netscape, mais qui n’a pas changé de user-agent. Très vite, Netscape s’est mis en avant avec un meilleur support du html que son concurrent, à l’époque où les “frames” devenaient populaires. Vu que Mosaic ne supportait pas les frames, les développeurs ont commencé à différencier les navigateurs : c’est le début du browser sniffing : si le navigateur est Mozilla, il a droit aux frames, sinon il a une version light du site.&lt;/p&gt;  &lt;p&gt;Ensuite est arrivé Internet Explorer (“&lt;strong&gt;Microsoft Internet Explorer/4.0b1 (Windows 95)&lt;/strong&gt;”), et les ennuis commencent : Microsoft a fait un navigateur qui supporte les frames, mais son nom n’étant pas “Mozilla”, de nombreux sites web refusaient d’envoyer le site complet, quand ils ne bloquaient pas totalement l’accès.     &lt;br /&gt;La solution pour Microsoft : se déguiser en Mozilla. Dès la seconde version du navigateur, le user-agent est devenu “&lt;strong&gt;Mozilla/1.22 (compatible; MSIE 2.0; Windows 95)&lt;/strong&gt;”, ce qui signifie un navigateur “compatible mozilla”, et dont le vrai nom MSIE, se trouve plus loin.     &lt;br /&gt;Et ceci dure toujours, le user agent de la dernière version d’Internet Explorer se présente toujours comme “Mozilla compatible” : “&lt;strong&gt;Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0; Touch)&lt;/strong&gt;”&lt;/p&gt;  &lt;p&gt;Sautons quelques années pour voir un autre cas intéressant : Opera 9.64.    &lt;br /&gt;Opera*, le seul navigateur à avoir les &lt;em&gt;cojones&lt;/em&gt; de se présenter sous son vrai nom (:D), affichait fièrement un “&lt;strong&gt;Opera/9.64 (Windows NT 5.1; U; en) Presto/2.1.1&lt;/strong&gt;”. Certains sites, ne voyant pas la compatibilité Mozilla dans le user-agent, étaient dégradés (donnant une mauvaise image totalement injustifiée au navigateur), mais globalement ça marchait quand même plutôt bien.     &lt;br /&gt;Puis Opera est devenu le premier navigateur à passer en version 10, dont les versions beta s’identifiaient en tant que “&lt;strong&gt;Opera/10&lt;/strong&gt;”. Et là, de gros soucis sont de nouveau apparus : beaucoup de site se sont retrouvés cassés sur cette version, car les serveurs vérifiaient le navigateur (Opera), et le premier caractère de la version. Les serveurs web ne se sont pas étonnés de voir une vieille version “1” revenir à la mode et se sont contentés de bloquer ces versions.     &lt;br /&gt;Ce user-agent n’a donc pas passé la beta, depuis la version 10, Opera indique être “&lt;strong&gt;Opera/9.80&lt;/strong&gt;”.&lt;/p&gt;  &lt;p&gt;Je pense que vous commencez à comprendre le problème.&lt;/p&gt;  &lt;h4&gt;&lt;/h4&gt;  &lt;h4&gt;Pourquoi le browser-sniffing c’est mal&lt;/h4&gt;  &lt;p&gt;J’en viens donc au point de mon article : le browser-sniffing doit cesser. Il est toujours tentant de vérifier quel navigateur on a en face, pour lui renvoyer un rendu correct, mais ce n’est pas la bonne solution. Réfléchissons, comment pouvons nous reconnaitre à coup sûr le navigateur ?&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;em&gt;On va lire son nom et sa version dans le user-agent.        &lt;br /&gt;&lt;/em&gt;Non, vous avez bien vu juste au dessus, ce n’est pas comme ça que vous aurez les bonnes valeurs. D’une version à l’autre le nom du navigateur ou son numéro de version peut se retrouver à des emplacements différents. Le user-agent n’est pas standardisé, vous ne pourrez pas retrouver toutes les valeurs possibles comme ça. &lt;/li&gt;    &lt;li&gt;&lt;em&gt;On peut faire une base de données des user-agents&lt;/em&gt;       &lt;br /&gt;Vous pouvez essayer, vous n’y arriverez pas. Avec les différents navigateurs, les différents OS, et les navigateurs mobiles (qui souvent incluent aussi le modèle du téléphone et le nom de l’opérateur de téléphonie), les combinaisons sont infinies. Et ça impliquerait de rester à jour &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;De plus, revenons au cas d’Opera* : dans sa version 12, il utilise le moteur de rendu Presto, la prochaine version utilisera WebKit, avec forcément des différences (certaines fonctionnalités qui n’étaient pas supportés le seront, mais inversement, peut-être certaines supportées par Presto ne le sont pas par WebKit). Si vous faites aujourd’hui des règles spécifiques à Opera, vous allez devoir les mettre à jour pour la prochaine version. Et qui sait si d’autres navigateurs ne feront pas la même chose dans les prochains mois ? &lt;/p&gt;  &lt;h4&gt;Si vous ne me croyez toujours pas&lt;/h4&gt;  &lt;p&gt;Il suffit de faire &lt;a href="http://www.google.fr/search?q=browser+sniffing" target="_blank"&gt;une recherche Google&lt;/a&gt; :&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-jxprANIStd0/UT4TC0EX1dI/AAAAAAAAB1w/R5XpYJgG1gg/s1600-h/image%25255B4%25255D.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh3.ggpht.com/-FjyC_u7Z-7I/UT4TEHQEiYI/AAAAAAAAB10/USYW0KGXmS0/image_thumb%25255B2%25255D.png?imgmax=800" width="670" height="588" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Les premiers résultats sont dans l’ordre:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;la page Wikipedia (&lt;a href="http://en.wikipedia.org/wiki/Browser_sniffing#Issues_and_standards" target="_blank"&gt;avec un paragraphe qui en décrit les problèmes&lt;/a&gt;)&lt;/li&gt;    &lt;li&gt;3 articles qui disent qu’il ne faut pas l’utiliser&lt;/li&gt;    &lt;li&gt;Les documentations de Dojo et jQuery sur les fonctionnalités de sniffing ; les deux commencent par expliquer qu’il faut éviter de l’utiliser.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Voilà, j’espère vous avoir convaincu de ne plus utiliser cette méthode pour le développement de vos sites.&lt;/p&gt;  &lt;p&gt;Avant de nous quitter, je vous laisse les quelques liens qui m’ont aidé à la rédaction de cet article, et je vous dit à très bientôt !&lt;/p&gt;  &lt;p&gt;Sources :&lt;/p&gt;  &lt;p&gt;&lt;a title="http://my.opera.com/ODIN/blog/300-million-users-and-move-to-webkit" href="http://my.opera.com/ODIN/blog/300-million-users-and-move-to-webkit"&gt;http://my.opera.com/ODIN/blog/300-million-users-and-move-to-webkit&lt;/a&gt;    &lt;br /&gt;&lt;a title="http://fr.wikipedia.org/wiki/User-Agent" href="http://fr.wikipedia.org/wiki/User-Agent"&gt;http://fr.wikipedia.org/wiki/User-Agent&lt;/a&gt;    &lt;br /&gt;&lt;a title="http://webaim.org/blog/user-agent-string-history/" href="http://webaim.org/blog/user-agent-string-history/"&gt;http://webaim.org/blog/user-agent-string-history/&lt;/a&gt;    &lt;br /&gt;&lt;a title="http://whatsmyuseragent.com/" href="http://whatsmyuseragent.com/"&gt;http://whatsmyuseragent.com/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;* Je vous assure, ce billet n’est pas sponsorisé par Opera, promis ! :-)&lt;/p&gt;  </description><pubDate>Thu, 14 Feb 2013 18:34:00 +0100</pubDate><a10:link rel="replies" type="application/atom+xml" title="Publier les commentaires" href="http://blog.adhess.net/feeds/3917380303565134543/comments/default" /><a10:link rel="replies" type="text/html" title="0 commentaires" href="http://www.blogger.com/comment.g?blogID=5619051591853320584&amp;postID=3917380303565134543" /><a10:link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5619051591853320584/posts/default/3917380303565134543" /><a10:link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5619051591853320584/posts/default/3917380303565134543" /><a10:updated>2013-03-11T18:23:30+01:00</a10:updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/-FjyC_u7Z-7I/UT4TEHQEiYI/AAAAAAAAB10/USYW0KGXmS0/s72-c/image_thumb%25255B2%25255D.png?imgmax=800" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><guid isPermaLink="false">http://www.dotmim.com/?p=996</guid><link>http://www.dotmim.com/2013/02/07/new-life-new-blog/</link><a10:author><a10:name>Sebastien Pertus</a10:name><a10:uri>http://www.dotmim.com/feed/</a10:uri></a10:author><category>Sans Catégorie</category><title>New Life, New Blog</title><description>Bonjour à tous !
Je migre vers MSDN. Et oui, je viens d&amp;#8217;intégrer la division DPE de Microsoft France, vous me retrouverez donc à l&amp;#8217;adresse :
http://blogs.msdn.com/b/mim/
A tout de suite  
Seb
</description><pubDate>Thu, 07 Feb 2013 14:18:53 Z</pubDate><comments>http://www.dotmim.com/2013/02/07/new-life-new-blog/#comments</comments><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mimetis</dc:creator><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/">&lt;p&gt;Bonjour à tous !&lt;/p&gt;
&lt;p&gt;Je migre vers MSDN. Et oui, je viens d&amp;rsquo;intégrer la division DPE de Microsoft France, vous me retrouverez donc à l&amp;rsquo;adresse :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/b/mim/"&gt;http://blogs.msdn.com/b/mim/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A tout de suite &lt;img src='http://www.dotmim.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /&gt; &lt;/p&gt;
&lt;p&gt;Seb&lt;/p&gt;
</content:encoded><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.dotmim.com/2013/02/07/new-life-new-blog/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">1</slash:comments></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5619051591853320584.post-2186821234182004425</guid><link>http://blog.adhess.net/2013/01/winjs-problemes-pouvant-survenir-avec.html</link><a10:author><a10:name>Guillaume Lacasa</a10:name><a10:uri>http://blog.adhess.net/feeds/posts/default</a10:uri></a10:author><category domain="http://www.blogger.com/atom/ns#">JavaScript</category><category domain="http://www.blogger.com/atom/ns#">Windows8</category><category domain="http://www.blogger.com/atom/ns#">WinJS</category><title>WinJS : problèmes pouvant survenir avec les listes groupées</title><description>&lt;p&gt;J’ai eu des bugs sur mes applications WinJS, et je me suis dit que j’allais partager avec vous, parce que vous savez, j’aime bien partager (et puis ça fait plus de 6 mois que j’ai pas blogué, y’a des gens qui risquent de s’inquiéter).&lt;/p&gt;  &lt;p&gt;Donc j’ai trouvé 2 bugs, les 2 en rapports avec des listes groupées.&lt;/p&gt;  &lt;h3&gt;1 – SemanticZoom : “Object doesn't support property or method 'itemFromDescription'”&lt;/h3&gt;  &lt;p&gt;Si vous ne connaissez pas le principe du SemanticZoom, c’est tout simple. Vous avez deux vues : une liste d’éléments, affichés par groupe, et une liste n’affichant que les groupes. À l’utilisation, vous avez votre liste d’éléments, vous faites un zoom arrière (en pinçant les doigts, ou Ctrl+molette) et la liste des groupes apparait. Lorsque vous cliquez sur un groupe vous repassez sur la liste d’éléments, avec le groupe cliqué affiché. C’est le fonctionnement du start menu de Windows 8.&lt;/p&gt;  &lt;p&gt;En mettant en place mon contrôle SemanticZoom, j’ai donc eu l’exception suivante : “Object doesn't support property or method 'itemFromDescription'”, dont la description ne fournit absolument aucun détail sur l’origine du bug.&lt;/p&gt;  &lt;p&gt;Après investigation, j’ai donc trouvé que l’origine venait des identifiants du groupe : ils étaient de type entier. Et ça, le SemanticZoom, il aime pas.&lt;/p&gt;  &lt;p&gt;La solution : utiliser des Strings. &lt;/p&gt;  &lt;p&gt;var bindingList = new WinJS.Binding.List().createGrouped(   &lt;br /&gt;function(item) { return item.group.id.toString(); },    &lt;br /&gt;function(item) { return item.group; });&lt;/p&gt;  &lt;h3&gt;2 – Liste groupée et filtrée : “Unable to get property 'id' of undefined or null reference”&lt;/h3&gt;  &lt;p&gt;Une fois que j’ai réussi à gérer ma liste groupée, j’ai voulu ajouter un filtre. Au lieu d’afficher tous mes items, je décider de n’afficher que mes items favoris.&lt;/p&gt;  &lt;p&gt;Pour ça, je peux créer une binding list filtrée, de la manière suivante, en me basant sur la liste précédente.&lt;/p&gt; var bindingList = new WinJS.Binding.List().createGrouped(  &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; function(item) { return item.group.id.toString(); },  &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; function(item) { return item.group; }  &lt;br /&gt;);   &lt;p&gt;var filteredList = bindingList.createFiltered(   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; function(item) { return item.isFavorite; }    &lt;br /&gt;);&lt;/p&gt;  &lt;p&gt;Et là, encore une fois, j’ai une exception : “Unable to get property 'id' of undefined or null reference”. Et encore une fois, l’erreur est très explicite. Comme ce n’est pas le message de l’exception qui va vous aider, je vous dis de suite ce qu’il s’est passé :&lt;/p&gt;  &lt;p&gt;En créant la liste, la binding list a récupéré la liste des groupes, en fonction des items présents. Puis lorsque le filtre a été appliqué, on s’est retrouvé avec des groupes vides. Et là paf, exception.&lt;/p&gt;  &lt;p&gt;La solution : inverser les appels à createGrouped et createFiltered :&lt;/p&gt;  &lt;p&gt;var filteredList = new WinJS.Binding.List().createFiltered( function(item){return item.isFavorite;});   &lt;br /&gt;var groupedList = filteredList.createGrouped(    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; function(item) { return item.group.id.toString(); },    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; function(item) { return item.group; }    &lt;br /&gt;);&lt;/p&gt;  &lt;p&gt;Ainsi, les groupes sont calculés à partir de la liste déjà filtrée, et tout fonctionne !&lt;/p&gt;  </description><pubDate>Tue, 22 Jan 2013 13:05:00 +0100</pubDate><a10:link rel="replies" type="application/atom+xml" title="Publier les commentaires" href="http://blog.adhess.net/feeds/2186821234182004425/comments/default" /><a10:link rel="replies" type="text/html" title="0 commentaires" href="http://www.blogger.com/comment.g?blogID=5619051591853320584&amp;postID=2186821234182004425" /><a10:link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5619051591853320584/posts/default/2186821234182004425" /><a10:link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5619051591853320584/posts/default/2186821234182004425" /><a10:updated>2013-01-22T13:05:46+01:00</a10:updated><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><guid isPermaLink="false">https://kazoumoulox.wordpress.com/?p=1654</guid><link>http://kazoumoulox.wordpress.com/2013/01/14/sp2010-replaceforms-part2/</link><a10:author><a10:name>Florent Cazenave</a10:name><a10:uri>http://kazoumoulox.wordpress.com/feed</a10:uri></a10:author><category>Développement SharePoint</category><category>Package</category><category>SharePoint</category><category>SharePoint 2010</category><category>SharePoint 2010 Server</category><category>SharePoint Foundation 2010</category><title>SP2010–Remplacer les formulaires–Part 2</title><description>Bonjour à tous. Dans la partie précédente, nous avons vu comment créer trois modèles de listes SharePoint 2010 (fonctionnera également avec 2007 et 2013, Server ou Foundation). Avec ces modèles nous avons déployé pour chacun d’eux une instance : Pays, Villes et Commandes. Le tout bien sûr &amp;#8220;packagé&amp;#8221; dans une solution SharePoint avec Visual Studio [&amp;#8230;]&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kazoumoulox.wordpress.com&amp;#038;blog=2355550&amp;#038;post=1654&amp;#038;subd=kazoumoulox&amp;#038;ref=&amp;#038;feed=1" width="1" height="1" /&gt;</description><pubDate>Mon, 14 Jan 2013 07:00:45 Z</pubDate><comments>http://kazoumoulox.wordpress.com/2013/01/14/sp2010-replaceforms-part2/#comments</comments><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Florent Cazenave</dc:creator><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/">&lt;p&gt;Bonjour à tous.&lt;/p&gt;
&lt;p&gt;Dans la &lt;a href="http://kazoumoulox.wordpress.com/2012/10/19/sp2010-replaceforms-part1/" target="_blank"&gt;partie précédente&lt;/a&gt;, nous avons vu comment créer trois modèles de listes SharePoint 2010 (fonctionnera également avec 2007 et 2013, Server ou Foundation). Avec ces modèles nous avons déployé pour chacun d’eux une instance : Pays, Villes et Commandes.&lt;/p&gt;
&lt;p&gt;Le tout bien sûr &amp;#8220;packagé&amp;#8221; dans une solution SharePoint avec Visual Studio 2010. Ainsi nous avons utilisé une &amp;#8220;Feature&amp;#8221; pour déployer le tout qui, lorsqu’elle s’active, déploie les modèles, créée les instances de ces listes et remplit les listes Pays et Villes avec un ensemble de données.&lt;/p&gt;
&lt;p&gt;Dans cette nouvelle partie, nous allons tenter de remplacer les formulaires standards :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;DispForm.aspx&lt;/li&gt;
&lt;li&gt;NewForm.aspx&lt;/li&gt;
&lt;li&gt;EditForm.aspx&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Dans le but de surcharger leur comportement, principalement au niveau des listes déroulantes : la liste des villes disponibles sera filtrée en fonction du pays qui sera sélectionné.&lt;/p&gt;
&lt;p&gt;Pour compléter, vous pourriez également faire appel à quelques projets CodePlex fournissant ces listes déroulantes liées par le biais de champs personnalisés (Custom Fields) qui sont réutilisables et en soit plus “propres”. Je vous propose une autre méthode, sans passer par ces fonctionnalités additionnelles, plus dans le cas d’un usage unique.&lt;/p&gt;
&lt;h3&gt;1/ Comprendre la structure – le pourquoi…&lt;/h3&gt;
&lt;p&gt;Avant d’entamer la phase technique du développement/déploiement, il est essentiel de comprendre comment fonctionnent les formulaires standards, où ils sont déployés, etc.&lt;/p&gt;
&lt;p&gt;Vous pouvez utiliser SharePoint Manager 2010 ou SharePoint Designer 2010 pour explorer la structure utilisé par les listes pour rediriger l’utilisateur vers ces fameux formulaires lorsqu’il souhaitera ajouter/modifier/voir les propriétés d’un élément/document dans une liste/bibliothèque de documents SharePoint. La structure est plutôt simple. Elle se compose de :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Un répertoire racine : RootFolder. Ce répertoire est créé par défaut.&lt;/li&gt;
&lt;li&gt;Des sous-répertoires créés par les utilisateurs&lt;/li&gt;
&lt;li&gt;Des items/documents créés par les utilisateurs&lt;/li&gt;
&lt;li&gt;Un répertoire particulier : “Forms” qui contient les formulaires en question pour les bibliothèques de documents&lt;/li&gt;
&lt;li&gt;Pour les listes, les formulaires en questions sont placés directement dans le RootFolder.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/01/01.png"&gt;&lt;img style="background-image:none;float:left;padding-top:0;padding-left:0;display:inline;padding-right:0;border-width:0;" title="01" alt="01" src="http://kazoumoulox.files.wordpress.com/2013/01/01_thumb.png?w=172&amp;#038;h=406" width="172" height="406" align="left" border="0" /&gt;&lt;/a&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/01/02.png"&gt;&lt;img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border-width:0;" title="02" alt="02" src="http://kazoumoulox.files.wordpress.com/2013/01/02_thumb.png?w=149&amp;#038;h=409" width="149" height="409" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Il m’est arrivé, bien souvent, de reprendre des projets SharePoint, par les biais de missions de conseil, d’assistance et je vois assez régulièrement des développeurs ayant essayé de “surcharger” ces formulaires en créant leurs propres formulaires (par copier/coller)… ayant des nom différents. Et en général… :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;DispForm.aspx devient&lt;strong&gt; DisForm2.aspx&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;NewForm.aspx devient &lt;strong&gt;NewForm2.aspx&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;EditForm.aspx devient &lt;strong&gt;EditForm2.aspx &lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Et moi…. ça ne me convient pas ! En effet, les anciens formulaires restent disponibles, ils ne sont pas masqués… et restent donc accessible pour quelqu’un d’observateur qui saura assez rapidement appeler ces url et pourra donc se passer des règles de gestion que l’on souhaite imposer. Nous allons voir maintenant comment écraser ces fichiers standards en déployant notre solution SharePoint et les associer à nos listes Villes et Commandes.&lt;/p&gt;
&lt;h3&gt;2/ Déployer des Formulaires personnalisés&lt;/h3&gt;
&lt;p&gt;Reprenons notre solution. On remarque tout de suite que nous n’avons aucun fichier “aspx” dans les répertoires de la solution (répertoires des listes en particulier).&lt;/p&gt;
&lt;p&gt;Première manipulation : utiliser SharePoint Designer 2010 pour récupérer les fichiers “aspx” originaux.&lt;/p&gt;
&lt;p&gt;On commence donc par lancer SharePoint Designer 2010 (de préférence en 32bits &lt;img class="wlEmoticon wlEmoticon-winkingsmile" style="border-style:none;" alt="Clignement d'œil" src="http://kazoumoulox.files.wordpress.com/2012/11/wlemoticon-winkingsmile.png?w=595" /&gt;), on se connecte donc sur le site et utilise l’explorateur pour atteindre notre liste, Villes par exemple (via l’explorateur à gauche “All Files &amp;gt; Lists &amp;gt; Villes”) :&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2012/11/image.png"&gt;&lt;img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border-width:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2012/11/image_thumb.png?w=600&amp;#038;h=416" width="600" height="416" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/01/03.png"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border-width:0;" title="03" alt="03" src="http://kazoumoulox.files.wordpress.com/2013/01/03_thumb.png?w=444&amp;#038;h=510" width="444" height="510" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;On remarque tout de suite la présence des fichiers qui nous intéressent. Manipulation assez simple, on ouvre chacun des fichiers (en mode Avancé : clic droit sur chaque fichier &amp;gt; Ouvrir en mode avancé) et on copie/colle le contenu de chacun dans un fichier (avec Notepad ou autre) le but étant de sauvegarder chacun de ces fichiers dans le répertoire de la solution, à l’intérieur du dossier concernant notre liste et bien sûr avec le nom qui va bien&amp;#8230; :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/01/04.png"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border-width:0;" title="04" alt="04" src="http://kazoumoulox.files.wordpress.com/2013/01/04_thumb.png?w=388&amp;#038;h=414" width="388" height="414" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;On copie le contenu du fichier…&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/01/05.png"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border-width:0;" title="05" alt="05" src="http://kazoumoulox.files.wordpress.com/2013/01/05_thumb.png?w=444&amp;#038;h=321" width="444" height="321" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Dans un Notepad :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/01/06.png"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border-width:0;" title="06" alt="06" src="http://kazoumoulox.files.wordpress.com/2013/01/06_thumb.png?w=463&amp;#038;h=247" width="463" height="247" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;On sauvegarde dans les répertoires Windows des définitions des listes Villes et Commandes, puis on inclut les fichiers dans la solution SharePoint :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/01/07.png"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border-width:0;" title="07" alt="07" src="http://kazoumoulox.files.wordpress.com/2013/01/07_thumb.png?w=292&amp;#038;h=401" width="292" height="401" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Les nouveaux fichiers sont inclus :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/01/08.png"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border-width:0;" title="08" alt="08" src="http://kazoumoulox.files.wordpress.com/2013/01/08_thumb.png?w=220&amp;#038;h=471" width="220" height="471" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Il reste ensuite une dernière manipulation à faire, sur chacun de nos fichiers aspx ajoutés dans la solution, nous allons faire un clic-droit &amp;gt; Propriétés :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/01/09.png"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border-width:0;" title="09" alt="09" src="http://kazoumoulox.files.wordpress.com/2013/01/09_thumb.png?w=311&amp;#038;h=297" width="311" height="297" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="background-color:#ffffff;"&gt;Et nous allons changer la propriété “Deployment Type” en “ElementFile” (on peut vérifier le répertoire de déploiement qui doit pointer vers le répertoire de sortie de la feature dans le répertoire 14 (SharePointRoot) :&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/01/10.png"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border-width:0;" title="10" alt="10" src="http://kazoumoulox.files.wordpress.com/2013/01/10_thumb.png?w=425&amp;#038;h=208" width="425" height="208" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="background-color:#ffffff;"&gt;On reproduit ceci sur chacun des fichiers aspx. Vous pouvez vérifier dans le fichier “SharePointProjectItem.spdata” (celui au niveau de la déclaration du modèle de liste) que les modifications ont bien été apportées :&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/01/11.png"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border-width:0;" title="11" alt="11" src="http://kazoumoulox.files.wordpress.com/2013/01/11_thumb.png?w=525&amp;#038;h=284" width="525" height="284" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="background-color:#ffffff;"&gt;Notre solution est donc enrichie avec ces nouvelles pages. Toutefois, si l’on déploie ces nouvelles pages aspx directement, l’instance déployée n’utilisera pas directement nos nouvelles pages. Pour cela, nous allons devoir modifier le fichier Schema.xml pour chacune de ces listes, au niveau du nœud “Forms” (tout à la fin du fichier) :&lt;/span&gt;&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;span style="background-color:#ffffff;"&gt;&amp;lt;Forms&amp;gt;&lt;br /&gt;
&amp;lt;Form Type=&amp;#8221;DisplayForm&amp;#8221; Url=&amp;#8221;DispForm.aspx&amp;#8221; SetupPath=&amp;#8221;pages\form.aspx&amp;#8221; WebPartZoneID=&amp;#8221;Main&amp;#8221; /&amp;gt;&lt;br /&gt;
&amp;lt;Form Type=&amp;#8221;EditForm&amp;#8221; Url=&amp;#8221;EditForm.aspx&amp;#8221; SetupPath=&amp;#8221;pages\form.aspx&amp;#8221; WebPartZoneID=&amp;#8221;Main&amp;#8221; /&amp;gt;&lt;br /&gt;
&amp;lt;Form Type=&amp;#8221;NewForm&amp;#8221; Url=&amp;#8221;NewForm.aspx&amp;#8221; SetupPath=&amp;#8221;pages\form.aspx&amp;#8221; WebPartZoneID=&amp;#8221;Main&amp;#8221; /&amp;gt;&lt;br /&gt;
&amp;lt;/Forms&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;span style="background-color:#ffffff;"&gt;Chaque formulaire/page est associé à notre liste SharePoint par le biais d’un nœud &amp;lt;Form /&amp;gt;. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="background-color:#ffffff;"&gt;&lt;span style="background-color:#ffffff;"&gt;Nous allons modifier chacun de ces nœuds &amp;lt;Form /&amp;gt; pour indiquer à SharePoint qu’il doit utiliser nos pages et pas celles par défaut. Nous allons&lt;/span&gt; donc supprimer l’attribut SetupPath pour faire pointer chacun des formulaires vers nos pages custom.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="background-color:#ffffff;"&gt;Nous allons &lt;/span&gt;également ajouter quelques attributs :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Path=&amp;#8221;NewForm.aspx&amp;#8221; =&amp;gt; Chemin relatif vers le fichier NewForm.aspx dans notre solution&lt;/li&gt;
&lt;li&gt;Default=&amp;#8221;TRUE&amp;#8221; =&amp;gt; Page par défaut&lt;/li&gt;
&lt;li&gt;UseDefaultListFormWebPart=&amp;#8221;False&amp;#8221; =&amp;gt; Ne pas utiliser le WebPart Standard&lt;/li&gt;
&lt;li&gt;WebPartOrder=&amp;#8221;1&amp;#8243; =&amp;gt; Le WebPart sera placé en premier dans la zone de WebParts (il n’y en aura qu’un dans la page de toute manière)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="background-color:#ffffff;"&gt;Ce qui donne : &lt;/span&gt;&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;span style="background-color:#ffffff;"&gt;&amp;lt;Form Type=&amp;#8221;NewForm&amp;#8221; Url=&amp;#8221;NewForm.aspx&amp;#8221; Path=&amp;#8221;NewForm.aspx&amp;#8221; WebPartZoneID=&amp;#8221;Main&amp;#8221; Default=&amp;#8221;TRUE&amp;#8221; UseDefaultListFormWebPart=&amp;#8221;False&amp;#8221; WebPartOrder=&amp;#8221;1&amp;#8243;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="background-color:#ffffff;"&gt;&amp;lt;/Form&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;span style="background-color:#ffffff;"&gt;Nous allons ensuite ajouter le WebPart de type ListFormWebPart&lt;/span&gt; dans la page NewForm.aspx pour afficher le formulaire standard. Il existe plusieurs méthodes que vous retrouverez sur Google, Bing ou autre.&lt;/p&gt;
&lt;p&gt;Pour ma part, je vais choisir une méthode moins traditionnelle qui consiste à placer ce WebPart directement dans la déclaration de l’association du formulaire d’ajout d’élément et notre page custom (toutes les méthodes sont possible, celle-ci n’est pas meilleure !… juste différente). Nous allons ajouter un tag &amp;lt;WebParts&amp;gt; directement dans le &amp;lt;Form/&amp;gt; précédent, qui contiendra la déclaration du WebPart de type &lt;span style="background-color:#ffffff;"&gt;ListFormWebPart. Certains ont déjà du croiser ce type de déclaration, très utilisé lorsqu’on déploie des pages web avec des Modules. On obtiendra : &lt;/span&gt;&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&amp;lt;Forms&amp;gt;&lt;br /&gt;
…&lt;br /&gt;
&amp;lt;Form Type=&amp;#8221;NewForm&amp;#8221; Url=&amp;#8221;NewForm.aspx&amp;#8221; Path=&amp;#8221;NewForm.aspx&amp;#8221; WebPartZoneID=&amp;#8221;Main&amp;#8221; Default=&amp;#8221;TRUE&amp;#8221; UseDefaultListFormWebPart=&amp;#8221;False&amp;#8221; WebPartOrder=&amp;#8221;1&amp;#8243;&amp;gt;&lt;br /&gt;
&amp;lt;WebParts&amp;gt;&lt;br /&gt;
&amp;lt;AllUsersWebPart WebPartZoneID=&amp;#8221;Main&amp;#8221; WebPartOrder=&amp;#8221;1&amp;#8243;&amp;gt;&lt;br /&gt;
&amp;lt;![CDATA[&lt;br /&gt;
&amp;lt;WebPart xmlns="&lt;a href="http://schemas.microsoft.com/WebPart/v2&amp;quot;"&gt;http://schemas.microsoft.com/WebPart/v2"&lt;/a&gt;&amp;gt;&lt;br /&gt;
&amp;lt;Assembly&amp;gt;Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&amp;lt;/Assembly&amp;gt;&lt;br /&gt;
&amp;lt;TypeName&amp;gt;Microsoft.SharePoint.WebPartPages.ListFormWebPart&amp;lt;/TypeName&amp;gt;&lt;br /&gt;
&amp;lt;PageType&amp;gt;PAGE_NEWFORM&amp;lt;/PageType&amp;gt;&lt;br /&gt;
&amp;lt;/WebPart&amp;gt;]]&amp;gt;&lt;br /&gt;
&amp;lt;/AllUsersWebPart&amp;gt;&lt;br /&gt;
&amp;lt;/WebParts&amp;gt;&lt;br /&gt;
&amp;lt;/Form&amp;gt;&lt;br /&gt;
&amp;lt;/Forms&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;On déclare ici un WebPart de type &lt;em&gt;Microsoft.SharePoint.WebPartPages.ListFormWebPart&lt;/em&gt; dans la zone “Main”. Notez également le tag &lt;em&gt;PageType&lt;/em&gt; qui a la valeur &lt;em&gt;PAGE_NEWFORM&lt;/em&gt; indiquant qu’il s’agit bien de ce WebPart dans le mode de rendu “New” (nouvel élément). Vous trouverez ici les valeurs possibles pour cette énumération : &lt;a title="http://msdn.microsoft.com/fr-fr/library/microsoft.sharepoint.pagetype(v=office.12).aspx" href="http://msdn.microsoft.com/fr-fr/library/microsoft.sharepoint.pagetype(v=office.12).aspx"&gt;http://msdn.microsoft.com/fr-fr/library/microsoft.sharepoint.pagetype(v=office.12).aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;On reproduit cela pour chacun des formulaires, sur nos listes Villes et Commandes :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/01/18.png"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border-width:0;" title="18" alt="18" src="http://kazoumoulox.files.wordpress.com/2013/01/18_thumb.png?w=600&amp;#038;h=372" width="600" height="372" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Mais me direz-vous, nous avons copié les pages NewForm, DispForm et EditForm avec SharePoint Designer et ce WebPart devrait être déjà présent dans les pages&amp;#8230; Oui tout à fait, c’est pour cela que nous allons le supprimer !&lt;/p&gt;
&lt;p&gt;On ouvre donc un à un chacun des fichiers NewForm.aspx, EditForm.aspx et DispForm.aspx (pour les listes Villes et Commandes) et on recherche :&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&amp;lt;WebPartPages:ListFormWebPart runat=&amp;#8221;server&amp;#8221; __MarkupType=&amp;#8221;xmlmarkup&amp;#8221; ……… &amp;lt;/WebPartPages:ListFormWebPart&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;On sélectionne le tout et on supprime tout le contenu de cet élément (l’élément y compris) :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/01/19.png"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border-width:0;" title="19" alt="19" src="http://kazoumoulox.files.wordpress.com/2013/01/19_thumb.png?w=600&amp;#038;h=367" width="600" height="367" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;On sauvegarde le tout.&lt;/p&gt;
&lt;p&gt;Pour préciser pourquoi on ne conserve pas ce WebPart dans les pages, vous avez peut être remarque qu’il possédait la propriété ListId. Malheureusement, cette propriété est valorisée avec un GUID qui représente l’identifiant unique de la liste… et qui sera différent à chaque redéploiement de notre Solution. Impossible donc de packager ce composant directement avec le bon GUID. Vous pourrez par contre utiliser l’attribut ListName valorisé avec l’url relative de la liste.&lt;/p&gt;
&lt;p&gt;&lt;span style="background-color:#ffffff;"&gt;Il nous reste à compiler, déployer… Pour vérifier que les fichiers sont bien déployés et écrasent bien les fichiers natifs, il faut changer un peu le contenu de la page (le bon vieux test du TOTO dans la page &lt;img class="wlEmoticon wlEmoticon-winkingsmile" style="border-style:none;" alt="Clignement d'œil" src="http://kazoumoulox.files.wordpress.com/2013/01/wlemoticon-winkingsmile.png?w=595" /&gt;)… &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="background-color:#ffffff;"&gt;Pour cela, j’ai choisi le formulaire NewForm.aspx de la liste de Commandes. Dans le ContentPlaceHolder “PlaceHolderPageTitle”, j’ajoute un TOTO :&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="background-color:#ffff00;"&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/01/20.png"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border-width:0;" title="20" alt="20" src="http://kazoumoulox.files.wordpress.com/2013/01/20_thumb.png?w=461&amp;#038;h=198" width="461" height="198" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="background-color:#ffffff;"&gt;On compile avec Visual Studio et on déploie sur notre plateforme SharePoint. Une fois le tout déployé, je me dirige vers ma liste de Commandes dans le navigateur, je clique sur nouveau : &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/01/21.png"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border-width:0;" title="21" alt="21" src="http://kazoumoulox.files.wordpress.com/2013/01/21_thumb.png?w=448&amp;#038;h=257" width="448" height="257" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;On retrouve bien le TOTO dans le titre de la fenêtre !!! (Bien sûr on supprime le TOTO &lt;img class="wlEmoticon wlEmoticon-smile" style="border-style:none;" alt="Sourire" src="http://kazoumoulox.files.wordpress.com/2013/01/wlemoticon-smile.png?w=595" /&gt; et on redéploye).&lt;/p&gt;
&lt;p&gt;Ca c’est fait.&lt;/p&gt;
&lt;h3&gt;3/ Modifier le comportement des pages&lt;/h3&gt;
&lt;p&gt;Nos pages étant maintenant déployées, nous allons modifier leur héritage natif pour les faire hériter de classes contenues dans notre propre assembly (DLL). Pour cela, nous allons créer une classe C# pour chacun des pages NewForm, DispForm &amp;amp; EditForm, et ce pour chacune de nos listes (donc 6 classes dans mon cas).&lt;/p&gt;
&lt;p&gt;&lt;span style="background-color:#ffffff;"&gt;En général, je créé un répertoire Pages à la racine de mon projet (les pages sont compilées dans la DLL et le fichier .cs n’est pas déployé). Une fois le dossier créé, j’ajoute 6 classes :&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/01/14.png"&gt;&lt;span style="background-color:#ffff00;"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border-width:0;" title="14" alt="14" src="http://kazoumoulox.files.wordpress.com/2013/01/14_thumb.png?w=419&amp;#038;h=314" width="419" height="314" border="0" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/01/15.png"&gt;&lt;span style="background-color:#ffff00;"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border-width:0;" title="15" alt="15" src="http://kazoumoulox.files.wordpress.com/2013/01/15_thumb.png?w=285&amp;#038;h=375" width="285" height="375" border="0" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="background-color:#ffff00;"&gt;&lt;span style="background-color:#ffffff;"&gt;Ensuite, nous allons faire hériter chacune de ces classes de “WebPartPage” et ajouter “using Microsoft.SharePoint.WebPartPages”&lt;/span&gt;&lt;/span&gt;&lt;span style="background-color:#ffffff;"&gt; : &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/01/16.png"&gt;&lt;span style="background-color:#ffff00;"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border-width:0;" title="16" alt="16" src="http://kazoumoulox.files.wordpress.com/2013/01/16_thumb.png?w=458&amp;#038;h=318" width="458" height="318" border="0" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="background-color:#ffffff;"&gt;Ensuite, dans chacune des pages aspx, nous allons : &lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="background-color:#ffffff;"&gt;Ajouter tout au début :  &lt;span style="background-color:#ffffff;"&gt;&amp;lt;%@ Assembly Name=&amp;#8221;$SharePoint.Project.AssemblyFullName$&amp;#8221; %&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="background-color:#ffffff;"&gt;Modifier le Inherits pour pointer vers notre assembly : &lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;span style="background-color:#ffffff;"&gt;Inherits=&amp;#8221;Microsoft.SharePoint.WebPartPages.WebPartPage,Microsoft.SharePoint, &lt;/span&gt;&lt;span style="background-color:#ffffff;"&gt;Version=14.0.0.0,Culture=neutral,PublicKeyToken=71e9bce111e9429c&amp;#8221; &lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;span style="background-color:#ffffff;"&gt;devient&lt;/span&gt;&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;span style="background-color:#ffffff;"&gt;Inherits=&amp;#8221;DEMO1.Pages.CommandesNewForm,$SharePoint.Project.AssemblyFullName$&amp;#8221;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;span style="background-color:#ffffff;"&gt;Où :&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="background-color:#ffffff;"&gt;DEMO1.Pages.CommandesNewForm = Namespace + nom de la classe &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="background-color:#ffffff;"&gt;$SharePoint.Project.AssemblyFullName$ : nom complet de l’Assembly, valorisé par Visual Studio avant le déploiement.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="background-color:#ffffff;"&gt;On recommence la manipulation sur chacune des 6 pages aspx: &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/01/22.png"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border-width:0;" title="22" alt="22" src="http://kazoumoulox.files.wordpress.com/2013/01/22_thumb.png?w=600&amp;#038;h=230" width="600" height="230" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;On compile/déploie à nouveau le tout. Pour tester que le code-behind est bien appelé, on peut passer en debug sur la solution et vérifier que la méthode OnLoad() est bien appelée :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2013/01/23.png"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border-width:0;" title="23" alt="23" src="http://kazoumoulox.files.wordpress.com/2013/01/23_thumb.png?w=483&amp;#038;h=385" width="483" height="385" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Et voilà !&lt;/p&gt;
&lt;p&gt;Je me décide enfin à publier cet article…, je continuerai la suite un peu plus tard ! Au programme, personnalisation du comportement des formulaires !&lt;/p&gt;
&lt;p&gt;Wait &amp;amp; see (pas trop longtemps j’espère &lt;img class="wlEmoticon wlEmoticon-smile" style="border-style:none;" alt="Sourire" src="http://kazoumoulox.files.wordpress.com/2013/01/wlemoticon-smile.png?w=595" /&gt;) !&lt;/p&gt;
&lt;br /&gt;  &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kazoumoulox.wordpress.com/1654/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kazoumoulox.wordpress.com/1654/" /&gt;&lt;/a&gt; &lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kazoumoulox.wordpress.com&amp;#038;blog=2355550&amp;#038;post=1654&amp;#038;subd=kazoumoulox&amp;#038;ref=&amp;#038;feed=1" width="1" height="1" /&gt;</content:encoded><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://kazoumoulox.wordpress.com/2013/01/14/sp2010-replaceforms-part2/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">3</slash:comments><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://2.gravatar.com/avatar/2936677cba6281757d94cbedbcd1a561?s=96&amp;d=identicon&amp;r=G" medium="image">
			<media:title type="html">kazoumoulox</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/01/01_thumb.png" medium="image">
			<media:title type="html">01</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/01/02_thumb.png" medium="image">
			<media:title type="html">02</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2012/11/wlemoticon-winkingsmile.png" medium="image">
			<media:title type="html">Clignement d'œil</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2012/11/image_thumb.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/01/03_thumb.png" medium="image">
			<media:title type="html">03</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/01/04_thumb.png" medium="image">
			<media:title type="html">04</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/01/05_thumb.png" medium="image">
			<media:title type="html">05</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/01/06_thumb.png" medium="image">
			<media:title type="html">06</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/01/07_thumb.png" medium="image">
			<media:title type="html">07</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/01/08_thumb.png" medium="image">
			<media:title type="html">08</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/01/09_thumb.png" medium="image">
			<media:title type="html">09</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/01/10_thumb.png" medium="image">
			<media:title type="html">10</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/01/11_thumb.png" medium="image">
			<media:title type="html">11</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/01/18_thumb.png" medium="image">
			<media:title type="html">18</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/01/19_thumb.png" medium="image">
			<media:title type="html">19</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/01/wlemoticon-winkingsmile.png" medium="image">
			<media:title type="html">Clignement d'œil</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/01/20_thumb.png" medium="image">
			<media:title type="html">20</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/01/21_thumb.png" medium="image">
			<media:title type="html">21</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/01/wlemoticon-smile.png" medium="image">
			<media:title type="html">Sourire</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/01/14_thumb.png" medium="image">
			<media:title type="html">14</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/01/15_thumb.png" medium="image">
			<media:title type="html">15</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/01/16_thumb.png" medium="image">
			<media:title type="html">16</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/01/22_thumb.png" medium="image">
			<media:title type="html">22</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/01/23_thumb.png" medium="image">
			<media:title type="html">23</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2013/01/wlemoticon-smile.png" medium="image">
			<media:title type="html">Sourire</media:title>
		</media:content></item><item><guid isPermaLink="false">http://kazoumoulox.wordpress.com/?p=1662</guid><link>http://kazoumoulox.wordpress.com/2012/12/31/stats2012/</link><a10:author><a10:name>Florent Cazenave</a10:name><a10:uri>http://kazoumoulox.wordpress.com/feed</a10:uri></a10:author><category>Communication</category><title>[Kazoumoulox] – Statistiques de fin d’année 2012</title><description>La fin de l&amp;#8217;année approche&amp;#8230; elle est même déjà là ! Il est temps de faire une petite synthèse sur l&amp;#8217;année 2012 : 32 posts 84 posts en 3 ans 80Mo d&amp;#8217;images/captures d&amp;#8217;écran Meilleur jour : 24 juillet 2012, 93 visites dans la journée Article le plus consulté ce jour là :  SP2013–UserProfile Active Directory Import [&amp;#8230;]&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kazoumoulox.wordpress.com&amp;#038;blog=2355550&amp;#038;post=1662&amp;#038;subd=kazoumoulox&amp;#038;ref=&amp;#038;feed=1" width="1" height="1" /&gt;</description><pubDate>Mon, 31 Dec 2012 08:21:04 Z</pubDate><comments>http://kazoumoulox.wordpress.com/2012/12/31/stats2012/#comments</comments><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Florent Cazenave</dc:creator><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/">&lt;p&gt;La fin de l&amp;#8217;année approche&amp;#8230; elle est même déjà là !&lt;/p&gt;
&lt;p&gt;Il est temps de faire une petite synthèse sur l&amp;#8217;année 2012 :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="line-height:13px;"&gt;32 posts&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;84 posts en 3 ans&lt;/li&gt;
&lt;li&gt;80Mo d&amp;#8217;images/captures d&amp;#8217;écran&lt;/li&gt;
&lt;li&gt;Meilleur jour : 24 juillet 2012, 93 visites dans la journée&lt;/li&gt;
&lt;li&gt;Article le plus consulté ce jour là :  &lt;a id="busiest-post" href="http://kazoumoulox.wordpress.com/2012/07/23/sp2013ups-adimport/" target="_blank"&gt;SP2013–UserProfile Active Directory Import&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Articles les plus consultés en 2012 :
&lt;ol&gt;
&lt;li&gt;&lt;a href="http://kazoumoulox.wordpress.com/2011/08/15/sp2010servicesearchpowershell-part1/" target="_blank"&gt;SP2010 – Créer le service de recherche par Powershell – Part 1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://kazoumoulox.wordpress.com/2012/06/04/sp2010-vs2012-part1/" target="_blank"&gt;SharePoint 2010 &amp;amp; Visual Studio 2012–Step 1–Installation de Visual Studio 2012&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://kazoumoulox.wordpress.com/2012/06/04/sp2010-vs2012-part2/" target="_blank"&gt;SharePoint 2010 &amp;amp; Visual Studio 2012–Step 2–Nouveautés &amp;amp; Ma première définition de liste&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://kazoumoulox.wordpress.com/2012/07/18/install-sharepoint2013/" target="_blank"&gt;Installation de SharePoint Server 2013&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://kazoumoulox.wordpress.com/2012/01/17/confsearchpowershell-part2/" target="_blank"&gt;SP2010 – Configurer Search Server avec PowerShell – Part 2&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;Au total : 15 618 vues&lt;/li&gt;
&lt;li&gt;42 commentaires&lt;/li&gt;
&lt;li&gt;Vues par pays sur l&amp;#8217;année 2012 :&lt;/li&gt;
&lt;/ul&gt;
&lt;ol&gt;
&lt;ol&gt;
&lt;li&gt;France : 6966&lt;/li&gt;
&lt;li&gt;Tunisie : 432&lt;/li&gt;
&lt;li&gt;Suisse : 274&lt;/li&gt;
&lt;li&gt;Canada : 256&lt;/li&gt;
&lt;li&gt;Belgique : 218&lt;/li&gt;
&lt;/ol&gt;
&lt;/ol&gt;
&lt;p&gt;Vous pouvez consulter le report annuel ici : &lt;a href="http://kazoumoulox.wordpress.com/2012/annual-report/" target="_blank"&gt;http://kazoumoulox.wordpress.com/2012/annual-report/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Objectif pour 2013&amp;#8230; Faire mieux !!!&lt;/p&gt;
&lt;p&gt;Je vous souhaite de très bonnes fêtes à tous&amp;#8230; see you next year !&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;br /&gt;  &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kazoumoulox.wordpress.com/1662/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kazoumoulox.wordpress.com/1662/" /&gt;&lt;/a&gt; &lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kazoumoulox.wordpress.com&amp;#038;blog=2355550&amp;#038;post=1662&amp;#038;subd=kazoumoulox&amp;#038;ref=&amp;#038;feed=1" width="1" height="1" /&gt;</content:encoded><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://kazoumoulox.wordpress.com/2012/12/31/stats2012/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://2.gravatar.com/avatar/2936677cba6281757d94cbedbcd1a561?s=96&amp;d=identicon&amp;r=G" medium="image">
			<media:title type="html">kazoumoulox</media:title>
		</media:content></item><item><guid isPermaLink="false">http://kazoumoulox.wordpress.com/?p=1659</guid><link>http://kazoumoulox.wordpress.com/2012/12/19/neos-sdi-webinar-k2/</link><a10:author><a10:name>Florent Cazenave</a10:name><a10:uri>http://kazoumoulox.wordpress.com/feed</a10:uri></a10:author><category>Blackpearl</category><category>Events</category><category>K2</category><category>Neos-SDI</category><category>SharePoint</category><title>[Neos-SDI] – Webcast Microsoft + K2 : le duo gagnant pour gérer tous vos processus métiers !</title><description>Bonjour à tous. Une petite communication afin de vous informer que je participerai demain au webcast proposé par Neos-SDI, Microsoft &amp;#38; K2 concernant l&amp;#8217;intégration des technologies K2 dans l&amp;#8217;écosystème Microsoft SharePoint, principalement sur le retour d&amp;#8217;expérience. Donc RDV demain, le 20 décembre 2012 à partir de 15h online ! Pour plus de renseignements &amp;#38; inscriptions [&amp;#8230;]&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kazoumoulox.wordpress.com&amp;#038;blog=2355550&amp;#038;post=1659&amp;#038;subd=kazoumoulox&amp;#038;ref=&amp;#038;feed=1" width="1" height="1" /&gt;</description><pubDate>Wed, 19 Dec 2012 14:37:52 Z</pubDate><comments>http://kazoumoulox.wordpress.com/2012/12/19/neos-sdi-webinar-k2/#comments</comments><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Florent Cazenave</dc:creator><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/">&lt;p&gt;Bonjour à tous.&lt;/p&gt;
&lt;p&gt;Une petite communication afin de vous informer que je participerai demain au webcast proposé par Neos-SDI, Microsoft &amp;amp; K2 concernant l&amp;#8217;intégration des technologies K2 dans l&amp;#8217;écosystème Microsoft SharePoint, principalement sur le retour d&amp;#8217;expérience. Donc RDV demain, le 20 décembre 2012 à partir de 15h online !&lt;/p&gt;
&lt;p&gt;Pour plus de renseignements &amp;amp; inscriptions : &lt;a title="Webcast" href="http://www.neos-sdi.com/fr/evenements/"&gt;http://www.neos-sdi.com/fr/evenements/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.neos-sdi.com/fr/evenements/" target="_blank" rel="attachment wp-att-1660"&gt;&lt;img class="alignleft size-full wp-image-1660" alt="webcast MS K2" src="http://kazoumoulox.files.wordpress.com/2012/12/webcast-ms-k2.png?w=595"   /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;br /&gt;  &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kazoumoulox.wordpress.com/1659/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kazoumoulox.wordpress.com/1659/" /&gt;&lt;/a&gt; &lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kazoumoulox.wordpress.com&amp;#038;blog=2355550&amp;#038;post=1659&amp;#038;subd=kazoumoulox&amp;#038;ref=&amp;#038;feed=1" width="1" height="1" /&gt;</content:encoded><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://kazoumoulox.wordpress.com/2012/12/19/neos-sdi-webinar-k2/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://2.gravatar.com/avatar/2936677cba6281757d94cbedbcd1a561?s=96&amp;d=identicon&amp;r=G" medium="image">
			<media:title type="html">kazoumoulox</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2012/12/webcast-ms-k2.png" medium="image">
			<media:title type="html">webcast MS K2</media:title>
		</media:content></item><item><guid isPermaLink="false">http://kazoumoulox.wordpress.com/?p=1656</guid><link>http://kazoumoulox.wordpress.com/2012/12/06/sp2013-starter-masterpages-disponibles-en-beta/</link><a10:author><a10:name>Florent Cazenave</a10:name><a10:uri>http://kazoumoulox.wordpress.com/feed</a10:uri></a10:author><category>Branding</category><category>Développement SharePoint</category><category>Design</category><category>SharePoint</category><category>SharePoint 2013</category><title>[SP2013] – Starter MasterPages disponibles en béta</title><description>Bonjour à tous. Comme pour chaque nouvelle version de SharePoint, les starters MasterPages sont proposées gratuitement sur CodePlex =&amp;#62; par ici. A quoi vont nous servir ces MasterPages ? Tout simplement elles vont nous servir de point de départ lors de l&amp;#8217;élaboration de Design avancés pour SharePoint 2013 en l’occurrence. Elles contiennent donc tous les contrôles [&amp;#8230;]&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kazoumoulox.wordpress.com&amp;#038;blog=2355550&amp;#038;post=1656&amp;#038;subd=kazoumoulox&amp;#038;ref=&amp;#038;feed=1" width="1" height="1" /&gt;</description><pubDate>Thu, 06 Dec 2012 08:43:34 Z</pubDate><comments>http://kazoumoulox.wordpress.com/2012/12/06/sp2013-starter-masterpages-disponibles-en-beta/#comments</comments><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Florent Cazenave</dc:creator><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/">&lt;p&gt;Bonjour à tous.&lt;/p&gt;
&lt;p&gt;Comme pour chaque nouvelle version de SharePoint, les starters MasterPages sont proposées gratuitement sur CodePlex =&amp;gt; &lt;a title="Starter MasterPages SharePoint 2013" href="http://startermasterpages.codeplex.com/releases/view/97062" target="_blank"&gt;par ici&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;A quoi vont nous servir ces MasterPages ?&lt;/em&gt; Tout simplement elles vont nous servir de point de départ lors de l&amp;#8217;élaboration de Design avancés pour SharePoint 2013 en l’occurrence. Elles contiennent donc tous les contrôles nécessaires au bon fonctionnement de SharePoint, rien de plus !&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;br /&gt;  &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kazoumoulox.wordpress.com/1656/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kazoumoulox.wordpress.com/1656/" /&gt;&lt;/a&gt; &lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kazoumoulox.wordpress.com&amp;#038;blog=2355550&amp;#038;post=1656&amp;#038;subd=kazoumoulox&amp;#038;ref=&amp;#038;feed=1" width="1" height="1" /&gt;</content:encoded><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://kazoumoulox.wordpress.com/2012/12/06/sp2013-starter-masterpages-disponibles-en-beta/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://2.gravatar.com/avatar/2936677cba6281757d94cbedbcd1a561?s=96&amp;d=identicon&amp;r=G" medium="image">
			<media:title type="html">kazoumoulox</media:title>
		</media:content></item><item><guid isPermaLink="false">http://apps.lacasa.fr/?p=95</guid><link>http://apps.lacasa.fr/2012/11/mon-test-de-la-tablette-surface-partie-1-1/</link><a10:author><a10:name>Guillaume  Lacasa</a10:name><a10:uri>http://wp7.adhess.net/feed/</a10:uri></a10:author><category>Uncategorized</category><title>Mon test de la tablette Surface – partie 1.1</title><description>Je pensais continuer mon test en parlant de la partie OS et des applications Windows RT, mais après avoir testé le clavier Type, je viens de récupérer un clavier Touch (merci patrons ! ;). Je fais donc un ajout à l&amp;#8217;article précédent pour parler de ce clavier. Contrairement au clavier Type, ce clavier demande un [...]</description><pubDate>Fri, 23 Nov 2012 20:14:14 Z</pubDate><comments>http://apps.lacasa.fr/2012/11/mon-test-de-la-tablette-surface-partie-1-1/#comments</comments><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Guillaume Lacasa</dc:creator><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/">&lt;p&gt;Je pensais continuer mon test en parlant de la partie OS et des applications Windows RT, mais après avoir testé le clavier Type, je viens de récupérer un clavier Touch (merci patrons ! ;). Je fais donc un ajout à l&amp;#8217;article précédent pour parler de ce clavier.&lt;/p&gt;
&lt;p&gt;Contrairement au clavier Type, ce clavier demande un temps d&amp;#8217;adaptation avant de pouvoir taper efficacement. Dès le début, en voulant taper comme sur un vrai clavier, j&amp;#8217;ai loupé beaucoup de lettres. Après quelques minutes de pratique, ça commence à aller mieux. Le petit son que fait la tablette à chaque touche, qui peut sembler énervant au premier abord, est finalement un retour auditif qui remplace très bien le retour tactile que l&amp;#8217;on n&amp;#8217;a pas : si on loupe une lettre, ça s&amp;#8217;entend !&lt;/p&gt;
&lt;p&gt;L&amp;#8217;absence de touche physiques rend difficile la saisie sans garder les yeux sur le clavier ; et ce même si les touches ont un léger relief pour les sentir (avec les repères indispensables sur les touches F et J). Je ne l&amp;#8217;ai pas depuis assez longtemps pour être catégorique, mais je ne pense pas, même avec de l&amp;#8217;entrainement, pouvoir réussir à taper aussi vite avec ce clavier qu&amp;#8217;avec le clavier Type.&lt;/p&gt;
&lt;p&gt;Mais mis à part ces défauts, ce clavier a quand même ma préférence, pour les raisons que j&amp;#8217;ai évoquées dans l&amp;#8217;article précédent : Une fois replié, on a une surface lisse à l&amp;#8217;arrière de la Surface, c&amp;#8217;est bien plus agréable. Il est aussi plus fin et plus léger. Même si la différence n&amp;#8217;est pas énorme, elle est suffisante pour être remarquée, et sera appréciée des grands voyageurs.&lt;/p&gt;
&lt;p&gt;Pour résumer, on a donc 2 très bons claviers, compte tenu de leur taille. Ils ne sont certes pas au niveau d&amp;#8217;un vrai clavier, mais ceux-là pourront être emmenés en vacances sans problème. Quand à choisir entre les deux, voici mon conseil :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Si vous êtes amenés à rédiger régulièrement des documents ou des e-mails, préférez le clavier Type, qui offre un réel confort.&lt;/li&gt;
&lt;li&gt;Si vous utilisez principalement la Surface pour de la consultation, préférez un clavier Touch : plus léger, plus fin, et qui reste utilisable pour des besoins occasionnels (comme ce post de blog)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Voilà, cette fois c&amp;#8217;est fini pour la partie matériel, à bientôt pour la partie 2 qui parlera certainement de l&amp;#8217;OS fourni avec la tablette : Windows RT (à moins que d&amp;#8217;ici là je ne trouve autre chose à raconter)&lt;/p&gt;
</content:encoded><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://apps.lacasa.fr/2012/11/mon-test-de-la-tablette-surface-partie-1-1/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments></item><item><guid isPermaLink="false">http://apps.lacasa.fr/?p=88</guid><link>http://apps.lacasa.fr/2012/11/mon-test-de-la-tablette-surface-partie-1/</link><a10:author><a10:name>Guillaume  Lacasa</a10:name><a10:uri>http://wp7.adhess.net/feed/</a10:uri></a10:author><category>device</category><category>Surface</category><category>Windows 8</category><title>Mon test de la tablette Surface – partie 1</title><description>Pour changer sur ce blog, je ne parlerai pas aujourd&amp;#8217;hui de mes applications, mais de matériel. Je me suis offert une tablette Surface, et j&amp;#8217;ai décidé d&amp;#8217;en faire un test. Je ne suis pas journaliste, je vais juste ici vous parler de mon sentiment en tant qu&amp;#8217;utilisateur après une semaine d&amp;#8217;utilisation. Le matériel Ma tablette [...]</description><pubDate>Mon, 19 Nov 2012 20:09:05 Z</pubDate><comments>http://apps.lacasa.fr/2012/11/mon-test-de-la-tablette-surface-partie-1/#comments</comments><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Guillaume Lacasa</dc:creator><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/">&lt;p&gt;Pour changer sur ce blog, je ne parlerai pas aujourd&amp;#8217;hui de mes applications, mais de matériel. Je me suis offert une tablette Surface, et j&amp;#8217;ai décidé d&amp;#8217;en faire un test. Je ne suis pas journaliste, je vais juste ici vous parler de mon sentiment en tant qu&amp;#8217;utilisateur après une semaine d&amp;#8217;utilisation.&lt;/p&gt;
&lt;h1&gt;Le matériel&lt;/h1&gt;
&lt;p&gt;Ma tablette est la Surface 32 Go, avec un clavier Type. Elle est équipée d&amp;#8217;un port USB 2 et d&amp;#8217;un lecteur de carte Micro SD, ainsi que d&amp;#8217;une sortie HDMI.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://apps.lacasa.fr/wp-content/uploads/2012/11/111912_2007_Montestdela1.jpg" alt="" width="513" height="422" /&gt;&lt;/p&gt;
&lt;p&gt;Globalement, la tablette donne vraiment une impression de qualité. On verra sur la durée si elle est vraiment solide, mais je ne m&amp;#8217;inquiète pas trop pour ça.&lt;/p&gt;
&lt;p&gt;Le port USB et le lecteur de cartes sont pratiques pour pouvoir copier/stocker des fichiers, mais je n&amp;#8217;en ai pas vraiment eu l&amp;#8217;usage jusque là.&lt;/p&gt;
&lt;p&gt;La tablette est vendue avec 2 types de claviers (sachant que n&amp;#8217;importe quel clavier USB est aussi compatible). J&amp;#8217;ai choisi de prendre le clavier Type : un clavier avec des vraies touches, contrairement au clavier Touch qui est un plan tactile. Le clavier est attaché à la tablette à l&amp;#8217;aide d&amp;#8217;un système d&amp;#8217;aimant, et les « clac » qu&amp;#8217;on voit dans les publicités ne sont pas du tout exagérés : le clavier se fixe vraiment tout seul sans problème, et tient bien : on peut suspendre la tablette par le clavier, ça ne lache pas. Et pourtant, on le déclipse sans problème dès qu&amp;#8217;on veut l&amp;#8217;enlever. Très bien fichu.&lt;/p&gt;
&lt;p&gt;On peut utiliser le clavier en le posant sur une table, ou le replier derrière la tablette pour la tenir entre ses mains. Quand le clavier est replié, il est désactivé. On y pense pas forcément quand on achète, mais heureusement que Microsoft y a pensé pour nous &lt;span style="font-family: Wingdings;"&gt;J&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Niveau utilisation, le clavier est confortable. Il faut un temps d&amp;#8217;adaptation, dû à sa petite taille, mais on s&amp;#8217;y fait assez vite (j&amp;#8217;en profite pour signaler que je suis en train de rédiger ce test sur ce clavier, et je m&amp;#8217;en sors plutôt pas mal, même si je fais encore quelques fautes de frappe).&lt;/p&gt;
&lt;p&gt;Par contre, même si il est très bon, il n&amp;#8217;est pas adapté à mon usage, et c&amp;#8217;est mon plus gros regret dans cette tablette. J&amp;#8217;ai acheté la Surface pour pouvoir aller sur facebook, twitter, lire mes mails, tout en restant au fond de mon canapé ; et dans cette position, impossible d&amp;#8217;utiliser le clavier. Et lorsque le clavier est replié derrière la tablette, je sens les touches sous mes doigts, et c&amp;#8217;est désagréable.&lt;br /&gt;
Lorsque j&amp;#8217;ai de longs textes à taper, j&amp;#8217;ai tendance à sortir mon Vaio, qui reste quand même plus pratique pour un usage intense.&lt;br /&gt;
Au final, mon clavier me sers principalement de protection d&amp;#8217;écran quand je me ballade avec… A 120€ la protection, ça fait un peu cher.&lt;/p&gt;
&lt;p&gt;Niveau batterie, aucun problème : j&amp;#8217;ai rechargé 2 fois dans la semaine, en utilisant la tablette soir et matin, avec le wifi activé. Le chargeur est lui aussi magnétique, comme le clavier, par contre ça se clipse beaucoup moins bien : cette fois il faut bien mettre la prise en face du trou, sinon ça rentre pas.&lt;/p&gt;
&lt;p&gt;J&amp;#8217;ai fait le tour de ce que j&amp;#8217;avais à dire sur le matériel,&lt;/p&gt;
</content:encoded><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://apps.lacasa.fr/2012/11/mon-test-de-la-tablette-surface-partie-1/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments></item><item><guid isPermaLink="false">https://kazoumoulox.wordpress.com/?p=1621</guid><link>http://kazoumoulox.wordpress.com/2012/10/19/sp2010-replaceforms-part1/</link><a10:author><a10:name>Florent Cazenave</a10:name><a10:uri>http://kazoumoulox.wordpress.com/feed</a10:uri></a10:author><category>Développement SharePoint</category><category>Outils</category><category>Package</category><category>SharePoint</category><category>SharePoint 2010</category><category>SharePoint 2010 Server</category><category>SharePoint Foundation 2010</category><category>Développement</category><title>SP2010-Remplacer les formulaires – Part 1 – Template de Liste</title><description>Bonjour à tous. Cela fait maintenant quelques semaines que je n’ai pas bloggé, je profite d’une petite “accalmie” pour publier un article qui vous montrera comment déployer des formulaires NewForm.aspx; EditForm.aspx et DispForm.aspx dans SharePoint 2010 (fonctionnera également avec SharePoint 2007 &amp;#38; 2013). Bien souvent, quand je me déplace chez des clients ou que je [&amp;#8230;]&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kazoumoulox.wordpress.com&amp;#038;blog=2355550&amp;#038;post=1621&amp;#038;subd=kazoumoulox&amp;#038;ref=&amp;#038;feed=1" width="1" height="1" /&gt;</description><pubDate>Fri, 19 Oct 2012 12:47:03 Z</pubDate><comments>http://kazoumoulox.wordpress.com/2012/10/19/sp2010-replaceforms-part1/#comments</comments><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Florent Cazenave</dc:creator><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/">&lt;p&gt;Bonjour à tous.&lt;/p&gt;
&lt;p&gt;Cela fait maintenant quelques semaines que je n’ai pas bloggé, je profite d’une petite “accalmie” pour publier un article qui vous montrera comment déployer des formulaires NewForm.aspx; EditForm.aspx et DispForm.aspx dans SharePoint 2010 (fonctionnera également avec SharePoint 2007 &amp;amp; 2013).&lt;/p&gt;
&lt;p&gt;Bien souvent, quand je me déplace chez des clients ou que je reprend des développements qui ont été réalisés, je m’aperçois que ces formulaires ont été ré-implémentés et redéployés par le biais d’une solution SharePoint, ce qui est plutôt bien. Ce qui me choque en général, c’est que ces formulaires ne viennent pas remplacer “physiquement” les existants mais s’ajoutent aux formulaires existants, avec des nouveaux noms : newform2.aspx, editform2.aspx ou encore dispform2.aspx.&lt;/p&gt;
&lt;p&gt;Si des utilisateurs (malins) connaissent les url vers les formulaires natifs, ils pourront toujours les utiliser !!! Et ça, c’est vraiment pas bien !&lt;/p&gt;
&lt;p&gt;Je vais donc tenter de vous expliquer comment remplacer ces formulaires (les écraser en fait) par le biais d’une solutions SharePoint… et sans utiliser du C# =&amp;gt; Chalenge &lt;img class="wlEmoticon wlEmoticon-smile" style="border-style:none;" alt="Sourire" src="http://kazoumoulox.files.wordpress.com/2012/10/wlemoticon-smile.png?w=595" /&gt;&lt;/p&gt;
&lt;p&gt;Nous essaierons d’utiliser au maximum les API natives de SharePoint et les fichiers XML de déploiements supportés.&lt;/p&gt;
&lt;p&gt;Dans un second temps, j’aimerai également vous montrer comment remplacer/overrider le comportement natifs des contrôles dans ces formulaires… mais ça sera pour un prochain article !&lt;/p&gt;
&lt;p&gt;Première chose, se connecter sur une collection de sites, un site et créer une liste. Dans mon cas ce sera une liste custom… et même une seconde liste que je créée par avance pour la suite de l’article. Je vais également créer une colonne de type lookup (recherche d’éléments déjà présents sur le site) qui “reliera” mes deux listes… Et encore une troisième qui utilisera elle aussi une colonne de type lookup :&lt;/p&gt;
&lt;p&gt;On aura donc trois listes avec leurs attributs :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2012/10/image.png"&gt;&lt;img class="aligncenter" style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border-width:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2012/10/image_thumb.png?w=596&amp;#038;h=92" height="92" width="596" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Pays contiendra le nom du pays, sa surface et son nombre d’habitants&lt;/li&gt;
&lt;li&gt;Ville contiendra le nom de la ville, le pays d’appartenance, sa surface et son nombre d’habitants&lt;/li&gt;
&lt;li&gt;Commande contiendra le titre de la commande, le montant, le pays et la ville. Dans un premier temps on utilisera deux lookup, pointant sur chacune de listes pays &amp;amp; ville. On remplacera plus tard ce comportement par des listes déroulantes liées et pré-filtrées. On sélectionnera le pays et cela filtrera la liste des villes proposées. Mais tout cela dans un second temps.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;1/ Commençons par créer une solution avec Visual Studio 2010&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;NB : il faudra travailler un maximum en utilisant les noms internes des objets (List, Site, Web, Field) afin d’éviter les problème de renommage de ces objets (display name). On utilisera donc au maximum les staticName, internalName ou encore Name lorsqu’il seront disponibles sur ces éléments.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Commençons donc par la création de notre solution SharePoint dans Visual Studio 2010 que j’appelle DEMO1, de type “Empty SharePoint Project” :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2012/10/image16.png"&gt;&lt;img class="aligncenter" style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border-width:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2012/10/image16_thumb.png?w=508&amp;#038;h=332" height="332" width="508" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;On renseigne l’url du site de déploiement (debug) et on choisit une solution de type “Farm” :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2012/10/image1.png"&gt;&lt;img class="aligncenter" style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border-width:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2012/10/image_thumb1.png?w=416&amp;#038;h=330" height="330" width="416" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;La solution est créée, elle est vide ou presque :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2012/10/image2.png"&gt;&lt;img class="aligncenter" style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border-width:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2012/10/image_thumb2.png?w=386&amp;#038;h=265" height="265" width="386" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Nous allons ensuite faire un clic droit sur le projet et ajouter un nouvel élément (Add New Item), de type SharePoint &amp;gt; 2010 &amp;gt; List Definition et on la nomme “Pays”. Cliquer sur “Add” :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2012/10/image3.png"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border-width:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2012/10/image_thumb3.png?w=509&amp;#038;h=332" height="332" width="509" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Un assistant se lance pour nous aider à créer la structure générale de ce nouvel élément. Ainsi, on renseigne le nom d’affichage de notre modèle de liste. “Pays” dans mon cas, et on choisit le modèle “Custom List” qui est basique et conviendra très bien à notre exemple. Je choisis également de créer une instance lorsque la “Feature” déployant notre solution sera activée. On clique sur “Finish” :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2012/10/image4.png"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border-width:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2012/10/image_thumb4.png?w=409&amp;#038;h=326" height="326" width="409" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;La structure générale de la liste est créée :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2012/10/image5.png"&gt;&lt;img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border-width:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2012/10/image_thumb5.png?w=600&amp;#038;h=185" height="185" width="600" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;On observe tout de suite que Visual Studio n’a pas créé 1 seul fichier mais bien un ensemble. Dans le “Répertoire” Pays, on retrouve 2 fichiers XML :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Elements.xml : décrit à SharePoint comment déployer le modèle lors de l’ajout de ce modèle&lt;/li&gt;
&lt;li&gt;Schema.xml : décrit la structure des éléments à déployer : colonnes, vues, etc.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Dans le sous dossier ListInstance1, on retrouve également un fichier XML “Elements.xml” qui décrira comment créer une instance de cette liste à partir du modèle lors de l’activation de la Feature : nom de la liste, url, visibilité, etc.&lt;/p&gt;
&lt;p&gt;Nous allons ensuite reproduire 2 fois ces manipulations pour créer deux nouvelles listes : Ville et Commandes :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2012/10/image6.png"&gt;&lt;img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border-width:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2012/10/image_thumb6.png?w=213&amp;#038;h=354" height="354" width="213" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;J’ai pris le soin ici de renommer correctement les instances dans l’explorateur de solutions.&lt;/p&gt;
&lt;h3&gt;2/ Modifier les modèles de liste – Elements.xml&lt;/h3&gt;
&lt;p&gt;Notre structure générale est créée. Passons maintenant à l’enrichissement de ces modèles en les personnalisant, en ajoutant de nouvelle colonnes, etc.&lt;/p&gt;
&lt;h4&gt;Pays&lt;/h4&gt;
&lt;p&gt;Pour la liste pays, nous devons :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ajouter les colonnes Surface, NbrHabitants&lt;/li&gt;
&lt;li&gt;Masquer le modèle dans la galerie (les utilisateurs/power users ne pourront pas créer de nouvelles instances à partir de ce modèle)&lt;/li&gt;
&lt;li&gt;personnaliser par-ci, par-là &lt;img class="wlEmoticon wlEmoticon-smile" style="border-style:none;" alt="Sourire" src="http://kazoumoulox.files.wordpress.com/2012/10/wlemoticon-smile.png?w=595" /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Commençons par le fichier Elements.xml du modèle de liste :&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&amp;lt;ListTemplate&lt;br /&gt;
Name=&amp;#8221;Pays&amp;#8221;&lt;br /&gt;
Type=&amp;#8221;10000&amp;#8243;&lt;br /&gt;
BaseType=&amp;#8221;0&amp;#8243;&lt;br /&gt;
OnQuickLaunch=&amp;#8221;TRUE&amp;#8221;&lt;br /&gt;
SecurityBits=&amp;#8221;11&amp;#8243;&lt;br /&gt;
Sequence=&amp;#8221;410&amp;#8243;&lt;br /&gt;
DisplayName=&amp;#8221;Pays&amp;#8221;&lt;br /&gt;
Description=&amp;#8221;My List Definition&amp;#8221;&lt;br /&gt;
Image=&amp;#8221;/_layouts/images/itgen.png&amp;#8221;/&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Nous allons commencer par modifier les attributs existants :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Name=”Pays” =&amp;gt; cela me convient&lt;/li&gt;
&lt;li&gt;Type=”10000” (attention il ne faudra pas avoir un autre modèle sur la plateforme portant ce numéro)&lt;/li&gt;
&lt;li&gt;BaseType=”0” =&amp;gt; cela me convient (on aura 1 pour les bibliothèques de documents)&lt;/li&gt;
&lt;li&gt;OnQuickLaunch=&amp;#8221;TRUE&amp;#8221; =&amp;gt; Je change en FALSE, la liste n’apparaitra pas pas défaut dans la barre de navigation rapide “QuickLaunch”&lt;/li&gt;
&lt;li&gt;SecurityBits=&amp;#8221;11&amp;#8243; =&amp;gt; OK&lt;/li&gt;
&lt;li&gt;Sequence =&amp;gt; aucune importance, le modèle sera masque dans la galerie des modèles de liste (ordre de tri dans cette galerie)&lt;/li&gt;
&lt;li&gt;DisplayName=&amp;#8221;Pays&amp;#8221; =&amp;gt; OK&lt;/li&gt;
&lt;li&gt;Description=&amp;#8221;My List Definition&amp;#8221; =&amp;gt; On donne une description&lt;/li&gt;
&lt;li&gt;Image=&amp;#8221;/_layouts/images/itgen.png&amp;#8221;/ =&amp;gt; Je vais changer pour fournir une image un peu plus sympa, que je déploierais grâce à la solution dans 14/TEMPLATES/IMAGES/DEMO/monimage.png&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;On ajoutera les attributs :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Category=&amp;#8221;Custom Lists&amp;#8221; =&amp;gt; pas obligatoire&lt;/li&gt;
&lt;li&gt;DisableAttachments=&amp;#8221;TRUE&amp;#8221; =&amp;gt; on désactive les pièces jointes&lt;/li&gt;
&lt;li&gt;FolderCreation=&amp;#8221;FALSE&amp;#8221; =&amp;gt; on désactive la création de répertoires&lt;/li&gt;
&lt;li&gt;Hidden=&amp;#8221;TRUE&amp;#8221; =&amp;gt; On masque le modèle dans la galerie&lt;/li&gt;
&lt;li&gt;VersioningEnabled=&amp;#8221;FALSE&amp;#8221; =&amp;gt; on désactive le versioning&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ce qui donne :&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;ListTemplate&lt;br /&gt;
Name=&amp;#8221;Pays&amp;#8221;&lt;br /&gt;
Type=&amp;#8221;10000&amp;#8243;&lt;br /&gt;
Category=&amp;#8221;Custom Lists&amp;#8221;&lt;br /&gt;
DisableAttachments=&amp;#8221;TRUE&amp;#8221;&lt;br /&gt;
FolderCreation=&amp;#8221;FALSE&amp;#8221;&lt;br /&gt;
Hidden=&amp;#8221;TRUE&amp;#8221;&lt;br /&gt;
VersioningEnabled=&amp;#8221;FALSE&amp;#8221;&lt;br /&gt;
BaseType=&amp;#8221;0&amp;#8243;&lt;br /&gt;
OnQuickLaunch=&amp;#8221;FALSE&amp;#8221;&lt;br /&gt;
SecurityBits=&amp;#8221;11&amp;#8243;&lt;br /&gt;
Sequence=&amp;#8221;410&amp;#8243;&lt;br /&gt;
DisplayName=&amp;#8221;Pays&amp;#8221;&lt;br /&gt;
Description=&amp;#8221;Modèle de liste pays&amp;#8221;&lt;br /&gt;
Image=&amp;#8221;/_layouts/images/demo/pays.png&amp;#8221;/&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Notez également qu’il vous sera possible de “localiser” les noms (Name, Description par exemple) pour faire la traduction automatique suivant la langue du navigateur/UI.&lt;/p&gt;
&lt;h4&gt;Ville&lt;/h4&gt;
&lt;p&gt;Nous allons effectuer les mêmes manipulation sur le fichier Elements.xml du modèle de liste Ville :&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&amp;lt;ListTemplate&lt;br /&gt;
Name=&amp;#8221;Ville&amp;#8221;&lt;br /&gt;
Type=&amp;#8221;10001&amp;#8243;&lt;br /&gt;
Category=&amp;#8221;Custom Lists&amp;#8221;&lt;br /&gt;
DisableAttachments=&amp;#8221;TRUE&amp;#8221;&lt;br /&gt;
FolderCreation=&amp;#8221;FALSE&amp;#8221;&lt;br /&gt;
Hidden=&amp;#8221;TRUE&amp;#8221;&lt;br /&gt;
VersioningEnabled=&amp;#8221;FALSE&amp;#8221;&lt;br /&gt;
BaseType=&amp;#8221;0&amp;#8243;&lt;br /&gt;
OnQuickLaunch=&amp;#8221;FALSE&amp;#8221;&lt;br /&gt;
SecurityBits=&amp;#8221;11&amp;#8243;&lt;br /&gt;
Sequence=&amp;#8221;410&amp;#8243;&lt;br /&gt;
DisplayName=&amp;#8221;Ville&amp;#8221;&lt;br /&gt;
Description=&amp;#8221;Modèle de liste ville.&amp;#8221;&lt;br /&gt;
Image=&amp;#8221;/_layouts/images/demo/villes.png&amp;#8221;/&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;h4&gt;Commandes&lt;/h4&gt;
&lt;p&gt;Pour la liste commande, on reproduit les mêmes manipulations, sauf que ne masquera pas ce modèle pour pouvoir créer de multiples instances de cette liste. Nous modifierons également l’attribut OnQuickLaunch à TRUE :&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&amp;lt;ListTemplate&lt;br /&gt;
Name=&amp;#8221;Commandes&amp;#8221;&lt;br /&gt;
Type=&amp;#8221;10002&amp;#8243;&lt;br /&gt;
Category=&amp;#8221;Custom Lists&amp;#8221;&lt;br /&gt;
DisableAttachments=&amp;#8221;TRUE&amp;#8221;&lt;br /&gt;
FolderCreation=&amp;#8221;FALSE&amp;#8221;&lt;br /&gt;
VersioningEnabled=&amp;#8221;FALSE&amp;#8221;&lt;br /&gt;
BaseType=&amp;#8221;0&amp;#8243;&lt;br /&gt;
OnQuickLaunch=&amp;#8221;TRUE&amp;#8221;&lt;br /&gt;
SecurityBits=&amp;#8221;11&amp;#8243;&lt;br /&gt;
Sequence=&amp;#8221;410&amp;#8243;&lt;br /&gt;
DisplayName=&amp;#8221;Commandes&amp;#8221;&lt;br /&gt;
Description=&amp;#8221;Modèle de liste commandes.&amp;#8221;&lt;br /&gt;
Image=&amp;#8221;/_layouts/images/demo/commandes.png&amp;#8221;/&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;h3&gt;3/ Modifier les modèles de liste – Schema.xml&lt;/h3&gt;
&lt;p&gt;Maintenant, il nous faut modifier les 3 fichiers Schema.xml pour ajouter les nouvelles colonnes sur chacun de nos 3 modèles.&lt;/p&gt;
&lt;h4&gt;Pays&lt;/h4&gt;
&lt;p&gt;Dans notre liste pays, nous allons ajouter deux colonnes supplémentaires : Surface &amp;amp; NbrHabitants. Pour cela, on ouvre le fichier Schema.xml du modèle de liste Pays :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2012/10/image7.png"&gt;&lt;img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border-width:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2012/10/image_thumb7.png?w=567&amp;#038;h=271" height="271" width="567" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Dans cette structure XML, on distinguera 4 parties principales :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ContentTypes : déclaration des types de contenus associés à la liste, ici celui élément (Item)&lt;/li&gt;
&lt;li&gt;Fields : métadonnées/colonnes/champs associés à ce modèle de liste&lt;/li&gt;
&lt;li&gt;Views : Vues disponibles sur ce modèle de liste&lt;/li&gt;
&lt;li&gt;Forms : formulaires d’ajout/modification/affichage de chaque élément de cette liste&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Nous allons modifier principalement les &amp;lt;Fields /&amp;gt; pour ajouter les deux colonnes. Ici plusieurs écoles s’affrontent. Vous pouvez partir de rien, aidé par l’IntelliSense de Visual Studio ou alors créer une liste et ces colonnes dans SharePoint et utiliser SharePoint Manager 2010 pour récupérer le schéma généré par SharePoint. Pour sa facilité, je choisirai la seconde option, mais en restant vigilant sur le flot de XML généré…&lt;/p&gt;
&lt;p&gt;J’ai donc créé une liste “pays” dans SharePoint et créé les colonnes demandées.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;On prendra soin également de choisir le type de champ le plus pertinent pour nos données : texte, monnaie, nombre, recherche, etc.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2012/10/image8.png"&gt;&lt;img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border-width:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2012/10/image_thumb8.png?w=600&amp;#038;h=111" height="111" width="600" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;Voila donc le formulaire d’ajout d’un pays :&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2012/10/image411.png"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2012/10/image41_thumb.png?w=393&amp;#038;h=228" height="228" width="393" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;&lt;/h4&gt;
&lt;p&gt;Vous trouverez de quoi télécharger SharePoint Manager 2010 sur CodePlex : &lt;a href="http://spm.codeplex.com/releases/view/51438" target="_blank"&gt;SharePoint Manager 2010&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;On lance SharePoint Manager 2010, et on explore l’arborescence de nos sites jusqu’à arriver sur notre liste “Pays” :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2012/10/image10.png"&gt;&lt;img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border-width:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2012/10/image_thumb9.png?w=248&amp;#038;h=337" height="337" width="248" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;&lt;/h4&gt;
&lt;p&gt;Dans la section de droite, vous trouverez un onglet “SchemaXml” avec l’ensemble du schéma :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2012/10/image11.png"&gt;&lt;img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border-width:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2012/10/image_thumb10.png?w=600&amp;#038;h=334" height="334" width="600" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;&lt;/h4&gt;
&lt;p&gt;On repère rapidement, dans la section &amp;lt;Fields&amp;gt; que nos deux champs créés précédemment apparaissent :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;lt;Field Type=&amp;#8221;Number&amp;#8221; DisplayName=&amp;#8221;Surface&amp;#8221; Required=&amp;#8221;FALSE&amp;#8221;… /&amp;gt;&lt;/li&gt;
&lt;li&gt;&amp;lt;Field Type=&amp;#8221;Number&amp;#8221; DisplayName=&amp;#8221;NbrHabitants&amp;#8221; Required=&amp;#8221;FALSE&amp;#8221; … /&amp;gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;Ce sont ces deux nœuds XML qu’il va falloir intégrer au fichier Schema.xml. On copie donc ces deux lignes et on les colle dans Schema.xml, dans le nœud &amp;lt;Fields&amp;gt;&amp;lt;/Fields&amp;gt; :&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2012/10/image12.png"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border-width:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2012/10/image_thumb11.png?w=600&amp;#038;h=205" height="205" width="600" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Petite option supplémentaire, on peut directement ajouter ces deux champs dans les différentes vues proposées par notre modèle de liste Pays. Pour cela, dans Schema.xml, on ouvre le nœud &amp;lt;Views&amp;gt;, on y trouve deux nœuds &amp;lt;View&amp;gt;&amp;lt;/View&amp;gt;. Une des vues sera utilisée pour les terminaux de type mobiles, et l’autre pour l’affichage par défaut dans le navigateur de cette liste “Pays”. Nous allons directement modifier la vue commençant par :&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&amp;lt;View BaseViewID=&amp;#8221;1&amp;#8243; Type=&amp;#8221;HTML&amp;#8221; WebPartZoneID=&amp;#8221;Main&amp;#8221;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Et ajouter dans le sous-noeud &amp;lt;ViewFields&amp;gt; deux nouvelles lignes (en copiant/collant 1 existante) et en modifiant l’attribut Name avec les noms de noms champs. Je supprime également le Field Attachments correspondant aux pièces jointes que j’ai désactivé dans la déclaration du Template (voir Elements.xml précédent) :&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;        &amp;lt;ViewFields&amp;gt;&lt;br /&gt;
&amp;lt;FieldRef Name=&amp;#8221;LinkTitle&amp;#8221;&amp;gt;&amp;lt;/FieldRef&amp;gt;&lt;br /&gt;
&amp;lt;FieldRef Name=&amp;#8221;Surface&amp;#8221;&amp;gt;&amp;lt;/FieldRef&amp;gt;&lt;br /&gt;
&amp;lt;FieldRef Name=&amp;#8221;NbrHabitants&amp;#8221;&amp;gt;&amp;lt;/FieldRef&amp;gt;&lt;br /&gt;
&amp;lt;/ViewFields&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Attention, l’ordre a son important, les premières lignes deviendront les premières colonnes dans l’affichage. On obtiendra donc :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2012/10/image261.png"&gt;&lt;img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2012/10/image26_thumb.png?w=501&amp;#038;h=325" height="325" width="501" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Notez également le nœud &amp;lt;OrderBy&amp;gt; au dessous qui vous permettra d’ordonner votre liste sur les noms des pays, alphabétiquement. Je modifie donc :&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;        &amp;lt;Query&amp;gt;&lt;br /&gt;
&amp;lt;OrderBy&amp;gt;&lt;br /&gt;
&amp;lt;FieldRef Name=&amp;#8221;Title&amp;#8221;&amp;gt;&amp;lt;/FieldRef&amp;gt;&lt;br /&gt;
&amp;lt;/OrderBy&amp;gt;&lt;br /&gt;
&amp;lt;/Query&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;C’est tout pour ce modèle de liste. Passons maintenant à l’instance qui sera créé à partir de ce modèle. Pour cela, on se rend dans l’explorateur de solution et on ouvre le fichier Elements.xml de l’instance de la liste Pays :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2012/10/image301.png"&gt;&lt;img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2012/10/image30_thumb.png?w=228&amp;#038;h=189" height="189" width="228" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;&lt;/h4&gt;
&lt;p&gt;Dans ce dernier, nous allons encore modifier la structure XML pour paramétrer l’instance de la liste Pays qui sera automatiquement créée lors de l’activation de la feature (nous y reviendrons…).&lt;/p&gt;
&lt;p&gt;On modifie pour obtenir :&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&amp;lt;ListInstance Title=&amp;#8221;Pays&amp;#8221;&lt;br /&gt;
OnQuickLaunch=&amp;#8221;FALSE&amp;#8221;&lt;br /&gt;
TemplateType=&amp;#8221;10000&amp;#8243;&lt;br /&gt;
Url=&amp;#8221;Lists/Pays&amp;#8221;&lt;br /&gt;
Description=&amp;#8221;Liste des pays&amp;#8221;&amp;gt;&lt;br /&gt;
&amp;lt;/ListInstance&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;h4&gt;&lt;/h4&gt;
&lt;p&gt;Notez que le TemplateType est le même que celui définit dans le &amp;lt;ListTemplate&amp;gt;, c’est très important ! Sinon SharePoint ne saura pas quel modèle utiliser pour créer l’instance. Pour l’url, ma liste sera accessible à l’adresse :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://MONSERVEURSHAREPOINT/MONSITE/" rel="nofollow"&gt;http://MONSERVEURSHAREPOINT/MONSITE/&lt;/a&gt;&lt;strong&gt;Lists/pays&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Ville&lt;/h4&gt;
&lt;p&gt;Nous allons reprendre les mêmes manipulations pour ce modèle de liste. Nous allons utiliser également SharePoint Manager 2010 pour récupérer les nœuds XML des colonnes.&lt;/p&gt;
&lt;p&gt;Nous utilisons SharePoint Manager 2010, récupération des nœuds XML, copier/coller, etc.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2012/10/image15.png"&gt;&lt;img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2012/10/image_thumb12.png?w=555&amp;#038;h=371" height="371" width="555" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Dans le Schema.xml, nous  ajoutons donc :&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&amp;lt;Fields&amp;gt;&lt;br /&gt;
&amp;lt;Field Type=&amp;#8221;Number&amp;#8221; DisplayName=&amp;#8221;Surface&amp;#8221; Required=&amp;#8221;FALSE&amp;#8221;…&lt;/p&gt;
&lt;p&gt;&amp;lt;Field Type=&amp;#8221;Number&amp;#8221; DisplayName=&amp;#8221;NbrHabitants&amp;#8221; Required=&amp;#8221;FALSE&amp;#8221;…&lt;/p&gt;
&lt;p&gt;&amp;lt;Field Type=&amp;#8221;Lookup&amp;#8221; DisplayName=&amp;#8221;Pays&amp;#8221; Required=&amp;#8221;TRUE&amp;#8221;…&lt;/p&gt;
&lt;p&gt;&amp;lt;/Fields&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Jusqu’ici, nous n’avions eu que des colonnes texte ou nombre. Nous venons d’ajouter un nouveau type de colonne, le type “Lookup” (Recherche d’information déjà présentes sur le site). Ces champs permettent de référencer des données qui sont stockées dans une autre liste/bibliothèque SharePoint. Si l’on regarde les différents attributs proposés, on note :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;List=&amp;#8221;{1f675688-39f5-441d-bdb7-19f7c3dce646}&amp;#8221;&lt;/li&gt;
&lt;li&gt;ShowField=&amp;#8221;Title&amp;#8221;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;Ce sont ces deux attributs qui établissent la relation entre la liste Ville et la liste Pays et plus particulièrement la colonne “Title” de la liste Pays. Lorsque nous déploierons cette solution/feature, SharePoint ne saura pas faire le lien entre ces deux listes, parce que, tout simple le GUID de la liste Pays va être régénéré !!! Et oui… il va donc falloir remplacer ce premier attribut “List” par autre chose (et si possible pas de code C# qui recréera cette relation).&lt;/ul&gt;
&lt;ul&gt;Après un petit tour dans le SDK de SharePoint, on s’aperçoit qu’il est possible de remplacer ce GUID par l’adresse relative de cette liste : Lists/Pays. On obtient donc :&lt;/ul&gt;
&lt;blockquote&gt;&lt;p&gt;&amp;lt;Field Type=&amp;#8221;Lookup&amp;#8221; DisplayName=&amp;#8221;Pays&amp;#8221; Required=&amp;#8221;TRUE&amp;#8221; EnforceUniqueValues=&amp;#8221;FALSE&amp;#8221; List=&amp;#8221;Lists/Pays&amp;#8221; ShowField=&amp;#8221;Title&amp;#8221;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Pour la vue par défaut de cette liste, nous effectuons également les modification afin que ces champs apparaissent dans la vue :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2012/10/image17.png"&gt;&lt;img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2012/10/image_thumb13.png?w=508&amp;#038;h=317" height="317" width="508" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;C’est tout pour ce modèle de liste. Passons maintenant à l’instance qui sera créé à partir de ce modèle. Pour cela, on se rend dans l’explorateur de solution et on ouvre le fichier Elements.xml de l’instance de la liste Ville :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2012/10/image18.png"&gt;&lt;img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2012/10/image_thumb14.png?w=233&amp;#038;h=203" height="203" width="233" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;&lt;/h4&gt;
&lt;p&gt;Dans ce dernier, nous allons encore modifier la structure XML pour paramétrer l’instance de la liste Ville qui sera automatiquement créée lors de l’activation de la feature (nous y reviendrons…).&lt;/p&gt;
&lt;p&gt;On modifie pour obtenir :&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&amp;lt;ListInstance Title=&amp;#8221;Villes&amp;#8221;&lt;br /&gt;
OnQuickLaunch=&amp;#8221;FALSE&amp;#8221;&lt;br /&gt;
TemplateType=&amp;#8221;10001&amp;#8243;&lt;br /&gt;
Url=&amp;#8221;Lists/Villes&amp;#8221;&lt;br /&gt;
Description=&amp;#8221;Liste des villes.&amp;#8221;&amp;gt;&lt;br /&gt;
&amp;lt;/ListInstance&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;h4&gt;&lt;/h4&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2012/10/image19.png"&gt;&lt;img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2012/10/image_thumb15.png?w=509&amp;#038;h=219" height="219" width="509" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Notez que le TemplateType est le même que celui définit dans le &amp;lt;ListTemplate&amp;gt;, c’est très important ! Sinon SharePoint ne saura pas quel modèle utiliser pour créer l’instance. Pour l’url, ma liste sera accessible à l’adresse :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://MONSERVEURSHAREPOINT/MONSITE/" rel="nofollow"&gt;http://MONSERVEURSHAREPOINT/MONSITE/&lt;/a&gt;&lt;strong&gt;Lists/villes&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Commandes&lt;/h4&gt;
&lt;p&gt;Pour cette dernière liste, nous allons reproduire exactement les mêmes étapes mais cette fois-ci, nous aurons deux champs de type “lookup”.&lt;/p&gt;
&lt;p&gt;Dans le schema.xml nous aurons donc :&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&amp;lt;Fields&amp;gt;&lt;br /&gt;
&amp;lt;Field Type=&amp;#8221;Currency&amp;#8221; DisplayName=&amp;#8221;Montant&amp;#8221; Required=&amp;#8221;TRUE&amp;#8221; … /&amp;gt;&lt;br /&gt;
&amp;lt;Field Type=&amp;#8221;Lookup&amp;#8221; DisplayName=&amp;#8221;Pays&amp;#8221; Required=&amp;#8221;TRUE&amp;#8221; …  List=&amp;#8221;Lists/Pays&amp;#8221; ShowField=&amp;#8221;Title&amp;#8221; … /&amp;gt;&lt;br /&gt;
&amp;lt;Field Type=&amp;#8221;Lookup&amp;#8221; DisplayName=&amp;#8221;Ville&amp;#8221; Required=&amp;#8221;TRUE&amp;#8221; List=&amp;#8221;Lists/Villes&amp;#8221; ShowField=&amp;#8221;Title&amp;#8221; … /&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;/Fields&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2012/10/image20.png"&gt;&lt;img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2012/10/image_thumb16.png?w=530&amp;#038;h=208" height="208" width="530" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;C’est tout pour ce modèle de liste. Passons maintenant à l’instance qui sera créé à partir de ce modèle. Pour cela, on se rend dans l’explorateur de solution et on ouvre le fichier Elements.xml de l’instance de la liste Commandes :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2012/10/image21.png"&gt;&lt;img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2012/10/image_thumb17.png?w=234&amp;#038;h=162" height="162" width="234" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;&lt;/h4&gt;
&lt;p&gt;Dans ce dernier, nous allons encore modifier la structure XML pour paramétrer l’instance de la liste Commandes qui sera automatiquement créée lors de l’activation de la feature (nous y reviendrons…).&lt;/p&gt;
&lt;p&gt;On modifie pour obtenir :&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&amp;lt;ListInstance Title=&amp;#8221;Commandes&amp;#8221;&lt;br /&gt;
OnQuickLaunch=&amp;#8221;TRUE&amp;#8221;&lt;br /&gt;
TemplateType=&amp;#8221;10002&amp;#8243;&lt;br /&gt;
Url=&amp;#8221;Lists/Commandes&amp;#8221;&lt;br /&gt;
Description=&amp;#8221;Liste de commandes.&amp;#8221;&amp;gt;&lt;br /&gt;
&amp;lt;/ListInstance&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;h4&gt;&lt;/h4&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2012/10/image22.png"&gt;&lt;img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2012/10/image_thumb18.png?w=416&amp;#038;h=198" height="198" width="416" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Notez que le TemplateType est le même que celui définit dans le &amp;lt;ListTemplate&amp;gt;, c’est très important ! Sinon SharePoint ne saura pas quel modèle utiliser pour créer l’instance. Pour l’url, ma liste sera accessible à l’adresse :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://MONSERVEURSHAREPOINT/MONSITE/" rel="nofollow"&gt;http://MONSERVEURSHAREPOINT/MONSITE/&lt;/a&gt;&lt;strong&gt;Lists/Commandes&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Certains diront qu’il y a des attributs qui ne seront pas utilisé dans notre structure XML (Schema.xml, Elements.xml), je vous laisse vous reporter au SDK, Technet et autre pour faire le tri….&lt;/p&gt;
&lt;h3&gt;4/ Créer le package de déploiement&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;Il nous reste une étape, et pas des moindres, créer la solution, la feature qui permettra de déployer nos modèles de listes. Pour cela, Visual Studio nous aide bien (et c’est tout à son honneur quand on a connu SharePoint 2003 &amp;amp; 2007…).&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Nous allons donc nous rendre dans le répertoire Features où nous remarquons qu’une feature est déjà disponible :&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2012/10/image49.png"&gt;&lt;img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2012/10/image_thumb19.png?w=267&amp;#038;h=131" height="131" width="267" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;On double-clique, l’assistant de configuration des features apparait :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2012/10/image51.png"&gt;&lt;img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2012/10/image_thumb20.png?w=395&amp;#038;h=271" height="271" width="395" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Aucun des modèles/instances n’est ajouté à la feature. Commençons par cela, on utilise les “flèches du milieu” pour faire passer les éléments de gauche à droite :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2012/10/image53.png"&gt;&lt;img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2012/10/image_thumb21.png?w=382&amp;#038;h=242" height="242" width="382" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Nous allons également renommer la feature, donner une petite description, etc. Il vous sera également possible d’ajouter une petite icone pour distinguer plus rapidement vos features.&lt;/p&gt;
&lt;p&gt;Chose importante, je souhaiterai que mes listes Pays &amp;amp; Villes ne soient créées (leurs instances plus particulièrement) que sur le site à la racine de la collection (RootWeb). Pour cela, le plus simple et de changer le Scope (Etendue) en Site (Collection de sites).&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2012/10/image55.png"&gt;&lt;img style="background-image:none;float:none;padding-top:0;padding-left:0;margin-left:auto;display:block;padding-right:0;margin-right:auto;border:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2012/10/image_thumb22.png?w=415&amp;#038;h=122" height="122" width="415" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Et c’est tout… Bien sûr suivant le projet et les éléments qui le composent, vous choisirez peut être d’utiliser plusieurs fonctionnalités, avec des scopes différents…&lt;/p&gt;
&lt;h3&gt;5/ Le test !&lt;/h3&gt;
&lt;p&gt;C’est parti pour le test… vous pouvez utiliser F5 (mode debug… qui ne débuggera rien ici !) ou alors le clic droit sur le projet, Build, Deploy. Ce choisis la seconde option.&lt;/p&gt;
&lt;p&gt;Vous aurez peut être une erreur lors du déploiement vous disant que Pays et Pays se déploie dans le même emplacement. En effet en regardant les chemins (path) de déploiement on s’aperçoit que les instances se déploient dans le même répertoire que la définition. Je renomme dans les modèles de liste :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2012/10/image57.png"&gt;&lt;img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2012/10/image_thumb23.png?w=279&amp;#038;h=147" height="147" width="279" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Vous obtiendrez peut être cette fenêtre de warning :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2012/10/image59.png"&gt;&lt;img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2012/10/image_thumb24.png?w=366&amp;#038;h=254" height="254" width="366" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Elle vous informe tout simplement qu’une liste avec le même nom “Pays” existe deja. On coche “Do not prompt me again for these items” puis on clique sur “Resolve automatically”…&lt;/p&gt;
&lt;p&gt;Déploiement réussi :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2012/10/image37.png"&gt;&lt;img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2012/10/image_thumb25.png?w=208&amp;#038;h=157" height="157" width="208" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Il faudra également ajouter les images correspondant aux miniatures de nos listes. J’ai fait quelques petits changements dans les Elements.xml des modèles en modifiant l’attribut Image :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Image=&amp;#8221;/_layouts/images/demo/pays16x16.png&amp;#8221;/&lt;/li&gt;
&lt;li&gt;Image=&amp;#8221;/_layouts/images/demo/villes16x16.png&amp;#8221;/&lt;/li&gt;
&lt;li&gt;Image=&amp;#8221;/_layouts/images/demo/commandes16x16.png&amp;#8221;/&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Voila ce que cela donne dans le menu “View all site content” :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2012/10/image38.png"&gt;&lt;img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2012/10/image_thumb26.png?w=472&amp;#038;h=226" height="226" width="472" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Rendons nous sur chacune des liste afin de vérifier :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;La déclaration des vues/affichages (colonnes présentes, tris)&lt;/li&gt;
&lt;li&gt;La déclaration des colonnes créées&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Coté affichage, rien à signaler. Par contre si on lance le formulaire d’ajout d’un pays/ville/commandes, le formulaire ne présente que le champ Titre !!! Effectivement, c’est un comportement particulier de SharePoint voire étrange que l’on constate ici.&lt;/p&gt;
&lt;p&gt;Premier réflexe, ajouter les attributs :&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;ShowInNewForm=&amp;#8221;TRUE&amp;#8221; ShowInEditForm=&amp;#8221;TRUE&amp;#8221; ShowInDisplayForm=&amp;#8221;TRUE&amp;#8221;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Sur chacun des champs. Mais cela n’aura aucun effet. Nous aurons alors deux choix :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Recourir à un type de contenu SharePoint&lt;/li&gt;
&lt;li&gt;Supprimer les types de contenu&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;En général, je me tourne vers la première option. Mais dans notre cas, aucun intérêt de créer des types de contenu (ContentTypes) vu qu’on ne les utilisera qu’une seule fois (pour Pays &amp;amp; Ville) et qu’on ne réutilisera pas non plus la structure de Commandes (si ce n’est pour créer de nouvelles listes de commandes =&amp;gt; et pas des sous-enfants).&lt;/p&gt;
&lt;p&gt;Voila donc comment faire fonctionner tout cela. Première opération, supprimer les sections &amp;lt;ContentTypes&amp;gt;…&amp;lt;/ContentTypes&amp;gt; ou tout du moins le contenu =&amp;gt; &amp;lt;ContentTypes/&amp;gt; dans les 3 Schema.xml :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2012/10/image39.png"&gt;&lt;img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2012/10/image_thumb27.png?w=356&amp;#038;h=206" height="206" width="356" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;On sauvegarde le tout et on redéploie… et là, magique :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2012/10/image40.png"&gt;&lt;img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2012/10/image_thumb28.png?w=511&amp;#038;h=289" height="289" width="511" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;5/ Charger des données&lt;/h3&gt;
&lt;p&gt;Une petite dernière chose, avant de passer à la suite… Les listes étant créées, elles seront supprimées, recréées à chaque déploiement depuis Visual Studio. Pour ne pas perdre trop de temps à se recréer un jeu de test, nous pouvons remplir ces listes directement depuis leur définition. C’est ce qu’on appelle les RowData.&lt;/p&gt;
&lt;p&gt;Nous allons commencer par ajouter des données dans Pays puis Ville. Cette méthode est aussi très pratique pour remplir automatiquement des listes de paramètres stockées dans SharePoint (ici notre liste de Pays ne change pas tous les jours…). Voila comment faire.&lt;/p&gt;
&lt;p&gt;Dans chacun des fichiers Elements.xml des instances de nos listes, nous allons ajouter un bloc de XML :&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&amp;lt;ListInstance Title=&amp;#8221;Pays&amp;#8221;&lt;br /&gt;
OnQuickLaunch=&amp;#8221;FALSE&amp;#8221;&lt;br /&gt;
TemplateType=&amp;#8221;10000&amp;#8243;&lt;br /&gt;
Url=&amp;#8221;Lists/Pays&amp;#8221;&lt;br /&gt;
Description=&amp;#8221;Liste des pays&amp;#8221;&amp;gt;&lt;br /&gt;
&amp;lt;Data&amp;gt;&lt;br /&gt;
&amp;lt;Rows&amp;gt;&lt;br /&gt;
&amp;lt;Row&amp;gt;&lt;br /&gt;
&amp;lt;Field Name=&amp;#8221;"&amp;gt;&amp;lt;/Field&amp;gt;&lt;br /&gt;
&amp;lt;/Row&amp;gt;&lt;br /&gt;
&amp;lt;/Rows&amp;gt;&lt;br /&gt;
&amp;lt;/Data&amp;gt;&lt;br /&gt;
&amp;lt;/ListInstance&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;En résumé, les nœuds XML :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Data : ensemble des données à ajouter&lt;/li&gt;
&lt;li&gt;Rows : collection des lignes (ensemble d’enregistrements)&lt;/li&gt;
&lt;li&gt;Row : 1 ligne d’enregistrement&lt;/li&gt;
&lt;li&gt;Field : champ à valoriser pour l’enregistrement courant.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Donc pour un pays, on aurait (données recueillies sur &lt;a href="http://www.france.fr"&gt;www.france.fr&lt;/a&gt;) :&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;    &amp;lt;Data&amp;gt;&lt;br /&gt;
&amp;lt;Rows&amp;gt;&lt;br /&gt;
&amp;lt;Row&amp;gt;&lt;br /&gt;
&amp;lt;Field Name=&amp;#8221;Title&amp;#8221;&amp;gt;France&amp;lt;/Field&amp;gt;&lt;br /&gt;
&amp;lt;Field Name=&amp;#8221;Surface&amp;#8221;&amp;gt;543965&amp;lt;/Field&amp;gt;&lt;br /&gt;
&amp;lt;Field Name=&amp;#8221;NbrHabitants&amp;#8221;&amp;gt;65350000&amp;lt;/Field&amp;gt;&lt;br /&gt;
&amp;lt;/Row&amp;gt;&lt;br /&gt;
&amp;lt;/Rows&amp;gt;&lt;br /&gt;
&amp;lt;/Data&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;En on recréée une structure Row pour chacun des pays. J’en ajouterai une petite dizaine pour les tests.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2012/10/image42.png"&gt;&lt;img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2012/10/image_thumb29.png?w=574&amp;#038;h=113" height="113" width="574" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;On remarque tout de suite que les pays sont triés sur le nom (alphabétique) alors dans le Schema.xml :&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;        &amp;lt;Row&amp;gt;&lt;br /&gt;
&amp;lt;Field Name=&amp;#8221;Title&amp;#8221;&amp;gt;France&amp;lt;/Field&amp;gt;&lt;br /&gt;
&amp;lt;Field Name=&amp;#8221;Surface&amp;#8221;&amp;gt;543965&amp;lt;/Field&amp;gt;&lt;br /&gt;
&amp;lt;Field Name=&amp;#8221;NbrHabitants&amp;#8221;&amp;gt;65350000&amp;lt;/Field&amp;gt;&lt;br /&gt;
&amp;lt;/Row&amp;gt;&lt;br /&gt;
&amp;lt;Row&amp;gt;&lt;br /&gt;
&amp;lt;Field Name=&amp;#8221;Title&amp;#8221;&amp;gt;Espagne&amp;lt;/Field&amp;gt;&lt;br /&gt;
&amp;lt;Field Name=&amp;#8221;Surface&amp;#8221;&amp;gt;505911&amp;lt;/Field&amp;gt;&lt;br /&gt;
&amp;lt;Field Name=&amp;#8221;NbrHabitants&amp;#8221;&amp;gt;46754784&amp;lt;/Field&amp;gt;&lt;br /&gt;
&amp;lt;/Row&amp;gt;&lt;br /&gt;
&amp;lt;Row&amp;gt;&lt;br /&gt;
&amp;lt;Field Name=&amp;#8221;Title&amp;#8221;&amp;gt;Angleterre&amp;lt;/Field&amp;gt;&lt;br /&gt;
&amp;lt;Field Name=&amp;#8221;Surface&amp;#8221;&amp;gt;130395&amp;lt;/Field&amp;gt;&lt;br /&gt;
&amp;lt;Field Name=&amp;#8221;NbrHabitants&amp;#8221;&amp;gt;52234000&amp;lt;/Field&amp;gt;&lt;br /&gt;
&amp;lt;/Row&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Nous allons faire la même chose avec les Villes. Petite différence, le champ lookup qui pointe sur la liste des Pays… Et c’est donc un peu différent. En effet, les champs lookups doivent être renseigné avec ID;#Valeur :&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;         &amp;lt;Row&amp;gt;&lt;br /&gt;
&amp;lt;Field Name=&amp;#8221;Title&amp;#8221;&amp;gt;Marseille&amp;lt;/Field&amp;gt;&lt;br /&gt;
&amp;lt;Field Name=&amp;#8221;Surface&amp;#8221;&amp;gt;240&amp;lt;/Field&amp;gt;&lt;br /&gt;
&amp;lt;Field Name=&amp;#8221;NbrHabitants&amp;#8221;&amp;gt;850602&amp;lt;/Field&amp;gt;&lt;br /&gt;
&amp;lt;Field Name=&amp;#8221;Pays&amp;#8221;&amp;gt;1;#France&amp;lt;/Field&amp;gt;&lt;br /&gt;
&amp;lt;/Row&amp;gt;&lt;br /&gt;
&amp;lt;Row&amp;gt;&lt;br /&gt;
&amp;lt;Field Name=&amp;#8221;Title&amp;#8221;&amp;gt;Madrid&amp;lt;/Field&amp;gt;&lt;br /&gt;
&amp;lt;Field Name=&amp;#8221;Surface&amp;#8221;&amp;gt;608&amp;lt;/Field&amp;gt;&lt;br /&gt;
&amp;lt;Field Name=&amp;#8221;NbrHabitants&amp;#8221;&amp;gt;3413271&amp;lt;/Field&amp;gt;&lt;br /&gt;
&amp;lt;Field Name=&amp;#8221;Pays&amp;#8221;&amp;gt;2;#Espagne&amp;lt;/Field&amp;gt;&lt;br /&gt;
&amp;lt;/Row&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Attention, l’ID et celui dans SharePoint (et donc dans l’ordre d’insertion qui correspond à l’ordre dans l’Element.xml de la liste Pays !)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2012/10/image43.png"&gt;&lt;img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2012/10/image_thumb30.png?w=597&amp;#038;h=207" height="207" width="597" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Et voilà ! Puisque les listes sont supprimées à chaque déploiement, nous n’auront pas besoin de remplacer les ID dans les fichiers Elements.xml.&lt;/p&gt;
&lt;p&gt;Dernière vérification, la liste de commandes est-elle bien renseignée ?? Bien sûr que oui !&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazoumoulox.files.wordpress.com/2012/10/image44.png"&gt;&lt;img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border:0;" title="image" alt="image" src="http://kazoumoulox.files.wordpress.com/2012/10/image_thumb31.png?w=600&amp;#038;h=374" height="374" width="600" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Par contre on voit tout de suite que Barcelone n’est pas en Allemagne… &lt;img class="wlEmoticon wlEmoticon-winkingsmile" style="border-style:none;" alt="Clignement d'œil" src="http://kazoumoulox.files.wordpress.com/2012/10/wlemoticon-winkingsmile.png?w=595" /&gt;&lt;/p&gt;
&lt;p&gt;Et donc… prochain article… ré-implémenter le comportement de ce formulaire… et faire communiquer nos deux liste déroulantes !&lt;/p&gt;
&lt;br /&gt;  &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kazoumoulox.wordpress.com/1621/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kazoumoulox.wordpress.com/1621/" /&gt;&lt;/a&gt; &lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kazoumoulox.wordpress.com&amp;#038;blog=2355550&amp;#038;post=1621&amp;#038;subd=kazoumoulox&amp;#038;ref=&amp;#038;feed=1" width="1" height="1" /&gt;</content:encoded><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://kazoumoulox.wordpress.com/2012/10/19/sp2010-replaceforms-part1/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">3</slash:comments><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://2.gravatar.com/avatar/2936677cba6281757d94cbedbcd1a561?s=96&amp;d=identicon&amp;r=G" medium="image">
			<media:title type="html">kazoumoulox</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2012/10/wlemoticon-smile.png" medium="image">
			<media:title type="html">Sourire</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2012/10/image_thumb.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2012/10/image16_thumb.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2012/10/image_thumb1.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2012/10/image_thumb2.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2012/10/image_thumb3.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2012/10/image_thumb4.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2012/10/image_thumb5.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2012/10/image_thumb6.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2012/10/wlemoticon-smile.png" medium="image">
			<media:title type="html">Sourire</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2012/10/image_thumb7.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2012/10/image_thumb8.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2012/10/image41_thumb.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2012/10/image_thumb9.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2012/10/image_thumb10.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2012/10/image_thumb11.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2012/10/image26_thumb.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2012/10/image30_thumb.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2012/10/image_thumb12.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2012/10/image_thumb13.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2012/10/image_thumb14.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2012/10/image_thumb15.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2012/10/image_thumb16.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2012/10/image_thumb17.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2012/10/image_thumb18.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2012/10/image_thumb19.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2012/10/image_thumb20.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2012/10/image_thumb21.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2012/10/image_thumb22.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2012/10/image_thumb23.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2012/10/image_thumb24.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2012/10/image_thumb25.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2012/10/image_thumb26.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2012/10/image_thumb27.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2012/10/image_thumb28.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2012/10/image_thumb29.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2012/10/image_thumb30.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2012/10/image_thumb31.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://kazoumoulox.files.wordpress.com/2012/10/wlemoticon-winkingsmile.png" medium="image">
			<media:title type="html">Clignement d'œil</media:title>
		</media:content></item><item><guid isPermaLink="false">http://www.ocourtois.fr/post/33771115088</guid><link>http://feedproxy.google.com/~r/ocourtoistech/~3/smSSo_hyuFE/33771115088</link><a10:author><a10:name>Olivier Courtois</a10:name><a10:uri>http://feeds.feedburner.com/ocourtoistech</a10:uri></a10:author><title>StoreTrek ou la fausse bonne idée !</title><description>&lt;p&gt;Vous avez peut être vu hier la news concernant cette &amp;#8220;nouvelle&amp;#8221; façon de faire ses courses intitulée &lt;strong&gt;StoreTrek&lt;/strong&gt;. La technologie est développée par &lt;a rel="nofollow" target="_blank" href="http://www.keytree.co.uk/"&gt;KeyTree&lt;/a&gt; et n&amp;#8217;est pas sans rappeler l&amp;#8217;initiative de &lt;a rel="nofollow" target="_blank" href="http://www.ocourtois.fr/post/7488212632/comment-une-chaine-de-magasins-fait-plus-dargent-avec"&gt;Tesco&lt;/a&gt;. Tout de suite la &lt;a rel="nofollow" target="_blank" href="http://www.youtube.com/watch?v=KnXxOCUgQAY"&gt;vidéo&lt;/a&gt; : &lt;/p&gt;
&lt;p&gt;&lt;/p&gt; 
&lt;p&gt;Comme vous pouvez le voir le principe est d&amp;#8217;être chez soi, devant sa télé et son kinect pour faire ses courses. L&amp;#8217;objectif annoncé est de proposer une expérience immersive aux consommateurs&amp;#8230; et c&amp;#8217;est là que pour moi &lt;strong&gt;l&amp;#8217;expérience tourne au cauchemar&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Qui a envie d&amp;#8217;une expérience immersive pour faire ses courses&amp;#160;?&lt;/strong&gt; Pour moi c&amp;#8217;est du même niveau que le frigo qui se réapprovisionne automatiquement, la &lt;strong&gt;solution proposée corrige un problème inexistant&lt;/strong&gt;. En effet selon mon rapide sondage avec moi-même il y&amp;#8217;a un trait de caractère qui définit assez clairement les gens qui fuient les supermarchés&amp;#160;: la volonté de ne pas perdre de temps. Or ici la solution semble assez peu efficace de ce point de vue-là&amp;#160;: la navigation est réalisée via Kinect, les produits semblent avoir la même taille (votre baril de lessive a la même taille que le flacon d&amp;#8217;herbes de Provence), etc. Je dirais même plus que son principe sous-jacent consiste à mimer les rayons d&amp;#8217;un supermarché, ce qui revient donc à retourner au supermarché mais avec le ridicule en plus ^^ &lt;/p&gt;
&lt;p&gt;Vous l&amp;#8217;aurez compris je trouve cette expérience techniquement séduisante mais son utilité ainsi que sa mise en oeuvre me semble toutes relatives. Par contre j&amp;#8217;&lt;strong&gt;encourage&lt;/strong&gt; ce type d&amp;#8217;agences et de personnes à toujours &lt;strong&gt;tenter de challenger le statut quo&lt;/strong&gt;, nous en avons besoin. Ici le début d&amp;#8217;idée intéressante est la possibilité d&amp;#8217;avoir un rayon &amp;#8220;ce que vous aimerez&amp;#8221; comme Amazon mais cela reste bien pauvre&amp;#8230; &lt;/p&gt;
&lt;p&gt;D&amp;#8217;autres points de vue &lt;a rel="nofollow" target="_blank" href="http://www.wisibility.com/post/2012/10/16/L-hypermarch%C3%A9-du-Futur-store-trek"&gt;ici&lt;/a&gt; et &lt;a rel="nofollow" target="_blank" href="http://www.richcommerce.fr/2012/10/16/tesco-experimente-lhypermarche-du-futur-avec-une-interface-en-3d/"&gt;là&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ocourtoistech/~4/smSSo_hyuFE" height="1" width="1"/&gt;</description><pubDate>Wed, 17 Oct 2012 13:31:17 Z</pubDate><feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://www.ocourtois.fr/post/33771115088</feedburner:origLink></item><item><guid isPermaLink="false">http://www.ocourtois.fr/post/32865905492</guid><link>http://feedproxy.google.com/~r/ocourtoistech/~3/SN5N_LnYWO4/32865905492</link><a10:author><a10:name>Olivier Courtois</a10:name><a10:uri>http://feeds.feedburner.com/ocourtoistech</a10:uri></a10:author><title>En faveur de l'observation des utilisateurs</title><description>&lt;p&gt;Lorsque j&amp;#8217;accompagne mes clients ou que je forme leurs équipes le plus souvent dans la démarche de &lt;a rel="nofollow" target="_blank" href="http://www.ergolab.net/articles/conception-centree-utilisateur.php"&gt;Conception Centrée Utilisateur&lt;/a&gt; le même point leurs semble compliqué&amp;#8230; &lt;strong&gt;rencontrer de véritables utilisateurs&lt;/strong&gt;. &lt;/p&gt;
&lt;p&gt;Or comme le nom de &lt;a rel="nofollow" target="_blank" href="http://www.ergolab.net/articles/conception-centree-utilisateur.php"&gt;la démarche&lt;/a&gt; le rappelle nous sommes bien en train de concevoir des systèmes devant être utilisés par des personnes et non des développeurs ^^. Blague à part cela signifie qu&amp;#8217;une rencontre est toujours intéressante et pleine d&amp;#8217;enseignement. Prenons l&amp;#8217;exemple d&amp;#8217;un outil métier, nous pourrons comprendre de manière non exhaustive : &lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;strong&gt;L&amp;#8217;environnement de travail dans lequel l&amp;#8217;utilisateur évolue&lt;/strong&gt;. Est-il bruyant&amp;#160;? Est-ce un open space ou un bout de table&amp;#160;? La personne est-elle toujours au même bureau ou mobile&amp;#160;? La personne est-elle souvent &lt;span&gt;interrompue &lt;/span&gt;? &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;La méthode de travail de la personne&lt;/strong&gt;. Prend-elle des notes papiers&amp;#160;? Utilise-t-elle simultanément d&amp;#8217;autres outils informatiques&amp;#160;? Tire-t-elle parti de sa mémoire musculaire, positionne-t-elle des éléments&amp;#160;? &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Le niveau de connaissance de l&amp;#8217;utilisateur&lt;/strong&gt;. Est-elle à l&amp;#8217;aise avec de multiples fenêtres&amp;#160;?  Personnalise-t-elle son interface&amp;#160;? Connait-elle des procédés comme le copier-coller ou les raccourcis claviers&amp;#160;? &lt;/li&gt;
&lt;li&gt;Et finalement tout un tas d&amp;#8217;autres choses que vous remarquerez une fois sur place. Et plus vous exercerez ce type d&amp;#8217;activité plus vous deviendrez un &amp;#8220;&lt;strong&gt;anthropologue du digital&lt;/strong&gt;&amp;#8221;. &lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://www.youtube.com/watch?v=jajduxPD6H4"&gt;&lt;img src="http://media.tumblr.com/tumblr_mbd1tcvVhJ1qc26ac.jpg"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;J&amp;#8217;aborde aussi souvent ce sujet en parlant du travail qu&amp;#8217;a réalisé un certain &lt;a rel="nofollow" target="_blank" href="http://dschool.stanford.edu/student/doug-dietz/"&gt;Doug Dietz&lt;/a&gt;. Il est designer chez GE Healthcare et plus particulièrement d&amp;#8217;IRM. Il raconte lors de son intervention TEDx comment après avoir conçu une nouvelle version il a été la voir in situ. Et là quelle ne fut pas surprise de voir l&amp;#8217;angoisse que l&amp;#8217;équipement si travaillé générait chez les enfants!! Son témoignage est poignant car nous ressentons très clairement la détresse dans laquelle Doug s&amp;#8217;est retrouvée, impuissant face à ce constat trop tardif. Evidemment il a obtenu de créer une nouvelle version de l&amp;#8217;appareil et tout ceci a commencé par des observations. Cette nouvelle opportunité a permis à GE Healthcare et Doug de concevoir les premiers IRM adaptés aux enfants, qui racontent une histoire&amp;#8230; La première version propose ainsi à l&amp;#8217;enfant d&amp;#8217;explorer les fonds marins dans un sous-marin jaune (yellow submarine ^^). Regardez plutôt l&amp;#8217;avant/après&amp;#160;:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_mbd5fcAVNZ1qc26ac.jpg"/&gt;&lt;/p&gt;
&lt;p&gt;Le lien de la vidéo ou la vidéo ci-dessous : &lt;/p&gt;
&lt;p&gt;&lt;/p&gt; 
&lt;p&gt;En espérant que vous décidiez d&amp;#8217;observer systématiquement vos utilisateurs :D&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ocourtoistech/~4/SN5N_LnYWO4" height="1" width="1"/&gt;</description><pubDate>Thu, 04 Oct 2012 10:18:30 Z</pubDate><feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://www.ocourtois.fr/post/32865905492</feedburner:origLink></item><item><guid isPermaLink="false">http://kazoumoulox.wordpress.com/?p=1536</guid><link>http://kazoumoulox.wordpress.com/2012/09/17/cest-la-rentree/</link><a10:author><a10:name>Florent Cazenave</a10:name><a10:uri>http://kazoumoulox.wordpress.com/feed</a10:uri></a10:author><category>Communication</category><category>Neos-SDI</category><title>C’est la rentrée…</title><description>Après quelques jours de vacances, c&amp;#8217;est la rentrée ! Et pour cette rentrée, un petit peu de changement !!! En effet, je viens d&amp;#8217;intégrer l&amp;#8217;équipe de Neos-SDI qui à ouvert une nouvelle agence à Toulouse en début d&amp;#8217;année 2012. Je ne referai pas une présentation de la société mais je vous invite à visiter le [&amp;#8230;]&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kazoumoulox.wordpress.com&amp;#038;blog=2355550&amp;#038;post=1536&amp;#038;subd=kazoumoulox&amp;#038;ref=&amp;#038;feed=1" width="1" height="1" /&gt;</description><pubDate>Mon, 17 Sep 2012 20:57:30 Z</pubDate><comments>http://kazoumoulox.wordpress.com/2012/09/17/cest-la-rentree/#comments</comments><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Florent Cazenave</dc:creator><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/">&lt;p&gt;Après quelques jours de vacances, c&amp;#8217;est la rentrée ! Et pour cette rentrée, un petit peu de changement !!! En effet, je viens d&amp;#8217;intégrer l&amp;#8217;équipe de &lt;a title="Neos-SDI" href="http://www.neos-sdi.com/fr/" target="_blank"&gt;Neos-SDI&lt;/a&gt; qui à ouvert une nouvelle agence à Toulouse en début d&amp;#8217;année 2012. Je ne referai pas une présentation de la société mais je vous invite à visiter le site : &lt;a title="Neos-SDI" href="http://www.neos-sdi.com/fr/" target="_blank"&gt;http://www.neos-sdi.com/fr/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;C&amp;#8217;est donc une nouvelle aventure qui commence pour moi. Au programme, du SharePoint mais surtout&amp;#8230; du SharePoint ! Mais bien sûr je continuerai à alimenter ce blog !&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;A bientôt !&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;br /&gt;  &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kazoumoulox.wordpress.com/1536/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kazoumoulox.wordpress.com/1536/" /&gt;&lt;/a&gt; &lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kazoumoulox.wordpress.com&amp;#038;blog=2355550&amp;#038;post=1536&amp;#038;subd=kazoumoulox&amp;#038;ref=&amp;#038;feed=1" width="1" height="1" /&gt;</content:encoded><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://kazoumoulox.wordpress.com/2012/09/17/cest-la-rentree/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><media:content xmlns:media="http://search.yahoo.com/mrss/" url="http://2.gravatar.com/avatar/2936677cba6281757d94cbedbcd1a561?s=96&amp;d=identicon&amp;r=G" medium="image">
			<media:title type="html">kazoumoulox</media:title>
		</media:content></item><item><guid isPermaLink="false">http://www.ocourtois.fr/post/31519186378</guid><link>http://feedproxy.google.com/~r/ocourtoistech/~3/cMRgE3cG--M/31519186378</link><a10:author><a10:name>Olivier Courtois</a10:name><a10:uri>http://feeds.feedburner.com/ocourtoistech</a10:uri></a10:author><title>Un peu de l'histoire derrière ModernUI</title><description>&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_macaj7VFJ91qc26ac.jpg"/&gt;&lt;/p&gt;
&lt;p&gt;Pour tous les amoureux de design et d&amp;#8217;interfaces je vous invite à lire &lt;a rel="nofollow" target="_blank" href="http://www.fastcodesign.com/1670705/microsoft-new-design-strategy#1"&gt;un morceau de l&amp;#8217;histoire&lt;/a&gt; à l&amp;#8217;origine du langage visuel &amp;#8220;&lt;strike&gt;&lt;strong&gt;Metro&lt;/strong&gt;&lt;/strike&gt;&amp;#8221; maintenant appelé &amp;#8220;&lt;strong&gt;Modern UI&lt;/strong&gt;&amp;#8221;. Ce nouveau paradigme impactera nos vies futures tant le nombre de Windows est important&amp;#8230; &lt;/p&gt;
&lt;p&gt;Merci à FastCo.Design donc. &amp;#8220;&lt;a rel="nofollow" target="_blank" href="http://www.fastcodesign.com/1670705/microsoft-new-design-strategy#1"&gt;Windows 8: the boldest, biggest redesign in Microsoft&amp;#8217;s history&lt;/a&gt;&amp;#8221;. &lt;/p&gt;
&lt;p&gt;Enfin pour revoir et apprendre à penser vos applications pour Windows 8&amp;#160;:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;a rel="nofollow" target="_blank" href="http://www.ocourtois.fr/post/14556967612/une-introduction-au-design-metro-par-smashingmagazine"&gt;Une introduction au design Metro par SmashingMagazine&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel="nofollow" target="_blank" href="http://www.ocourtois.fr/post/10270711638/le-metro-style-de-windows-8-explique"&gt;Le “Metro style” de Windows 8 expliqué &lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/ocourtoistech/~4/cMRgE3cG--M" height="1" width="1"/&gt;</description><pubDate>Fri, 14 Sep 2012 12:26:00 Z</pubDate><feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://www.ocourtois.fr/post/31519186378</feedburner:origLink></item><item><guid isPermaLink="false">http://www.dotmim.com/?p=966</guid><link>http://www.dotmim.com/2012/09/14/windows-8-winrt-sqlite/</link><a10:author><a10:name>Sebastien Pertus</a10:name><a10:uri>http://www.dotmim.com/feed/</a10:uri></a10:author><category>Développement</category><category>Sql Server</category><category>SQLite</category><category>WinRT</category><title>Windows 8 WinRT SQLite</title><description>Depuis Windows 8 Preview, nous avons accès à une base de données déployable et interne, facile d’accès directement dans votre package WinRT.
On aurait pu s’attendre à voir débarquer SQL Server Compact, mais c’est bien SQLite qui sera supporté et accessible dans Windows 8.
Nous allons voir ici  [...]</description><pubDate>Fri, 14 Sep 2012 08:52:49 Z</pubDate><comments>http://www.dotmim.com/2012/09/14/windows-8-winrt-sqlite/#comments</comments><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mimetis</dc:creator><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/">&lt;p&gt;Depuis Windows 8 Preview, nous avons accès à une base de données déployable et interne, facile d’accès directement dans votre package WinRT.&lt;/p&gt;
&lt;p&gt;On aurait pu s’attendre à voir débarquer SQL Server Compact, mais c’est bien SQLite qui sera supporté et accessible dans Windows 8.&lt;/p&gt;
&lt;p&gt;Nous allons voir ici comment installer et travailler avec ce petit moteur de base de données extrêmement connu dans le monde du web notamment.&lt;/p&gt;
&lt;h2&gt;Installation&lt;/h2&gt;
&lt;p&gt;Cette première partie d’installation est inspirée d’un article écrit par &lt;a href="http://timheuer.com/blog/"&gt;Tim Heuer&lt;/a&gt;, que vous pouvez retrouver sur son blog, &lt;a href="http://timheuer.com/blog/archive/2012/08/07/updated-how-to-using-sqlite-from-windows-store-apps.aspx"&gt;in english in the text&lt;/a&gt; &lt;img class="wlEmoticon wlEmoticon-smile" style="border-style: none;" src="http://www.dotmim.com/wp-content/uploads/2012/09/wlEmoticon-smile.png" alt="Sourire" /&gt;&lt;/p&gt;
&lt;p&gt;L’installation de SQLite se fait directement depuis le menu TOOLS de Visual Studio et le sous-menu Extensions And Updates.&lt;/p&gt;
&lt;p&gt;Par ce biais, vous aurez accès plus tard directement aux mises à jour de SQLite, sans avoir à vous en préoccuper. Deuxième chose, ce package est capable de correctement cibler votre configuration, que ce soit x86, x64 ou ARM.&lt;/p&gt;
&lt;table width="400" border="0" cellspacing="0" cellpadding="2"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="400"&gt;&lt;a href="http://www.dotmim.com/wp-content/uploads/2012/09/Tools1.png"&gt;&lt;img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border-width: 0px;" title="Tools" src="http://www.dotmim.com/wp-content/uploads/2012/09/Tools_thumb1.png" alt="Tools" width="212" height="244" border="0" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Faites une recherche sur SQLite, vous devriez trouver facilement l&amp;rsquo;extension, qui s’installe via VSIX :&lt;/p&gt;
&lt;table width="400" border="0" cellspacing="0" cellpadding="2"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="133"&gt;&lt;a href="http://www.dotmim.com/wp-content/uploads/2012/09/ExtensionsAndUpdates.png"&gt;&lt;img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="ExtensionsAndUpdates" src="http://www.dotmim.com/wp-content/uploads/2012/09/ExtensionsAndUpdates_thumb.png" alt="ExtensionsAndUpdates" width="244" height="170" border="0" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td valign="top" width="133"&gt;&lt;a href="http://www.dotmim.com/wp-content/uploads/2012/09/VSIX-Installer.png"&gt;&lt;img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="VSIX Installer" src="http://www.dotmim.com/wp-content/uploads/2012/09/VSIX-Installer_thumb.png" alt="VSIX Installer" width="244" height="198" border="0" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td valign="top" width="133"&gt;&lt;a href="http://www.dotmim.com/wp-content/uploads/2012/09/VSIX-Installer-2.png"&gt;&lt;img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="VSIX Installer 2" src="http://www.dotmim.com/wp-content/uploads/2012/09/VSIX-Installer-2_thumb.png" alt="VSIX Installer 2" width="244" height="195" border="0" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Il ne reste plus qu’à :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Créer un projet de type Windows Store (XAML C# dans mon cas)&lt;/li&gt;
&lt;li&gt;Référencer l’assembly SQLite&lt;/li&gt;
&lt;li&gt;Référencer le C++ runtime. (Obligatoire si la machine cible ne le possède pas, trés rare, et qui potentiellement vous ferait échouer la validation de votre apps)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;table width="400" border="0" cellspacing="0" cellpadding="2"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="400"&gt;&lt;a href="http://www.dotmim.com/wp-content/uploads/2012/09/AddReference1.png"&gt;&lt;img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border-width: 0px;" title="AddReference" src="http://www.dotmim.com/wp-content/uploads/2012/09/AddReference_thumb1.png" alt="AddReference" width="644" height="275" border="0" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Avant d’aller plus loin, si vous lancez la compilation de votre projet, vous risquez fortement d’avoir deux erreurs, pour le moins explicite:&lt;/p&gt;
&lt;table width="400" border="0" cellspacing="0" cellpadding="2"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="400"&gt;&lt;a href="http://www.dotmim.com/wp-content/uploads/2012/09/ErrorBuildOnAnyCpu1.png"&gt;&lt;img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border-width: 0px;" title="ErrorBuildOnAnyCpu" src="http://www.dotmim.com/wp-content/uploads/2012/09/ErrorBuildOnAnyCpu_thumb1.png" alt="ErrorBuildOnAnyCpu" width="644" height="85" border="0" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Autant SQLite va savoir déployer la bonne dll suivant votre configuration, autant il vous faudra quand même avoir en target la bonne version (x86, x64 ou ARM)&lt;/p&gt;
&lt;p&gt;Exit donc la configuration si pratique ANY CPU. Dommage …&lt;/p&gt;
&lt;h3&gt;Où en sommes nous ?&lt;/h3&gt;
&lt;p&gt;Nous avons installé SQLite, tout du moins le moteur et la runtime, compatible avec WinRT.&lt;/p&gt;
&lt;p&gt;Il nous faut maintenant un Framework d’accès à SQLite. Il en existe plusieurs et j’ai choisi pour l’instant d’utiliser un projet Github, accessible via NuGet : &lt;a href="https://github.com/praeclarum/sqlite-net"&gt;sqlite-net&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;(Je surveille de prés aussi le projet &lt;a href="http://system.data.sqlite.org/index.html/doc/trunk/www/index.wiki"&gt;Sytem.Data.SQlite&lt;/a&gt; for WinRT. Il semble en bonne voie, je vous en reparle plus tard)&lt;/p&gt;
&lt;p&gt;L’installation de sqlite-net est simple, elle vous rajoute 2 classes &lt;strong&gt;SQLite.cs&lt;/strong&gt;, et &lt;strong&gt;SQLiteAsync.cs&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;N’hésitez pas d’ailleurs à y jeter un coup d’œil, c’est une mine d’informations.&lt;/p&gt;
&lt;table width="400" border="0" cellspacing="0" cellpadding="2"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="200"&gt;&lt;a href="http://www.dotmim.com/wp-content/uploads/2012/09/addSQLiteNetReference.png"&gt;&lt;img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border-width: 0px;" title="addSQLiteNetReference" src="http://www.dotmim.com/wp-content/uploads/2012/09/addSQLiteNetReference_thumb.png" alt="addSQLiteNetReference" width="478" height="244" border="0" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td valign="top" width="200"&gt;&lt;a href="http://www.dotmim.com/wp-content/uploads/2012/09/sqliteclasses.png"&gt;&lt;img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="sqliteclasses" src="http://www.dotmim.com/wp-content/uploads/2012/09/sqliteclasses_thumb.png" alt="sqliteclasses" width="212" height="244" border="0" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;A partir de là, votre environnement de travail est prêt et vous pouvez commencer la partie la plus intéressante : votre code &lt;img class="wlEmoticon wlEmoticon-smile" style="border-style: none;" src="http://www.dotmim.com/wp-content/uploads/2012/09/wlEmoticon-smile.png" alt="Sourire" /&gt;&lt;/p&gt;
&lt;h1&gt;Connexion&lt;/h1&gt;
&lt;p&gt;Il faut savoir qu’ouvrir une connexion à SQLite crée un lien avec votre base de données locale mais aussi, crée la dite base de données si celle ci n’existe pas !&lt;/p&gt;
&lt;p&gt;Pour créer une base de données SQLite, il vous faut cependant bien “placer” le fichier sqlite au bon endroit, soit le Windows Local Folder du package.&lt;/p&gt;
&lt;p&gt;Voici un code minimaliste d’ouvertur de connexion (et donc de création de la base locale)&lt;/p&gt;
&lt;div id="codeSnippetWrapper" class="csharpcode-wrapper"&gt;
&lt;pre id="codeSnippet" class="csharpcode"&gt;&lt;span class="rem"&gt;// Open a new Connection to SQLite.&lt;/span&gt;
&lt;span class="kwrd"&gt;using&lt;/span&gt; (var connection = &lt;span class="kwrd"&gt;new&lt;/span&gt; SQLite.SQLiteConnection(dbPath))
{}&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;blockquote&gt;&lt;p&gt;Note : J’ai eu quelques soucis avec cette méthode, notamment si vous avez un caractère unicode dans le chemin d’accès de votre package.&lt;/p&gt;
&lt;p&gt;Par exemple, mon compte utilisateur contenant un accent, “Sébastien”, cette méthode d’ouverture ne fonctionne pas !&lt;/p&gt;
&lt;p&gt;Je vous conseille donc de passer par la surcharge du constructeur, qui elle, fonctionne &lt;img class="wlEmoticon wlEmoticon-smile" style="border-style: none;" src="http://www.dotmim.com/wp-content/uploads/2012/09/wlEmoticon-smile.png" alt="Sourire" /&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;div id="codeSnippetWrapper" class="csharpcode-wrapper"&gt;
&lt;pre id="codeSnippet" class="csharpcode"&gt;&lt;span class="rem"&gt;// Open a new Connection to SQLite.&lt;/span&gt;
&lt;span class="kwrd"&gt;using&lt;/span&gt; (var connection = &lt;span class="kwrd"&gt;new&lt;/span&gt; SQLite.SQLiteConnection(dbPath, SQLite.SQLiteOpenFlags.Create | SQLite.SQLiteOpenFlags.ReadWrite))
{}&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;A partir de là, votre base de données est créée. Certes elle est vide pour le moment &lt;img class="wlEmoticon wlEmoticon-smile" style="border-style: none;" src="http://www.dotmim.com/wp-content/uploads/2012/09/wlEmoticon-smile.png" alt="Sourire" /&gt;&lt;/p&gt;
&lt;h1&gt;Outil d’administration&lt;/h1&gt;
&lt;p&gt;Pour ouvrir une base de données sqlite et l’administrer, il existe une multitude de produits. Je vous conseille &lt;a href="http://www.yunqa.de/delphi/doku.php/products/sqlitespy/index"&gt;SQLite Spy&lt;/a&gt; qui est loin d’être le plus complet, mais qui est celui qui semble le plus léger et surtout qui fonctionne a peu prés correctement avec la dernière version de SQLite (si vous avez mieux, je suis preneur &lt;img class="wlEmoticon wlEmoticon-smile" style="border-style: none;" src="http://www.dotmim.com/wp-content/uploads/2012/09/wlEmoticon-smile.png" alt="Sourire" /&gt;)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;table width="400" border="0" cellspacing="0" cellpadding="2"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="400"&gt;&lt;a href="http://www.dotmim.com/wp-content/uploads/2012/09/image.png"&gt;&lt;img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;" title="image" src="http://www.dotmim.com/wp-content/uploads/2012/09/image_thumb.png" alt="image" width="644" height="425" border="0" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Notre base de données se trouve dans le répertoire où sont stockées les packages Windows 8. (AppData / Local / Packages / ID Package / LocalState)&lt;/p&gt;
&lt;p&gt;Dans mon exemple, il se trouve ici :&lt;/p&gt;
&lt;table width="400" border="0" cellspacing="0" cellpadding="2"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="400"&gt;&lt;a href="http://www.dotmim.com/wp-content/uploads/2012/09/image1.png"&gt;&lt;img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;" title="image" src="http://www.dotmim.com/wp-content/uploads/2012/09/image_thumb1.png" alt="image" width="644" height="71" border="0" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h1&gt;Travailler avec des tables SQLite&lt;/h1&gt;
&lt;p&gt;Pour faire simple dans cette première présentation, nous allons via &lt;a href="http://www.yunqa.de/delphi/doku.php/products/sqlitespy/index"&gt;SQLite Spy&lt;/a&gt;, créer une table &lt;strong&gt;Client&lt;/strong&gt; et tenter de la requêter depuis notre application WinRT.&lt;/p&gt;
&lt;table width="400" border="0" cellspacing="0" cellpadding="2"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="400"&gt;&lt;a href="http://www.dotmim.com/wp-content/uploads/2012/09/image2.png"&gt;&lt;img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;" title="image" src="http://www.dotmim.com/wp-content/uploads/2012/09/image_thumb2.png" alt="image" width="644" height="330" border="0" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote&gt;&lt;p&gt;Note : Nous verrons plus tard que sqlite-net contient des outils de mapping permettant de directement créer une table à partir d’une entité. Mais pour le moment, continuons avec les bases…&lt;/p&gt;&lt;/blockquote&gt;
&lt;h1&gt;Requête de sélection non paramétrée&lt;/h1&gt;
&lt;p&gt;Une fois la connexion ouverte, il suffit de :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Construire une requête&lt;/li&gt;
&lt;li&gt;Préparer la commande (qui renvoie un IntPtr que nous appelerons SQLite3Statement)&lt;/li&gt;
&lt;li&gt;Parcourir l’ensemble des lignes retournées&lt;/li&gt;
&lt;li&gt;Récupérer les valeurs&lt;/li&gt;
&lt;li&gt;Finaliser la commande&lt;/li&gt;
&lt;/ul&gt;
&lt;div id="codeSnippetWrapper" class="csharpcode-wrapper" style="height: 244px; width: 97.5%;"&gt;
&lt;pre id="codeSnippet" class="csharpcode" style="height: 229px; width: 97.61%;"&gt;List&amp;lt;Client&amp;gt; lstClients = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;Client&amp;gt;();

&lt;span class="rem"&gt;// Open a new Connection to SQLite.&lt;/span&gt;
&lt;span class="kwrd"&gt;using&lt;/span&gt; (var connection = &lt;span class="kwrd"&gt;new&lt;/span&gt; SQLite.SQLiteConnection(dbPath, SQLite.SQLiteOpenFlags.Create | SQLite.SQLiteOpenFlags.ReadWrite))
{

    &lt;span class="kwrd"&gt;const&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; querySelect = &lt;span class="str"&gt;"Select * from Client"&lt;/span&gt;;

    Sqlite3Statement stmt = Sqlite3Statement.Zero;
    &lt;span class="kwrd"&gt;try&lt;/span&gt;
    {
        &lt;span class="rem"&gt;// Prepare command&lt;/span&gt;
        stmt = SQLite3.Prepare2(connection.Handle, querySelect);

        &lt;span class="rem"&gt;// While row is available&lt;/span&gt;
        &lt;span class="kwrd"&gt;while&lt;/span&gt; (SQLite3.Step(stmt) == SQLite3.Result.Row)
        {
            Client client = &lt;span class="kwrd"&gt;new&lt;/span&gt; Client();

            &lt;span class="rem"&gt;// Get values&lt;/span&gt;
            client.ClientId = SQLite3.ColumnInt(stmt, 0);
            client.FirstName = SQLite3.ColumnString(stmt, 1);
            client.LastName = SQLite3.ColumnString(stmt, 2);
            client.CreationDate = DateTime.Parse(SQLite3.ColumnString(stmt, 3));
            client.Age = SQLite3.ColumnInt(stmt, 4);

            lstClients.Add(client);

        }
    }
    &lt;span class="kwrd"&gt;catch&lt;/span&gt; (SQLiteException ex)
    {
        Debug.WriteLine(ex.Message);
    }
    &lt;span class="kwrd"&gt;finally&lt;/span&gt;
    {
        &lt;span class="rem"&gt;// Finalize statement&lt;/span&gt;
        SQLite3.Finalize(stmt);
    }
}&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Requête de sélection non paramétrée&lt;/h1&gt;
&lt;p&gt;Le passage de paramètre est relativement classique avec&lt;/p&gt;
&lt;p&gt;D’une part la construction de la requête prenant un paramètre, représenté par un point d’interrogation :&lt;/p&gt;
&lt;div id="codeSnippetWrapper" class="csharpcode-wrapper"&gt;
&lt;pre id="codeSnippet" class="csharpcode"&gt;&lt;span class="kwrd"&gt;Select&lt;/span&gt; * &lt;span class="kwrd"&gt;from&lt;/span&gt; Client &lt;span class="kwrd"&gt;where&lt;/span&gt; LastName = ?&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;D’autre part un mécanisme de Bind de paramètre coté code (le paramètre étant repéré via son index, attention à ce détail)&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Attention : Index de base 1 !!!!&lt;/p&gt;&lt;/blockquote&gt;
&lt;div id="codeSnippetWrapper" class="csharpcode-wrapper"&gt;
&lt;pre id="codeSnippet" class="csharpcode"&gt;&lt;span class="rem"&gt;// Bind parameter&lt;/span&gt;
 SQLite3.BindText(stmt, 1, lastName, -1, &lt;span class="kwrd"&gt;new&lt;/span&gt; IntPtr(-1));
 SQLite3.BindInt(stmt, 2, 12);
 SQLite3.BindDouble(stmt, 3, (&lt;span class="kwrd"&gt;double&lt;/span&gt;)12);
 SQLite3.BindNull(stmt, 4);&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;sqlite-net apporte une méthode globable, plus simple à utiliser et qui prend en compte tous les types de données classiques:&lt;/p&gt;
&lt;div id="codeSnippetWrapper" class="csharpcode-wrapper"&gt;
&lt;pre id="codeSnippet" class="csharpcode"&gt;SQLiteCommand.BindParameter(stmt, 1, lastName, &lt;span class="kwrd"&gt;false&lt;/span&gt;);&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Le code de récupération des clients par le nom devient du coup :&lt;/p&gt;
&lt;div id="codeSnippetWrapper" class="csharpcode-wrapper"&gt;
&lt;pre id="codeSnippet" class="csharpcode"&gt;List&amp;lt;Client&amp;gt; lstClients = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;Client&amp;gt;();

&lt;span class="rem"&gt;// Open a new Connection to SQLite.&lt;/span&gt;
&lt;span class="kwrd"&gt;using&lt;/span&gt; (var connection = &lt;span class="kwrd"&gt;new&lt;/span&gt; SQLite.SQLiteConnection(dbPath, SQLite.SQLiteOpenFlags.Create | SQLite.SQLiteOpenFlags.ReadWrite))
{
    &lt;span class="kwrd"&gt;const&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; querySelect = &lt;span class="str"&gt;"Select * from Client where LastName = ?"&lt;/span&gt;;

    Sqlite3Statement stmt = Sqlite3Statement.Zero;
    &lt;span class="kwrd"&gt;try&lt;/span&gt;
    {
        &lt;span class="rem"&gt;// Prepare command&lt;/span&gt;
        stmt = SQLite3.Prepare2(connection.Handle, querySelect);

        &lt;span class="rem"&gt;// Bind parameter&lt;/span&gt;
        SQLiteCommand.BindParameter(stmt, 1, lastName, connection.StoreDateTimeAsTicks);

    
        &lt;span class="rem"&gt;// While row is available&lt;/span&gt;
        &lt;span class="kwrd"&gt;while&lt;/span&gt; (SQLite3.Step(stmt) == SQLite3.Result.Row)
        {
            Client client = &lt;span class="kwrd"&gt;new&lt;/span&gt; Client();

            &lt;span class="rem"&gt;// Get values&lt;/span&gt;
            client.ClientId = SQLite3.ColumnInt(stmt, 0);
            client.FirstName = SQLite3.ColumnString(stmt, 1);
            client.LastName = SQLite3.ColumnString(stmt, 2);
            &lt;span class="kwrd"&gt;string&lt;/span&gt; date = SQLite3.ColumnString(stmt, 3);
            client.CreationDate = String.IsNullOrEmpty(date) ? (DateTime?)&lt;span class="kwrd"&gt;null&lt;/span&gt; : DateTime.Parse(date);
            client.Age = SQLite3.ColumnInt(stmt, 4);

            lstClients.Add(client);
        }
    }
    &lt;span class="kwrd"&gt;catch&lt;/span&gt; (SQLiteException ex)
    {
        Debug.WriteLine(ex.Message);
    }
    &lt;span class="kwrd"&gt;finally&lt;/span&gt;
    {
        &lt;span class="rem"&gt;// Finalize statement&lt;/span&gt;
        SQLite3.Finalize(stmt);
    }
}&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Dans une prochaine partie, nous verrons plus longuement les particularités de SQLite dans WinRT, un peu de mapping OR et quelques astuces relatives aux performances &lt;img class="wlEmoticon wlEmoticon-smile" style="border-style: none;" src="http://www.dotmim.com/wp-content/uploads/2012/09/wlEmoticon-smile.png" alt="Sourire" /&gt;&lt;/p&gt;
&lt;p&gt;Happy coding avec SQLite et WinRT !&lt;/p&gt;
</content:encoded><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.dotmim.com/2012/09/14/windows-8-winrt-sqlite/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">4</slash:comments></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5619051591853320584.post-7603777872683427706</guid><link>http://blog.adhess.net/2012/08/utiliser-le-live-sdk-dans-une.html</link><a10:author><a10:name>Guillaume Lacasa</a10:name><a10:uri>http://blog.adhess.net/feeds/posts/default</a10:uri></a10:author><category domain="http://www.blogger.com/atom/ns#">JavaScript</category><category domain="http://www.blogger.com/atom/ns#">Windows8</category><category domain="http://www.blogger.com/atom/ns#">ModernUI</category><category domain="http://www.blogger.com/atom/ns#">WinJS</category><title>Utiliser le Live SDK dans une application Windows 8 “ModernUI” javascript</title><description>&lt;p&gt;Microsoft fourni depuis quelques temps une API pour se connecter aux services Live, depuis tout type d’applications : Desktop, mobile, ou web. Cette API permet d’utiliser depuis vos applications les services de Skydrive, Messenger et Hotmail.&lt;/p&gt;  &lt;p&gt;Nous allons voir dans cet article comment se connecter à Windows Live depuis une application Windows 8 Javascript pour pouvoir utiliser ces services.&lt;/p&gt;  &lt;h2&gt;Enregistrement de l’application&lt;/h2&gt;  &lt;p&gt;La première chose à faire est d’enregistrer l’application pour qu’elle ait le droit d’accéder au service. Il suffit d’aller sur le site suivant et de suivre les indications : &lt;a title="https://manage.dev.live.com/build" href="https://manage.dev.live.com/build"&gt;https://manage.dev.live.com/build&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Le site vous donnera un nouveau “Package name” que vous devrez mettre dans le fichier package.appxmanifest :&lt;/p&gt;  &lt;p&gt;&lt;img title="image" style="display: inline" alt="image" src="http://lh3.ggpht.com/-_NjobkLPcHI/UDd1uDjPtDI/AAAAAAAAB08/Kb3aOoi5ZmA/image61.png?imgmax=800" width="714" height="303" /&gt;&lt;/p&gt;  &lt;p&gt;Ceci vous permettra d’utiliser les services Live lors du développement.&lt;/p&gt;  &lt;p&gt;Lorsque vous voudrez publier votre application sur le Windows Store, il faudra remettre à jour cette valeur. Pour ça, vous devez créer l’application dans votre Dashboard Windows 8.    &lt;br /&gt;Puis dans Visual Studio, dans “Project” &amp;gt; “Store” &amp;gt; “Associate App with the Store”, vous pourrez faire l’association.&lt;/p&gt;  &lt;p&gt;&lt;img title="image" style="display: inline" alt="image" src="http://lh6.ggpht.com/-rkGj60GNwSg/UDd1uu_MJ2I/AAAAAAAAB1E/9QG5tNW6AsI/image151.png?imgmax=800" width="507" height="119" /&gt;&lt;/p&gt;  &lt;p&gt;Sachez aussi que si vous utilisez ces services, vous devrez spécifier des conditions de service, et une déclaration de confidentialité : 2 liens à enregistrer dans les fonctionnalités avancées de votre application, dans le Dashboard du Windows Store.&lt;/p&gt;  &lt;h2&gt;Installation du SDK&lt;/h2&gt;  &lt;p&gt;La première chose à faire est de télécharger et d’installer le &lt;a href="http://go.microsoft.com/fwlink/?LinkID=242807"&gt;SDK Live&lt;/a&gt;, puis de le référencer dans le projet :&lt;/p&gt;  &lt;p&gt;&lt;img title="image" style="display: inline" alt="image" src="http://lh6.ggpht.com/-pjdLAHFvpAc/UDd1u_MDVeI/AAAAAAAAB1M/GcZRdKEHfGo/image201.png?imgmax=800" width="750" height="378" /&gt;&lt;/p&gt;  &lt;p&gt;Ensuite, il faudra référencer le SDK dans vos pages :&lt;/p&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt; &lt;span class="attr"&gt;src&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;/LiveSDKHTML/js/wl.js&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;style type="text/css"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Connexion&lt;/h2&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Pour pouvoir se connecter, il faut commencer par initialiser les API, à l’aide de la méthode &lt;a href="http://msdn.microsoft.com/fr-FR/library/live/hh550844"&gt;WL.init&lt;/a&gt;, qu’on va définir en lui donnant le &lt;em&gt;scope&lt;/em&gt; : les données à laquelle on veut accéder dans notre application. C’est important, car lorsque on se connectera avec le compte de l’utilisateur, une fenêtre lui demandera d’accéder à son compte live, avec la liste des données à laquelle on demande à accéder.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;WL.init({&lt;br /&gt;    scope: [&lt;span class="str"&gt;&amp;quot;wl.signin&amp;quot;&lt;/span&gt;]&lt;br /&gt;});&lt;/pre&gt;&lt;br /&gt;&lt;style type="text/css"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Contrairement à une application web, nous n’avons pas besoin ici de fournir d’identifiant d’application, puisqu’il est fourni automatiquement par le SDK lui même, l’application est reconnue par le package name, qu’on a défini précédemment.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;On peut maintenant se connecter pour de bon à Live. Pour ça, 2 possibilités : soit l’affichage d’un bouton pour l’utilisateur, soit une connexion automatique par code.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Pour créer un bouton, on va utiliser la méthode &lt;a href="http://msdn.microsoft.com/fr-FR/library/live/hh550847"&gt;WL.ui&lt;/a&gt;. On a besoin d’un conteneur dans le HTML :&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;signin&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;style type="text/css"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Et on fait l’appel à la méthode pour faire apparaitre le bouton :&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;WL.ui({&lt;br /&gt;    name: &lt;span class="str"&gt;&amp;quot;signin&amp;quot;&lt;/span&gt;,&lt;br /&gt;    element: &lt;span class="str"&gt;&amp;quot;signin&amp;quot;&lt;/span&gt;&lt;br /&gt;});&lt;/pre&gt;&lt;br /&gt;&lt;style type="text/css"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Ceci va nous donner le bouton suivant :&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://lh5.ggpht.com/-vZR_4qTfmd8/UDd1vZKI3nI/AAAAAAAAB1U/zOQfAAK4lyE/image13.png?imgmax=800" width="115" height="52" /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;On peut aussi de connecter automatiquement en javascript en utilisant la méthode &lt;a href="http://msdn.microsoft.com/fr-FR/library/live/hh550845"&gt;WL.login&lt;/a&gt;:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;WL.login();&lt;/pre&gt;&lt;br /&gt;&lt;style type="text/css"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Dans les deux cas une fenêtre s’affichera pour demander l’autorisation à l’utilisateur d’utiliser son compte.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;img title="image" style="display: inline" alt="image" src="http://lh4.ggpht.com/-90qWIw0Vj9Q/UDd1vrHWB6I/AAAAAAAAB1c/GXCPkcJ4zJI/image14.png?imgmax=800" width="640" height="400" /&gt;&lt;/p&gt;&lt;br /&gt;&lt;style type="text/css"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Utilisation de l’API&lt;/h2&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Maintenant que vous vous êtes connecté et que l’utilisateur vous a donné les droits d’accéder à son compte live, vous pouvez utiliser l’&lt;a href="http://msdn.microsoft.com/en-us/library/live/hh243648.aspx"&gt;API REST&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Si par exemple on veut récupérer le nom et le prénom de l’utilisateur, ça se fera de la manière suivante :&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;WL.api({&lt;br /&gt;    path: &lt;span class="str"&gt;&amp;quot;me&amp;quot;&lt;/span&gt;,&lt;br /&gt;    method: &lt;span class="str"&gt;&amp;quot;GET&amp;quot;&lt;/span&gt;&lt;br /&gt;}).then(&lt;br /&gt;    &lt;span class="kwrd"&gt;function&lt;/span&gt; (response) {&lt;br /&gt;        &lt;span class="rem"&gt;// Les information sont contenues dans l'objet response :&lt;/span&gt;&lt;br /&gt;        &lt;span class="rem"&gt;// response.first_name, response.last_name&lt;/span&gt;&lt;br /&gt;    },&lt;br /&gt;    &lt;span class="kwrd"&gt;function&lt;/span&gt; (responseFailed) {&lt;br /&gt;        &lt;span class="rem"&gt;// En cas d'erreur&lt;/span&gt;&lt;br /&gt;    }&lt;br /&gt;);&lt;/pre&gt;&lt;br /&gt;&lt;style type="text/css"&gt;&lt;br /&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Ici on fait un appel au chemin “me” de l’API. En fait, la requête est faite sur l’url https://apis.live.net/v5.0/&lt;strong&gt;me&lt;/strong&gt;. Lorsque la réponse arrive, on traite le résultat (à l’aide de la méthode &lt;a href="http://msdn.microsoft.com/en-us/library/windows/apps/br229728.aspx"&gt;then&lt;/a&gt;) avec une fonction pour traiter la réponse, et une fonction appelée en cas d’erreur.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Voilà, à partir de là on a tout ce qu’il faut pour commencer à utiliser toutes les fonctionnalités de l’API live dans l’application. A bientôt (j’espère) sur ce blog pour voir plus en détail ce qu’on va pouvoir faire de ça. En attendant, rendez-vous sur &lt;a href="http://msdn.microsoft.com/fr-FR/library/live"&gt;msdn&lt;/a&gt; si vous voulez approfondir le sujet.&lt;/p&gt;  </description><pubDate>Fri, 24 Aug 2012 14:38:00 +0200</pubDate><a10:link rel="replies" type="application/atom+xml" title="Publier les commentaires" href="http://blog.adhess.net/feeds/7603777872683427706/comments/default" /><a10:link rel="replies" type="text/html" title="0 commentaires" href="http://www.blogger.com/comment.g?blogID=5619051591853320584&amp;postID=7603777872683427706" /><a10:link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5619051591853320584/posts/default/7603777872683427706" /><a10:link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5619051591853320584/posts/default/7603777872683427706" /><a10:updated>2013-01-22T12:15:53+01:00</a10:updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/-_NjobkLPcHI/UDd1uDjPtDI/AAAAAAAAB08/Kb3aOoi5ZmA/s72-c/image61.png?imgmax=800" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><guid isPermaLink="false">http://www.dotmim.com/?p=944</guid><link>http://www.dotmim.com/2012/08/09/rank-pivot-cte-eav/</link><a10:author><a10:name>Sebastien Pertus</a10:name><a10:uri>http://www.dotmim.com/feed/</a10:uri></a10:author><category>Sans Catégorie</category><title>Rank, Pivot, CTE, EAV</title><description>Aujourd’hui, je veux pouvoir extraire des données d’une table EAV (Entity Attribute Value), les mettre à plat, et en plus prendre la données la plus récente, chaque attribut étant historisé.
Voici la structure de la table :

Et voici un jeu de données 

On note que le client 1 possède un attribut  [...]</description><pubDate>Thu, 09 Aug 2012 15:15:30 Z</pubDate><comments>http://www.dotmim.com/2012/08/09/rank-pivot-cte-eav/#comments</comments><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mimetis</dc:creator><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/">&lt;p&gt;Aujourd’hui, je veux pouvoir extraire des données d’une table EAV (Entity Attribute Value), les mettre à plat, et en plus prendre la données la plus récente, chaque attribut étant historisé.&lt;/p&gt;
&lt;p&gt;Voici la structure de la table :&lt;/p&gt;
&lt;p&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; border-left: 0px; display: block; padding-right: 0px; margin-right: auto" border="0" alt="image" src="http://www.dotmim.com/wp-content/uploads/2012/08/image7.png" width="619" height="227" /&gt;&lt;/p&gt;
&lt;p&gt;Et voici un jeu de données &lt;/p&gt;
&lt;p&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; border-left: 0px; display: block; padding-right: 0px; margin-right: auto" border="0" alt="image" src="http://www.dotmim.com/wp-content/uploads/2012/08/image8.png" width="653" height="193" /&gt;&lt;/p&gt;
&lt;p&gt;On note que le client 1 possède un attribut 1001 qui représente sa taille.&lt;/p&gt;
&lt;p&gt;Il possède deux fois l’attribut 1000 qui représente le poids, mais à des dates différentes.&lt;/p&gt;
&lt;p&gt;Le résultat qu’on souhaite obtenir est l’ensemble de nos clients, avec sur chaque ligne, le poids et la taille, de date la plus récente.&lt;/p&gt;
&lt;p&gt;Pour notre client 1, nous devons avoir une ligne du genre :&lt;/p&gt;
&lt;p&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; border-left: 0px; display: block; padding-right: 0px; margin-right: auto" border="0" alt="image" src="http://www.dotmim.com/wp-content/uploads/2012/08/image9.png" width="494" height="79" /&gt;&lt;/p&gt;
&lt;p&gt;Pour ce faire, nous allons utiliser :&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms176102.aspx"&gt;La fonction RANK&lt;/a&gt;&lt;/strong&gt; : elle nous permettra de ne retenir que les données de RANK 1 partitionnées sur le ClientID et sur le DateCreation&lt;/p&gt;
&lt;div id="codeSnippetWrapper" class="csharpcode-wrapper"&gt;
&lt;pre id="codeSnippet" class="csharpcode"&gt;&lt;span class="kwrd"&gt;Select&lt;/span&gt; ClientId, AttributId,  Valeur,&lt;br /&gt;       RANK() &lt;span class="kwrd"&gt;over&lt;/span&gt;(Partition &lt;span class="kwrd"&gt;by&lt;/span&gt; ClientId, AttributId &lt;span class="kwrd"&gt;Order&lt;/span&gt; &lt;span class="kwrd"&gt;By&lt;/span&gt; DateCreation &lt;span class="kwrd"&gt;Desc&lt;/span&gt; ) R&lt;br /&gt;&lt;span class="kwrd"&gt;From&lt;/span&gt; Client&lt;br /&gt;&lt;/pre&gt;
&lt;p&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://www.dotmim.com/wp-content/uploads/2012/08/image10.png"&gt;&lt;u&gt;&lt;font color="#db5104"&gt;&lt;/font&gt;&lt;/u&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; border-left: 0px; display: block; padding-right: 0px; margin-right: auto" border="0" alt="image" src="http://www.dotmim.com/wp-content/uploads/2012/08/image_thumb4.png" width="542" height="170" /&gt;&lt;/a&gt;Grâce à ce rank, nous avons bien les données qui nous intéressent, au rang 1 pour chaque attribut de chaque client&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms190766(v=SQL.105).aspx"&gt;Une Common Table Expression&lt;/a&gt;&lt;/strong&gt; : Elle nous permettra de récupérer de la requête RANK uniquement les RANK = 1&lt;/p&gt;
&lt;div id="codeSnippetWrapper" class="csharpcode-wrapper"&gt;
&lt;pre id="codeSnippet" class="csharpcode"&gt;&lt;span class="kwrd"&gt;With&lt;/span&gt; C (ClientId, AttributId, Valeur, &lt;span class="kwrd"&gt;Position&lt;/span&gt;) &lt;span class="kwrd"&gt;as&lt;/span&gt;&lt;br /&gt;(&lt;br /&gt;    &lt;span class="kwrd"&gt;Select&lt;/span&gt;    ClientId, AttributId,  Valeur, &lt;br /&gt;            RANK() &lt;span class="kwrd"&gt;over&lt;/span&gt;(Partition &lt;span class="kwrd"&gt;by&lt;/span&gt; ClientId, AttributId &lt;span class="kwrd"&gt;Order&lt;/span&gt; &lt;span class="kwrd"&gt;By&lt;/span&gt; DateCreation &lt;span class="kwrd"&gt;Desc&lt;/span&gt; ) &lt;br /&gt;    &lt;span class="kwrd"&gt;From&lt;/span&gt; Client&lt;br /&gt;    &lt;span class="kwrd"&gt;Where&lt;/span&gt; ExpId = 1&lt;br /&gt;)&lt;br /&gt;&lt;span class="kwrd"&gt;Select&lt;/span&gt; * &lt;span class="kwrd"&gt;from&lt;/span&gt; C &lt;span class="kwrd"&gt;where&lt;/span&gt; &lt;span class="kwrd"&gt;Position&lt;/span&gt; = 1&lt;/pre&gt;
&lt;p&gt;&lt;/div&gt;
&lt;p&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; border-left: 0px; display: block; padding-right: 0px; margin-right: auto" border="0" alt="image" src="http://www.dotmim.com/wp-content/uploads/2012/08/image11.png" width="446" height="152" /&gt;&lt;/p&gt;
&lt;p&gt;Exit donc les données dont le RANK est supérieur à 1&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms177410(v=sql.105).aspx"&gt;La fonction PIVOT&lt;/a&gt;&lt;/strong&gt; : Pour mettre tout ça en ligne. Petite astuce, le Pivot demandant un agrégat, on va utiliser le Max de la valeur. Celle ci étant unique, le tour est joué !&lt;/p&gt;
&lt;div id="codeSnippetWrapper" class="csharpcode-wrapper"&gt;
&lt;pre id="codeSnippet" class="csharpcode"&gt;&lt;span class="kwrd"&gt;With&lt;/span&gt; C (ClientId, AttributId, Valeur, &lt;span class="kwrd"&gt;Position&lt;/span&gt;) &lt;span class="kwrd"&gt;as&lt;/span&gt;&lt;br /&gt;(&lt;br /&gt;    &lt;span class="kwrd"&gt;Select&lt;/span&gt;    ClientId, AttributId,  Valeur, &lt;br /&gt;            RANK() &lt;span class="kwrd"&gt;over&lt;/span&gt;(Partition &lt;span class="kwrd"&gt;by&lt;/span&gt; ClientId, AttributId &lt;span class="kwrd"&gt;Order&lt;/span&gt; &lt;span class="kwrd"&gt;By&lt;/span&gt; DateCreation &lt;span class="kwrd"&gt;Desc&lt;/span&gt; ) &lt;br /&gt;    &lt;span class="kwrd"&gt;From&lt;/span&gt; Client&lt;br /&gt;)&lt;br /&gt;&lt;span class="kwrd"&gt;Select&lt;/span&gt; ClientId, [1000] &lt;span class="kwrd"&gt;as&lt;/span&gt; Poids, [1001] &lt;span class="kwrd"&gt;as&lt;/span&gt; Taille&lt;br /&gt;&lt;span class="kwrd"&gt;From&lt;/span&gt; C Pivot (&lt;span class="kwrd"&gt;Max&lt;/span&gt;(Valeur) &lt;span class="kwrd"&gt;for&lt;/span&gt; AttributId &lt;span class="kwrd"&gt;in&lt;/span&gt; ([1000], [1001])) &lt;span class="kwrd"&gt;as&lt;/span&gt; PV&lt;br /&gt;&lt;span class="kwrd"&gt;Where&lt;/span&gt; PV.&lt;span class="kwrd"&gt;Position&lt;/span&gt; = 1 &lt;/pre&gt;
&lt;p&gt;&lt;/div&gt;
&lt;p&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; border-left: 0px; display: block; padding-right: 0px; margin-right: auto" border="0" alt="image" src="http://www.dotmim.com/wp-content/uploads/2012/08/image12.png" width="404" height="112" /&gt;&lt;/p&gt;
&lt;p&gt;Et voilà, vous avez bien, en lignes, les données les plus récentes d’une table EAV historisée &lt;img class="wlEmoticon wlEmoticon-smile" style="border-top-style: none; border-left-style: none; border-bottom-style: none; border-right-style: none" alt="Sourire" src="http://www.dotmim.com/wp-content/uploads/2012/08/wlEmoticon-smile1.png" /&gt;&lt;/p&gt;
&lt;p&gt;Evidemment, vous pouvez aussi vous passer de ce genre de tables, en utilisant les &lt;a href="http://www.dotmim.com/2010/12/01/sql-server-2008-sparses-columns/"&gt;Sparses Columns&lt;/a&gt; bien sûr !&lt;/p&gt;
</content:encoded><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.dotmim.com/2012/08/09/rank-pivot-cte-eav/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">2</slash:comments></item><item><guid isPermaLink="false">http://www.dotmim.com/?p=925</guid><link>http://www.dotmim.com/2012/08/08/ssas-dimensions-multiple-foreign-keys/</link><a10:author><a10:name>Sebastien Pertus</a10:name><a10:uri>http://www.dotmim.com/feed/</a10:uri></a10:author><category>Sans Catégorie</category><category>SSAS</category><title>SSAS Dimensions, Multiple Foreign Keys</title><description>Je viens de passer une demie journée à essayer de comprendre ce que je considère comme un bug de SSAS.
Je n’ai pas réussi à résoudre mon problème, mais du moins, j’ai trouvé un contournement.
Voici d’abord le problème :
J’ai une dimension, disons DimClient. Chaque client est lié à 3 groupes, disons  [...]</description><pubDate>Wed, 08 Aug 2012 09:06:12 Z</pubDate><comments>http://www.dotmim.com/2012/08/08/ssas-dimensions-multiple-foreign-keys/#comments</comments><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mimetis</dc:creator><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/">&lt;p&gt;Je viens de passer une demie journée à essayer de comprendre ce que je considère comme un bug de SSAS.&lt;/p&gt;
&lt;p&gt;Je n’ai pas réussi à résoudre mon problème, mais du moins, j’ai trouvé un contournement.&lt;/p&gt;
&lt;p&gt;Voici d’abord le problème :&lt;/p&gt;
&lt;p&gt;J’ai une dimension, disons &lt;strong&gt;DimClient&lt;/strong&gt;. Chaque client est lié à 3 groupes, disons &lt;strong&gt;DimGroup&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Nous avons donc dans la table DimClient, 3 foreign keys différentes, vers la table DimGroup.&lt;/p&gt;
&lt;p&gt;Chaque client a :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1 groupe d’origine (&lt;strong&gt;OriginGroupId&lt;/strong&gt;)&lt;/li&gt;
&lt;li&gt;1 groupe précédent (&lt;strong&gt;LastGroupId&lt;/strong&gt;)&lt;/li&gt;
&lt;li&gt;1 groupe actuel (&lt;strong&gt;ActualGroupId&lt;/strong&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Voici une représentation de ma Data Source View dans le designer :&lt;/p&gt;
&lt;p&gt;&lt;img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;" title="image" src="http://www.dotmim.com/wp-content/uploads/2012/08/image.png" alt="image" width="552" height="427" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;Ce que je fais maintenant n’est pas conceptuellement le plus efficace en terme de design de dimensions, mais le principe étant de mettre le focus sur le bug que j’ai rencontré.&lt;/p&gt;
&lt;p&gt;Dans ma dimension &lt;strong&gt;DimClient&lt;/strong&gt;, j’ai donc décidé de créer &lt;strong&gt;3 hiérarchies&lt;/strong&gt;, contenant chacun le groupe adéquate.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Une hiérarchie Origin&lt;/li&gt;
&lt;li&gt;Une hiérarchie Last&lt;/li&gt;
&lt;li&gt;Une hiérarchie Actual&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Voici encore une copie d’écran de ma dimension :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.dotmim.com/wp-content/uploads/2012/08/image1.png"&gt;&lt;img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;" title="image" src="http://www.dotmim.com/wp-content/uploads/2012/08/image_thumb.png" alt="image" width="644" height="330" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Pour que chaque client sache faire le lien sur chaque catégorie, il est aussi nécessaire de créer les relations de mes hiérarchies.&lt;/p&gt;
&lt;p&gt;C’est ce que je fais dans l’onglet adéquate, en voici la représentation :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.dotmim.com/wp-content/uploads/2012/08/image2.png"&gt;&lt;img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;" title="image" src="http://www.dotmim.com/wp-content/uploads/2012/08/image_thumb1.png" alt="image" width="667" height="249" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Ok à partir de là, je lance le process de ma dimension, pour vérifier les résultats. Et là, c’est le drame !&lt;/p&gt;
&lt;p&gt;&lt;img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;" title="image" src="http://www.dotmim.com/wp-content/uploads/2012/08/image3.png" alt="image" width="639" height="484" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;Voici les requêtes qu’il exécute :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.dotmim.com/wp-content/uploads/2012/08/image4.png"&gt;&lt;img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;" title="image" src="http://www.dotmim.com/wp-content/uploads/2012/08/image_thumb2.png" alt="image" width="644" height="427" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;On remarque tout de suite qu’il y a un &lt;strong&gt;ENORME&lt;/strong&gt; soucis sur la requête &lt;img class="wlEmoticon wlEmoticon-smile" style="border-style: none;" src="http://www.dotmim.com/wp-content/uploads/2012/08/wlEmoticon-smile.png" alt="Sourire" /&gt;&lt;/p&gt;
&lt;p&gt;J’ai essayé toutes les manipulations possibles, en passant par les incantations vaudous, le dénie, la colère et les menaces, rien y fait. Le résultat est faux et archi faux.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;La solution de contournement&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Et voir même la solution idéale, beaucoup plus conceptuellement adéquate.&lt;/p&gt;
&lt;p&gt;En y regardant de plus prés, j’ai créé des hiérarchies de groupe dans une dimension client. Ce qui est possible mais pas élégant.&lt;/p&gt;
&lt;p&gt;Pour envisager quelque chose de plus propre, on peut passer par des dimensions de type “&lt;strong&gt;Role Playing&lt;/strong&gt;” qui ont pour but de se mapper à chaque groupe de mon client.&lt;/p&gt;
&lt;p&gt;Tout d’abord je vire les hiérarchies de ma dimension client, et je ne laisse que les clés externes (que je met en visible = false au minimum)&lt;/p&gt;
&lt;p&gt;Ensuite, il va donc falloir ajouter 3 dimensions à la structure du cube, chacune d’entre elles étant nommée correctement.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Origin Group&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Last Group&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Actual Group&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;" title="image" src="http://www.dotmim.com/wp-content/uploads/2012/08/image5.png" alt="image" width="386" height="599" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;Rajouter ensuite chacune des relations qui lie le Groupe à la table de fait par la référence Client Groupe&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.dotmim.com/wp-content/uploads/2012/08/image6.png"&gt;&lt;img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;" title="image" src="http://www.dotmim.com/wp-content/uploads/2012/08/image_thumb3.png" alt="image" width="644" height="206" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Voilà, vous avez un cube qui fonctionne, et qui est correctement architecturé.&lt;/p&gt;
&lt;p&gt;Il n’en reste pas moins que SSAS ne gère pas bien les multiples clés externes dans une dimension, et que cela reste pour moi un bon vieux Bug  &lt;img class="wlEmoticon wlEmoticon-smile" style="border-style: none;" src="http://www.dotmim.com/wp-content/uploads/2012/08/wlEmoticon-smile.png" alt="Sourire" /&gt;&lt;/p&gt;
&lt;p&gt;Bon cube !&lt;/p&gt;
</content:encoded><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.dotmim.com/2012/08/08/ssas-dimensions-multiple-foreign-keys/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments></item><item><guid isPermaLink="false">http://www.dotmim.com/?p=905</guid><link>http://www.dotmim.com/2012/07/30/ssas-default-language/</link><a10:author><a10:name>Sebastien Pertus</a10:name><a10:uri>http://www.dotmim.com/feed/</a10:uri></a10:author><category>Sql Server</category><category>SSAS</category><title>SSAS Default Language</title><description>Petite astuce du Jour : Comment “forcer” le langage d’une requête MDX dans un cube SSAS qui gère plusieurs langues ?
L’idée c’est d’avoir par exemple les résultats en anglais quelque soit la culture de mon poste.
Voici une requête MDX exécutée par défaut sur mon cube SSAS :

Select
{
    ( 
      [...]</description><pubDate>Mon, 30 Jul 2012 09:48:46 Z</pubDate><comments>http://www.dotmim.com/2012/07/30/ssas-default-language/#comments</comments><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mimetis</dc:creator><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/">&lt;p&gt;Petite astuce du Jour : Comment “forcer” le langage d’une requête MDX dans un cube SSAS qui gère plusieurs langues ?&lt;/p&gt;
&lt;p&gt;L’idée c’est d’avoir par exemple les résultats en anglais quelque soit la culture de mon poste.&lt;/p&gt;
&lt;p&gt;Voici une requête MDX exécutée par défaut sur mon cube SSAS :&lt;/p&gt;
&lt;div id="codeSnippetWrapper" class="csharpcode-wrapper"&gt;
&lt;pre id="codeSnippet" class="csharpcode"&gt;Select
{
    ( 
        [Delivery Date].[Calendar].[Calendar Year].&amp;amp;[2007],
        [Customer].[Customer Geography].[Country].&amp;amp;[Australia]
    )
    , 
    ( 
        [Delivery Date].[Calendar].[Calendar Year].&amp;amp;[2008],
        [Customer].[Customer Geography].[Country].&amp;amp;[Australia]
    ) 
    
} on 0,
{
    [Product].[Product Categories].[Category] 
} on 1
From [Adventure Works]&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Le résultat est traduit en français, car mon PC, bien qu’installé avec un OS anglais, a été configuré avec une culture FR :&lt;/p&gt;
&lt;p&gt;&lt;img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;" title="image" src="http://www.dotmim.com/wp-content/uploads/2012/07/image37.png" alt="image" width="657" height="561" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;Vous remarquerez que les colonnes sont bien traduites en Français alors que les valeurs de mes 2 tuples composant mon set sont en $&lt;/p&gt;
&lt;p&gt;Je veux donc avoir “tout en anglais”.&lt;/p&gt;
&lt;p&gt;Une des solutions, sans modifier le cube, est de spécifier la localisation dans la chaine de connexion:&lt;/p&gt;
&lt;p&gt;Si vous passez par SSMS, il vous suffit de rajouter le paramètre sur l’onglet option :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.dotmim.com/wp-content/uploads/2012/07/image38.png"&gt;&lt;img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;" title="image" src="http://www.dotmim.com/wp-content/uploads/2012/07/image_thumb21.png" alt="image" width="644" height="448" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Une fois la requête ré exécutée, vous trouverez bien vos colonnes correctement traduites &lt;img class="wlEmoticon wlEmoticon-smile" style="border-style: none;" src="http://www.dotmim.com/wp-content/uploads/2012/07/wlEmoticon-smile2.png" alt="Sourire" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;" title="image" src="http://www.dotmim.com/wp-content/uploads/2012/07/image39.png" alt="image" width="639" height="592" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;Et voilà pour une méthode simple et efficace pour tester votre localisation !!&lt;/p&gt;
&lt;p&gt;Si vous cherchez votre Locale ID (LCID) voici un tableau de récapitulation :&lt;/p&gt;
&lt;p&gt;&lt;a title="http://msdn.microsoft.com/en-us/goglobal/bb964664" href="http://msdn.microsoft.com/en-us/goglobal/bb964664"&gt;http://msdn.microsoft.com/en-us/goglobal/bb964664&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Bon MDX !&lt;/p&gt;
</content:encoded><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.dotmim.com/2012/07/30/ssas-default-language/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">2</slash:comments></item><item><guid isPermaLink="false">http://www.dotmim.com/?p=889</guid><link>http://www.dotmim.com/2012/07/26/stored-procedure-ssis-dataflow-controlflow/</link><a10:author><a10:name>Sebastien Pertus</a10:name><a10:uri>http://www.dotmim.com/feed/</a10:uri></a10:author><category>Sql Server</category><category>SSIS</category><title>Stored Procedure SSIS DataFlow ControlFlow</title><description>Aujourd’hui, un petit article pour expliquer comment travailler avec une procédure stockée en entrée d’un flux SSIS.
L’idée ici est de présenter 3 façons différentes de récupérer les données renvoyées par une procédure stockée.

La première se base sur l’utilisation de cette source dans un  [...]</description><pubDate>Thu, 26 Jul 2012 13:27:21 Z</pubDate><comments>http://www.dotmim.com/2012/07/26/stored-procedure-ssis-dataflow-controlflow/#comments</comments><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mimetis</dc:creator><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/">&lt;p&gt;Aujourd’hui, un petit article pour expliquer comment travailler avec une procédure stockée en entrée d’un flux SSIS.&lt;/p&gt;
&lt;p&gt;L’idée ici est de présenter 3 façons différentes de récupérer les données renvoyées par une procédure stockée.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;La première se base sur l’utilisation de cette source dans un &lt;strong&gt;DataFlow&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;La deuxième sur un le &lt;strong&gt;ControlFlow&lt;/strong&gt; avec itération&lt;/li&gt;
&lt;li&gt;La troisième sur l’utilisation d’un &lt;strong&gt;DataTable&lt;/strong&gt; en mémoire qu’on va pouvoir réutiliser partout &lt;img class="wlEmoticon wlEmoticon-smile" style="border-style: none;" src="http://www.dotmim.com/wp-content/uploads/2012/07/wlEmoticon-smile1.png" alt="Sourire" /&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;DataFlow&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Première solution, la plus simple à mon sens. Traiter la procédure stockée en tant que source de données dans un &lt;strong&gt;DataFlow&lt;/strong&gt; :&lt;/p&gt;
&lt;p&gt;&lt;img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border-width: 0px;" title="image" src="http://www.dotmim.com/wp-content/uploads/2012/07/image23.png" alt="image" width="275" height="279" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;Dans le &lt;strong&gt;DataFlow&lt;/strong&gt;, j’utilise un composant source avec connexion &lt;strong&gt;Ole DB&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;" title="image" src="http://www.dotmim.com/wp-content/uploads/2012/07/image51.png" alt="image" width="349" height="261" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;Attention à la configuration de votre source de données. Le passage de paramètres (pour &lt;strong&gt;Ole DB&lt;/strong&gt;) se passe comme suit :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Le paramètre dans l’appel de la procédure stockée se fait à l’aide du point d’interrogation&lt;/li&gt;
&lt;li&gt;Le mapping des paramètres s’effectue avec le nom du paramètre attendu par la procédure stockée.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;" title="image" src="http://www.dotmim.com/wp-content/uploads/2012/07/image91.png" alt="image" width="644" height="308" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border-width: 0px;" title="image" src="http://www.dotmim.com/wp-content/uploads/2012/07/image26.png" alt="image" width="590" height="573" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;Voilà, première méthode simple et efficace &lt;img class="wlEmoticon wlEmoticon-smile" style="border-style: none;" src="http://www.dotmim.com/wp-content/uploads/2012/07/wlEmoticon-smile1.png" alt="Sourire" /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;ControlFlow, Execute Task SQL, Foreach Enumerator&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;L’idée ici est de se placer au niveau du &lt;strong&gt;Control Flow&lt;/strong&gt; et de passer par une tache &lt;strong&gt;Execute Task SQL&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Attention, le principe est le même que l’Ole DB source du &lt;strong&gt;DataFlow&lt;/strong&gt; excepté le mapping des paramètres !&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Le paramètre dans l’appel de la procédure stockée se fait à l’aide du point d’interrogation&lt;/li&gt;
&lt;li&gt;Le mapping des paramètres s’effectue avec l’indice (de base 0) du paramètre !&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a href="http://www.dotmim.com/wp-content/uploads/2012/07/image27.png"&gt;&lt;img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border-width: 0px;" title="image" src="http://www.dotmim.com/wp-content/uploads/2012/07/image_thumb12.png" alt="image" width="532" height="484" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.dotmim.com/wp-content/uploads/2012/07/image28.png"&gt;&lt;img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border-width: 0px;" title="image" src="http://www.dotmim.com/wp-content/uploads/2012/07/image_thumb13.png" alt="image" width="532" height="484" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Tiens d’ailleurs, pour informations, voici le lien qui spécifie Comment paramétrer cette tache SUIVANT le type de CONNEXION (Ole DB, ADO, ADO.NET, ODBC) :&lt;/p&gt;
&lt;p&gt;&lt;a title="http://msdn.microsoft.com/en-us/library/cc280502.aspx" href="http://msdn.microsoft.com/en-us/library/cc280502.aspx"&gt;http://msdn.microsoft.com/en-us/library/cc280502.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.dotmim.com/wp-content/uploads/2012/07/image29.png"&gt;&lt;img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border-width: 0px;" title="image" src="http://www.dotmim.com/wp-content/uploads/2012/07/image_thumb14.png" alt="image" width="644" height="121" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;(Oui je sais, c’est très très moche, mais c’est comme ça ! &lt;img class="wlEmoticon wlEmoticon-smile" style="border-style: none;" src="http://www.dotmim.com/wp-content/uploads/2012/07/wlEmoticon-smile1.png" alt="Sourire" /&gt;)&lt;/p&gt;
&lt;p&gt;A partir de là, on stock le résultat dans une variable Object dans l’onglet &lt;strong&gt;ResultSet&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Pour information, l’objet stocké est en réalité un &lt;strong&gt;ADODBRecordset&lt;/strong&gt;. Ceci nous servira dans une prochaine méthode.&lt;/p&gt;
&lt;p&gt;De là, on peut facilement itérer sur chaque ligne, via la container &lt;strong&gt;Foreach&lt;/strong&gt; :&lt;/p&gt;
&lt;p&gt;&lt;img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;" title="image" src="http://www.dotmim.com/wp-content/uploads/2012/07/image281.png" alt="image" width="390" height="484" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;Le container Foreach est configuré via le Foreach ADO Enumerator :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.dotmim.com/wp-content/uploads/2012/07/image31.png"&gt;&lt;img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border-width: 0px;" title="image" src="http://www.dotmim.com/wp-content/uploads/2012/07/image_thumb16.png" alt="image" width="525" height="484" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Vous pouvez de là mapper chaque colonne dans une variable temporaire et traiter chaque ligne comme bon vous semble &lt;img class="wlEmoticon wlEmoticon-smile" style="border-style: none;" src="http://www.dotmim.com/wp-content/uploads/2012/07/wlEmoticon-smile1.png" alt="Sourire" /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Control Flow, Execute Task SQL, DataTable&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;A partir de la solution précédente, au lieu d’itérer sur chaque ligne, on peut tout simple récupérer le &lt;strong&gt;ADODBRecordset&lt;/strong&gt; de notre variable objet et remplir une &lt;strong&gt;DataTable&lt;/strong&gt;, déconnectée, en mémoire.&lt;/p&gt;
&lt;p&gt;Pour se faire, il suffit de créer un script qui va remplir la DataTable :&lt;/p&gt;
&lt;p&gt;&lt;img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;" title="image" src="http://www.dotmim.com/wp-content/uploads/2012/07/image361.png" alt="image" width="569" height="484" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;Pour le contenu et paramétrage du Scipt SQL Task, voir la méthode précédente&lt;/p&gt;
&lt;p&gt;Voici le contenu du script component qui lui est chargé de remplir la DataTable:&lt;/p&gt;
&lt;div id="codeSnippetWrapper" class="csharpcode-wrapper"&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// This method is called when this script task executes in the control flow.&lt;/span&gt;
&lt;span class="rem"&gt;/// Before returning from this method, set the value of Dts.TaskResult to indicate success or failure.&lt;/span&gt;
&lt;span class="rem"&gt;/// To open Help, press F1.&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main()
{
    &lt;span class="rem"&gt;// TODO: Add your code here&lt;/span&gt;
     DataTable dtRows = &lt;span class="kwrd"&gt;new&lt;/span&gt;DataTable();&lt;/pre&gt;
&lt;p&gt;OleDbDataAdapter adapt = &lt;span class="kwrd"&gt;new&lt;/span&gt; OleDbDataAdapter();&lt;br /&gt;
adapt.Fill(dtRows, Dts.Variables[&lt;span class="str"&gt;"User::StoredResults"&lt;/span&gt;].Value);&lt;/p&gt;
&lt;p&gt;Dts.TaskResult = (&lt;span class="kwrd"&gt;int&lt;/span&gt;)ScriptResults.Success;&lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Simple !&lt;/p&gt;
&lt;p&gt;Cet exemple, un peu plus complexe me permet pourtant de simplifier et d’améliorer les performances globales de mon package, dans un scénario précis : La réutilisation du jeu de résultat dans le package global.&lt;/p&gt;
&lt;p&gt;A supposer que le résultat de cette procédure stockée soit utilisée à plusieurs endroits, j’ai rempli une Table en mémoire que je peux réutiliser partout dans mon package sans pour autant ré exécuter ma procédure stockée.&lt;/p&gt;
&lt;p&gt;D’ailleurs voici la méthode pour utiliser votre source &lt;strong&gt;DataTable&lt;/strong&gt; en mémoire dans un &lt;strong&gt;DataFlow&lt;/strong&gt; :&lt;/p&gt;
&lt;p&gt;Tout d’abord, utilisez un &lt;strong&gt;script component&lt;/strong&gt; en tant que &lt;strong&gt;source&lt;/strong&gt; :&lt;/p&gt;
&lt;p&gt;&lt;img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border-width: 0px;" title="image" src="http://www.dotmim.com/wp-content/uploads/2012/07/image33.png" alt="image" width="644" height="344" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;Ensuite configurez à la main; les colonnes de sorties :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.dotmim.com/wp-content/uploads/2012/07/image34.png"&gt;&lt;img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border-width: 0px;" title="image" src="http://www.dotmim.com/wp-content/uploads/2012/07/image_thumb18.png" alt="image" width="523" height="484" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Et enfin dans le script, générez le flux de sortie. N’oubliez pas de bien passer votre variable globale contenant la DataTable &lt;img class="wlEmoticon wlEmoticon-smile" style="border-style: none;" src="http://www.dotmim.com/wp-content/uploads/2012/07/wlEmoticon-smile1.png" alt="Sourire" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.dotmim.com/wp-content/uploads/2012/07/image35.png"&gt;&lt;img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border-width: 0px;" title="image" src="http://www.dotmim.com/wp-content/uploads/2012/07/image_thumb19.png" alt="image" width="523" height="484" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Voici le script de construction des lignes:&lt;/p&gt;
&lt;div id="codeSnippetWrapper" class="csharpcode-wrapper"&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; CreateNewOutputRows()
 {
     DataTable dt = Variables.ProductDataTable &lt;span class="kwrd"&gt;as&lt;/span&gt; DataTable;
     &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (DataRow dr &lt;span class="kwrd"&gt;in&lt;/span&gt; dt.Rows)
     {
Output0Buffer.AddRow();&lt;/pre&gt;
&lt;p&gt;&lt;span class="kwrd"&gt;if&lt;/span&gt; (dr[&lt;span class="str"&gt;"BOMLevel"&lt;/span&gt;] == System.DBNull.Value)&lt;br /&gt;
Output0Buffer.BOMLevel_IsNull = &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;
&lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;br /&gt;
Output0Buffer.BOMLevel = (&lt;span class="kwrd"&gt;short&lt;/span&gt;)dr[&lt;span class="str"&gt;"BOMLevel"&lt;/span&gt;];&lt;/p&gt;
&lt;p&gt;&lt;span class="kwrd"&gt;if&lt;/span&gt; (dr[&lt;span class="str"&gt;"ComponentDesc"&lt;/span&gt;] == System.DBNull.Value)&lt;br /&gt;
Output0Buffer.ComponentDesc_IsNull = &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;
&lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;br /&gt;
Output0Buffer.ComponentDesc = (String)dr[&lt;span class="str"&gt;"ComponentDesc"&lt;/span&gt;];&lt;/p&gt;
&lt;p&gt;&lt;span class="kwrd"&gt;if&lt;/span&gt; (dr[&lt;span class="str"&gt;"ComponentID"&lt;/span&gt;] == System.DBNull.Value)&lt;br /&gt;
Output0Buffer.ComponentID_IsNull = &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;
&lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;br /&gt;
Output0Buffer.ComponentID = (&lt;span class="kwrd"&gt;int&lt;/span&gt;)dr[&lt;span class="str"&gt;"ComponentID"&lt;/span&gt;];&lt;/p&gt;
&lt;p&gt;&lt;span class="kwrd"&gt;if&lt;/span&gt; (dr[&lt;span class="str"&gt;"ListPrice"&lt;/span&gt;] == System.DBNull.Value)&lt;br /&gt;
Output0Buffer.ListPrice_IsNull = &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;
&lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;br /&gt;
Output0Buffer.ListPrice = (&lt;span class="kwrd"&gt;decimal&lt;/span&gt;)dr[&lt;span class="str"&gt;"ListPrice"&lt;/span&gt;];&lt;/p&gt;
&lt;p&gt;&lt;span class="kwrd"&gt;if&lt;/span&gt; (dr[&lt;span class="str"&gt;"ProductAssemblyID"&lt;/span&gt;] == System.DBNull.Value)&lt;br /&gt;
Output0Buffer.ProductAssemblyID_IsNull = &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;
&lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;br /&gt;
Output0Buffer.ProductAssemblyID = (&lt;span class="kwrd"&gt;int&lt;/span&gt;)dr[&lt;span class="str"&gt;"ProductAssemblyID"&lt;/span&gt;];&lt;/p&gt;
&lt;p&gt;&lt;span class="kwrd"&gt;if&lt;/span&gt; (dr[&lt;span class="str"&gt;"RecursionLevel"&lt;/span&gt;] == System.DBNull.Value)&lt;br /&gt;
Output0Buffer.RecursionLevel_IsNull = &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;
&lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;br /&gt;
Output0Buffer.RecursionLevel = (&lt;span class="kwrd"&gt;int&lt;/span&gt;)dr[&lt;span class="str"&gt;"RecursionLevel"&lt;/span&gt;];&lt;/p&gt;
&lt;p&gt;&lt;span class="kwrd"&gt;if&lt;/span&gt; (dr[&lt;span class="str"&gt;"StandardCost"&lt;/span&gt;] == System.DBNull.Value)&lt;br /&gt;
Output0Buffer.StandardCost_IsNull = &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;
&lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;br /&gt;
Output0Buffer.StandardCost = (&lt;span class="kwrd"&gt;decimal&lt;/span&gt;)dr[&lt;span class="str"&gt;"StandardCost"&lt;/span&gt;];&lt;/p&gt;
&lt;p&gt;&lt;span class="kwrd"&gt;if&lt;/span&gt; (dr[&lt;span class="str"&gt;"TotalQuantity"&lt;/span&gt;] == System.DBNull.Value)&lt;br /&gt;
Output0Buffer.TotalQuantity_IsNull = &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;
&lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;br /&gt;
Output0Buffer.TotalQuantity = (&lt;span class="kwrd"&gt;decimal&lt;/span&gt;)dr[&lt;span class="str"&gt;"TotalQuantity"&lt;/span&gt;];&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Note pour les puristes du code, qui vont objecter qu’une forme concaténée du if aurait été plus élégante et judicieuse (ou qui trouve que vérifier une valeur &lt;strong&gt;True&lt;/strong&gt; pour ensuite affecter à &lt;strong&gt;True&lt;/strong&gt; une autre valeur est une hérésie &lt;img class="wlEmoticon wlEmoticon-winkingsmile" style="border-style: none;" src="http://www.dotmim.com/wp-content/uploads/2012/07/wlEmoticon-winkingsmile.png" alt="Clignement d'œil" /&gt;)&lt;/p&gt;
&lt;p&gt;Il est impossible d’affecter &lt;strong&gt;False&lt;/strong&gt; à la propriété VAR_IsNull. Exemple sur la propriété TotalQuantity :&lt;/p&gt;
&lt;div id="codeSnippetWrapper" class="csharpcode-wrapper"&gt;
&lt;pre id="codeSnippet" class="csharpcode"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; TotalQuantity_IsNull
 {
     set
     {
         &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;value&lt;/span&gt;)
         {
             SetNull(3);
         }
         &lt;span class="kwrd"&gt;else&lt;/span&gt;
         {
             &lt;span class="kwrd"&gt;throw&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; InvalidOperationException(&lt;span class="str"&gt;"IsNull property cannot be set to False. Assign a value to the column instead."&lt;/span&gt;);
         }
     }
 }&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Voilà j’y suis pour rien, ne taper pas le messager &lt;img class="wlEmoticon wlEmoticon-smile" style="border-style: none;" src="http://www.dotmim.com/wp-content/uploads/2012/07/wlEmoticon-smile1.png" alt="Sourire" /&gt;&lt;/p&gt;
&lt;p&gt;Bref, l’exécution du composant fonctionne et vous pouvez par la suite utiliser votre flux comme bon vous semble !&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.dotmim.com/wp-content/uploads/2012/07/image36.png"&gt;&lt;img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border-width: 0px;" title="image" src="http://www.dotmim.com/wp-content/uploads/2012/07/image_thumb20.png" alt="image" width="644" height="363" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;(Presque) Simple !&lt;/p&gt;
&lt;p&gt;Les sources du projet contiennent les 3 méthodes dans un package.&lt;/p&gt;
&lt;p&gt;Ces sources sont utilisées sur SQL SERVER SSIS 2012 et la base de données AdventureWorks.&lt;/p&gt;
&lt;table width="400" border="0" cellspacing="0" cellpadding="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="398"&gt;
&lt;p align="left"&gt;&lt;img class="alignleft" style="float: left; display: inline;" title="Fichier joint" src="http://www.dotmim.com/wp-includes/images/crystal/archive.png" alt="" width="25" height="28" align="left" /&gt;&lt;a href="http://www.dotmim.com/SiteFiles/StoredProcedure.zip"&gt;SSIS StoredProcedure.zip&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Bon traitement SSIS !!&lt;/p&gt;
</content:encoded><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.dotmim.com/2012/07/26/stored-procedure-ssis-dataflow-controlflow/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments></item></channel></rss>
