Sunday, April 20, 2008

Hello World in Windows Media Center

. Sunday, April 20, 2008

Windows Media Center è un sistema ottimizzato per l'intrattenimento domestico (musica, DVD, TV ecc).
Attraverso una sorta di WPF (Windows Presentation Foundation) è possibile gestire l'interfaccia di Windows Media Center.
In questo post cercherò di spiegare quali sono i passi necessari alla scrittura della classica applicazione "Hello World".
Prima di iniziare è necessario disporre di Visual Studio 2008 (di cui faccio uso in questo esempio) o Visual Studio 2005 Professional installato su Windows Vista Home Premium o Windows Vista Ultimate ed infine scaricare l'SDK.
Con la versione 5.3 vengono installati tre template per VS 2008:
MediaCenter1Windows Media Center Application: per creare un progetto composto da quattro pulsanti che invocano delle dialog box in Media Center,
Windows Media Center Application - Background,
Windows Media Center Application - Fundamental:
per creare un progetto composto dal codice minimo per poter iniziare.

Per definire l'interfaccia del nostro progetto ci affidiamo ad un file basato su XML: Windows Media Center Markup Language (MCML).
Se vogliamo è molto simile a WPF, è composto da una serie di tag ognuno dei quali rappresenta una classe e degli attributi per le proprietà.
Gli elementi che vengono messi a disposizione non sono tantissimi ma sono più che sufficienti per generare delle interfacce in puro stile Media Center.
Ritornando al nostro esempio, il file MCML:

   1: <Mcml xmlns="http://schemas.microsoft.com/2006/mcml"
   2:       xmlns:cor="assembly://MSCorLib/System">
   3:   <UI Name="HelloWorld">  
   4:     <Content>
   5:       <Panel Layout="Center">
   6:         <Children>
   7:           <Text Name="txtHello" Color="Black" Font="Calibri, 24" Content="Hello World"/>
   8:         </Children>
   9:       </Panel>
  10:     </Content>
  11:   </UI>
  12: </Mcml>

Per visionare il risultato al di fuori di Windows Media Center, nell'SDK troviamo un utile strumento: MCML Preview Tool(Windows Media Center).
MediaCenter2Attraverso il tool possiamo caricare il file senza dover effettuare l'operazione di installazione in Windows Media Center, osservando il risultato con pochissimo sforzo.






Prima di passare ad eseguire l'installazione, bisogna sottolineare che la nostra pagina MCML deve essere caricata:

   1: PageSession pageLoad = new PageSession();
   2: pageLoad.GoToPage("resx://Application1/Application1.Resources/HelloWorld");

Tramite il metodo PageSession.GoToPage è possibile navigare in una specifica pagina. Il parametro passato è un URI ad un file di risorse, in cui troviamo tutto il necessario per il file MCML (suoni, immagini ecc).
Nel caso specifico il file di risorse che viene generato alla creazione del progetto contiene il riferimento al file MCML:

   1: <data name="HelloWorld" type="System.Resources.ResXFileRef, 
   2:                               System.Windows.Forms">
   3: <value>markup\HelloWorld.mcml;System.Byte[], mscorlib, Version=2.0.0.0,
   4:        Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   5: </data>


A questo punto possiamo dare uno sguardo ai passi per l'installazione in Windows Media Center.

Come prima cosa la dll prodotta deve essere registrata nella GAC, e per far ciò l'assembly deve essere Strong Name.
In Proprietes del progetto esiste una tab Signing in cui possiamo indicare la chiave pubblica consentendo al nostro assembly di essere unico fra tutti.
MediaCenter3 










Dopo aver aggiunto una nuova chiave, possiamo salvare il tutto e compilare (Build > Build Solution).

Per completare la registrazione dell'assembly usiamo lo strumento gacutil.exe presente al seguente path:
C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin
Tramite il Command Prompt di VS 2008 lanciamo la seguente istruzione:
gacutil.exe /i path assembly
Non ci rimane che conoscere il token di chiave pubblica (tasto destro sul file), che possiamo ricavare andando a cercare l'assembly appena registrato nella GAC:
C:\Windows\assembly

La chiave recuperata deve essere indicata nel file di registrazione Registration.xml:


   1: <application title="Application1" id="{22651bad-1a66-44b2-adb6-7d2c89877d50}">
   2:   <entrypoint id="{9120d789-9fe7-498d-b7d3-bbf5722aa64a}"
   3:                 addin="Application1.MyAddIn, Application1,Culture=Neutral,Version=1.0.0.0,
   4:                 PublicKeyToken=qui token"
   5:                 title="Application1"
   6:                 description="Application1 Description"
   7:                 ImageUrl=".\Images\Application.png">
   8:       <category category="More Programs"/>
   9:   </entrypoint>
  10: </application>


Nel file XML andiamo ad indicare una serie di parametri come per esempio il titolo della nostra applicazione, una descrizione, un'immagine e cosa molto importante l'entry point in Media Center, per esempio il menù Catalogo Programmi.
L'ultimo passo consiste nel dare in pasto il file appena descritto al tool RegisterMCEApp.exe presente al seguente path:
C:\Windows\ehome
L'istruzione per la registrazione:
RegisterMCEApp.exe path del file XML
mentre se si vuole disattivare:
RegisterMCEApp.exe /u path del file XML
Finalmente possiamo osservare il risultato finale:

MediaCenter4 MediaCenter5

Per concludere segnalo un interessante articolo di Cristian Civera, che potete leggere qui.

0 commenti:

Post a Comment