My adventure creating a Media Center add-in, part 1

I've been reading Rob Mensching's series about the MSI directory table in his blog (here, here, here and here so far) and I really liked the format of telling a technical story in smaller parts, so I decided to try to find a topic that I could write about in a format like this. I have been searching for more Media Center-centric themes to write about so that I can start immersing myself more deeply into the features of the product as opposed to just the setup technologies that help us install it. So I thought I would try the end-to-end experience of creating some kind of Media Center add-in and write about it in stages as I try things out (partially because I'm not sure how much spare time I'm going to have to dedicate to this project over the next few weeks since I've got family and friends visiting this summer to enjoy the beautiful Seattle weather and writing it in a series like this allows me to space it out if I need to....). At any rate, here goes nothing....

I decided to try to learn how the process works for a 3rd party developer who wants to develop content/applications that can plug into Media Center. Granted, I work on the team and at Microsoft and as such have more knowledge about how things work behind the scenes in our product than a 3rd party developer would (I have a source code enlistment and can start reading code and debugging if I get really stuck for example). But I'm going to try my best throughout this process to limit myself to the same set of resources a non-Microsoft employee would have in order to better understand the pain points and see what things are really like for our customers and partners.

I begin my adventure tonight armed with relatively little knowledge about how to develop apps for Media Center. I know at a really high level that Media Center has an extensibility model and that there is an SDK that customers can download, so I figured the best place to start would be to download and install the SDK. I started by going to the main Microsoft Windows Media Center site to find the SDK download location. Try as I might, I could not find any information about the SDK by looking at the content accessible from this site. It does a really good job of highlighting why someone would want to use Media Center, and it gives advanced tips for setting up some of the trickier aspects of Media Center (HDTV recording for example), but the only downloads I can find are some power toys and some generic Windows XP downloads that are not specific to Media Center. Note to self - I'll have to ask around at work and see if I'm missing something obvious here or if it really isn't possible to find any SDK info from the main Media Center page....

Since I know from talking to friends who are Media Center enthusiasts that there is an SDK somewhere on the web for download, I used the search box in the top right corner to search for "Media Center SDK" and found the Media Center Developer Center and also what appears to be the SDK documentation site. After a couple of clicks on the Developer Center, I've arrived at the download page for the Media Center SDK. This page "recommends" that I validate that I'm running a genuine copy of Windows, but it appears the only way to get to the actual download link is to go through the validation page (even though it is not "required"). On the next page, there is a radio button where I can opt out of this validation, so I skip it for now just to see if it is really mandatory or still optional. Ah hah, finally I arrive at the page where I can download and run the setup MSI package for the Media Center SDK. After a few clicks through the setup wizard (which appears to have been developed using the Visual Studio setup and deployment project wizard, and which I confirmed to be the case by glancing at the MSI in Orca), I've got it installed and it conveniently opens C:\Program Files\Microsoft\Microsoft Windows XP Media Center SDK for me to start browsing through the stuff I just installed.

Since it is pretty late and I'm getting tired, I'm going to stop here for now. I'll pick this up again soon and see if I can figure out where I want to start now that I've got this SDK installed and I appear to be ready to start developing an add-in for Windows Media Center....

[to be continued]