Frédéric Colin
Windows Media Center et WCF : développez votre maison intelligente
Le développement d'applications pour Windows Media Center est facilité avec l'arrivée du SDK 5.3. Même si l'on sent un modèle objet bien lourd derrière, il devient plus facile d'exposer les fonctionnalités de WMC sous la forme de services WCF.
Par Frédéric Colin publié le 23/06/2008 à 08:04, lu 4102 fois, 10 pages
 4 | Mise en place de la solution
Voici une Checklist à suivre afin d'installer correctement son environnement de travail et à pouvoir débugger les addins en tâche de fond développés pour Windows Media Center. En pré-requis, j'ai considéré que Visual Studio 2008 était correctement installé et configuré :
  1. Télécharger et installer le SDK 5.3 pour Windows Media Center.
     
    Téléchargement SDK

    Téléchargement SDK

     
    Ce dernier amène tout le nécessaire pour développer. Pour ce qui est de la documentation et des exemples. L'installation du SDK apporte trois nouveaux types de projets au niveau Visual Studio 2008 :
     
    Nouveaux types de projets

    Nouveaux types de projets

     
    Dans le cadre de cet exemple, nous utiliserons le type de projet « background » comme processus porteur de nos services WCF (les deux autres permettant de créer des applications avec une interface graphique).

  2. Une fois le projet créé, il reste à le paramétrer. Pour cela, un fichier HTML (ReadMe.htm) a été inclus dans le projet et permet de récapituler l'ensemble des actions à réaliser. En résumé, il faut :
    • Signer l'Assembly et en récupérer la clé publique
    • Editer le fichier xml « Registration.xml » qui servira à enregistrer l'addin dans Windows Media Center et y positionner la clé publique. En profiter pour nommer et décrire l'addin de manière correcte. C'est aussi dans ce fichier que l'on paramètre le fait qu'il s'agisse d'un addin de type « Background »
    • Concernant l'installation de l'addin, vous avez la possibilité d'utiliser Windows Installer XML (WiX). Pour cet article, j'ai reproduit les comportements d'installation via des actions pré-compilation et post-compilation que l'expliciterai ci-après

      Ce qui donne concrètement :

      <application

      title="THB.WCF.Sample1.MediaCenterHost"

      id="{b560dbd4-244e-490e-8950-2c8b3de18213}">

          <entrypoint

      id="{98702d33-b492-47fa-ab67-ce2b4a611494}"

              addin="THB.WCF.Sample1.MediaCenterHost.MyAddIn,

                  THB.WCF.Sample1.MediaCenterHost,Culture=Neutral,

                  Version=1.0.0.0,PublicKeyToken=7917b0ee6878be4a"

              title="THB.WCF.Sample1.MediaCenterHost"

              description="THB.WCF.Sample1.MediaCenterHost Description">

              <category category="Background"/>

          </entrypoint>

      </application>

  3. Modification des actions de pré et post compilation en éditant les propriétés de projet, onglet « Build Events »
    • En Pre-Build. J'ai rencontré quelques soucis de rafraichissement avec Visual Studio qui m'ont obligé à vider le cache applicatif. J'ai donc systématisé cela avant chaque compilation via la commande suivante :

      "C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\mage.exe" –cc
    • En Post-build, il faut : installer l'addin dans le GAC

      "C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\gacutil.exe" /i "$(TargetPath)" /f
    • Déregistrer l'addin de Windows Media Center s'il avait été installé au préalable

      "C:\Windows\ehome\RegisterMCEApp.exe" /u "$(ProjectDir)\Registration.xml"
    • Enregistrer l'addin dans Windows Media Center

      "C:\Windows\ehome\RegisterMCEApp.exe" "$(ProjectDir)\Registration.xml"
    • Pour mon exemple, l'accès à la page HTML représentant la télécommande et accédant aux services REST, est réalisé au travers d'un service WCF qui renvoie un ContentType de type « text/html ». J'ai décidé de stocker l'ensemble des pages Web (*.htm, *.png) directement dans le projet afin de bénéficier des facilités offertes par Visual Studio 2008, mais aussi pour éviter toutes les problématiques de paramétrage des appels via XmlHttpRequest « Cross Domain ». La ligne de commande suivante me permet donc de déployer ces pages directement dans le répertoire contenant les fichiers relatifs à Windows Media Center

      copy "$(ProjectDir)WebSite\*.*" c:\Windows\ehome

  4. Modification de la séquence de démarrage du débugage en indiquant que l'on va exécuter un programme externe qui lancera Windows Media Center (C:\Windows\ehome\ehshell.exe).

  5. Toutes ces étapes sont complétées d'une dernière permettant de faciliter la mise au point des addins dans Windows Media Center. Tout se passe au niveau de la base de registre « HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Media Center\Settings\Extensibility » :
     
    Base de registre

    Base de registre

     
    La première valeur permet d'afficher une boite de dialogue indiquant le PID du processus à attacher à Visual Studio pour débugger (l'exécutable associé s'appelle ehexthost.exe). La seconde permet d'afficher le détail d'une erreur provenant d'un addin.
 
» Démarrer une discussion