Home > MSP, Programming, Tutorial, Vista Media Center > Vista Media Center SDK Guide 1

Vista Media Center SDK Guide 1

April 11th, 2008

Kravet for at følge med i denne guide er at man har Visual Studio af en eller anden slags og Vista Media Center SDK installeret.

Oprettelse af et nyt projekt

Det første vi vil gøre er at lave et projekt vi kan arbejde på og konfigurere det så vi kan køre det i Vista Media Center.

Efter at have installeret SDK’et så skulle være dukket nogle nye project templates op i Visual Studio’s New Project Dialog:

image

De nye project tempates er:

  • Windows Media Center Application
  • Windows Media Center Application – Background Application
  • Windows Media Center Application – Fundamental

Til denne del af guiden skal du bruge Windows Media Center Application.

Sign the assembly

Efter at have lavet et nyt projekt, skal der laves en strong key til assembliet. Det gør man ved at tage properties for projektet og gå under signing. Hvor "Sign the assembly" krydses af og "New…" vælges i dropdown boksen. I "Key file name" skrives nøglens navn (kan være hvad som helst, men jeg kalder den bare det samme som projektet hedder), hvor efter man kan sætte password på nøglen, gør jeg ikke.

Assemblien skal signes fordi, for at vista media center kan bruge plugin’et skal det lægges i Global Assembly Cache, og det kræver at den er signet.

Generer public key

Den strong key der er genereret skal herefter indsættes i Registration.xml. Det gør man ved at generere en public key til den med programmet "sn.exe".

  • Først skal assemblien buildes, Build -> Build Solution
  • Derefter tilføjes sn.exe i Tools -> External Tools…
  • I External Tools dialogen tilføjes blot et nyt tool C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\sn.exe med argumentet -Tp "$(TargetPath)" hvorefter Use Output Window markeres som det eneste af fluemærkerne
  • Kør nu sn.exe ved Tools -> Get Public Key
  • Kopier public key token
  • Åben Registration.xml og indsæt keyen istedet for insert_public_key_token_here

image

Kør i Vista Media Center

Hvis du compiler nu og starter debugging (F5) vil du få programmet MCMLPad.exe hvor du kan se dit MCML. Det er dog ikke så fedt når du skal debugge. Derfor vil vi gerne køre det i Vista Media Center og så debugge der.

Det skal dog lige nævnes at man ikke kan debugge direkte fra vista media center hvis ikke man har Visual Studio Professional eller højere. Det er fordi man skal bruge "Attach to process…" under Tools. Dog kan vi stadig gøre så man kan køre projektet direkte i vista media center ved debug start.

Lad os først få den til at køre plugin’et direkte i vista media center når der compiles release version.

Gå under Properties for projektet under Build Events. Her skal vi køre DevInstall.cmd efter at have buildet. I Post-build event tilføjes disse 2 linjer:

cd $(ProjectDir)
$(ProjectDir)DevInstall.cmd

Dette vil installere vores projekt i GAC’en.

Nu skal vi have Visual Studio til at køre Media Center istedet for MCMLPad. Først skal vi bruge 2 ID’er, vores plugin’s og det entrypoint den skal bruge (det kommer jeg lige tilbage til i en senere guide). Disse står i Registration.XML. Det første er den id attribut der er på application, og den anden er id attributten på entrypoint.

Gå derefter under Debug i project Properties. Sørg for at Configuration er sat til Release. Sæt Start external program til "C:\Windows\ehome\ehshell.exe", og command line arguments til:

/entrypoint:app_id\entrypoint_id

Det skal være uden krølle parenteser eg:

image

Gå nu i File->Save All og tryk F5 eller Debug->Start Debugging… (husk at sætte konfigurationen til Release)

Sidst og klart fedest: Real-time debug i Media Center

Det er denne del der kræver Visual Studio Pro eller højere.

Nu kan vi køre vores plugin i Media Center, men vi har ingen breakpoints og crasher skidtet får vi da en exception print out, men vi vil da hellere have rigtig debugging som vi kender det fra windows forms.

Det kan også lade sig gøre, man skal dog lave nogle krumspring. Først og fremmest skal vi i registrerings databasen og tilføje:

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Media Center\Settings\Extensibility]
"EnableAddInLaunchDebugging"=dword:00000001

Det kan du gøre manuelt eller via denne .reg fil: EnableVMCDebugging.reg. Det kan slås fra igen med denne: DisableVMCDebugging.reg

Det næste vi gør er at sørge for at Vista Media Center også bliver startet for Debug konfigurationen. Under project Properties skal du under Debug vælge Debug konfigurationen og så sætte de samme ting som vi gjorde for at starte med Release.

Derefter skal vi lige ændre på Build Events for at sørge for at Debug installeres i GAC’en istedet for Release versionen. Det er bare at ændre:

$(ProjectDir)DevInstall.cmd til $(ProjectDir)DevInstall.cmd /debug

Build og Start Debugging…, nu starter Vista Media Center op med en dialog boks der siger "Debug Application". Det er nu vi skal tilføje processen til Visual Studio’s debugger. Gå i Tools -> Attach to process eller tryk (CTRL+ALT+P), find ehexthost.exe og tryk attach.

Gå ind i Launch.cs og sæt et break point på app.GoToMenu(); vælg Media Center og tryk OK, visual studio skulle nu gerne breake :D

Jeg har ikke fundet nogen automatisk måde at attache processen når man debugger desværre :/

Slut

Nu har vi et projekt igang og kan starte og debugge det. Så skal vi bare lære hvad man gør herfra. Der er et monster der hedder MCML, der skal tæmmes og garanteret et par sære finurligheder ved at lave Vista Media Center plugins, men det gemmer jeg til de næste guides :)

Kilder:

felizk MSP, Programming, Tutorial, Vista Media Center

  1. November 19th, 2009 at 08:26 | #1

    my boss made me research this topic, i wasnt too happy, figured i would be bored to death (not my cup of tea) but your blogs allright mate ;)

  1. April 14th, 2008 at 17:20 | #1
  2. April 21st, 2008 at 20:45 | #2