I’ve found over and over, if I don’t upload pictures to the web when I first download them from my camera, then there’s little or no chance I’ll do it later. Out of sight, out of mind.
But I wonder…
If I had an add-in command in the My Pictures sub-app of the Vista Media Center, would I be more inclined to upload pictures to the web then (and give my mom at least a glimpse into my life more than once a year)?
Google developer help: plenty
Since I’m already personally using Picasa’s companion Web Albums for what few pictures I’m sharing, I’m inclined to tie the online component of such an add-on to Google.
Having already investigated the Google APIs, I figured there was likely an API tuned for the Picasa Web Albums, and so there is. Further, it appears that it provides the ability to post photos, create albums, update & delete photos, manipulate tags, and review existing albums/photos/comments/tags. Sounds like it provides more than I was even looking for.
From what I gather with a quick skim, the basis for the “PWA” Data API is the Google Data API. And while I don’t know whether it’s absolutely necessary, Google provides a .NET Client Library (currently v1.1.2) to speed web services client development.
Similar apps
Big Screen Photos v2 — the Yahoo Flickr client for Vista Media Center. It doesn’t enable you to upload the pictures hosted in Media Center, but rather to view the pictures that are already available on the Flickr site.
Yougle Vista — provides access to online Video, Music and Picture sites including Flickr. Still no upload capability.
PhotoConnect — extends My Pictures with some interesting functionality including the ability to email pictures to others. However, it looks like this vanished in a puff of smoke and synthetic ash.
FlickrMCE — another viewing app, only for Windows XP MCE 2005.
PictureBook 1.0 — screensaver add-in, not really all that similar after all.
Windows Vista Media Center add-ons: sorting through all this new technology
Most add-ons for Windows Media Center 2005 (i.e. Windows XP) or earlier were written as “hosted HTML” apps that ran outside the Media Center shell. Now, while hosted HTML apps may still work in Vista, the drive is towards either the MCPL/MCML or XBAP/XAML:
- MCPL: Media Center Presentation Layer (the programming model)
- MCML: Media Center Markup Language (the managed code language derivative)
- XBAP: WinFX XAML Browser Application (the programming model)
- XAML: eXtensible Application Markup Language (the language in which XBAP is more-or-less implemented)
However, it appears that the XBAP/XAML model has already been dumped by the eHome team. Lovely, not even a year out of the gate and they already drop support for the “future-forward looking” programming model — I wonder what hurdles they had to clear to be able to explicitly drop support for the whole WPF (aka .NET 3.0) (aka WinFX) (aka WS-*) company-wide drive.? Oh well, at least that’s one less choice to confuse me…but I have to bitch just this once: when can we abandon app-specific languages? Any language or programming model that starts with the name of the vendor-specific technology makes me feel more than a little soiled.
Other resources that should prove useful
- Windows Vista Media Center SDK v5.3 (just released last week — how freakin’ timely!)
- “Programming MCML apps for dummies” — ask and ye shall receive.
- Hanselminutes 82: Development for Media Center (podcast for beginners like me, with lots of links to the relevant MSDN articles on the technologies & techniques discussed)
- Media Center Application Design articles by Charlie Owen (various articles targeted at the beginner).
- Creating a Windows Vista Media Center application using MCML step-by-step — Charlie Owen’s documentation for app development, WiX installers and the source code too!
- The Digital Lifestyle Developer Blog — 11-stage development guide for Windows Media Center devs.
- Media Center Show — MCML Development Part 1 and Part 2 (videocasts with Ian Dixon and Aaron Stebner)
- Understanding Media Center Markup Language — hands-on lab from Mix07
- Four Part Series on Windows Media Center Presentation Layer — Francis Hogle’s articles on how MCPL works.
- MCML Preview Tool — looks like a really useful tool to quickly test the UI elements you’re generating using the SDK & Visual Studio.
- The Media Center Sandbox — where developer discussions and blogs go to breed, for both MCPL and XBAP.
- Building Client Interfaces for .NET Web Services — article with working sample code, step-by-step guidance and lots of real-world thinking on building a SOAP client
- .NET Web Client search on Google (various possible leads)
- Online WiX tutorial (for learning this obtuse and overly-complicated, but open source, installer-builder tool)
- Votive — Visual Studio IDE-integrated tool for building WiX projects
- HTML Agility Pack — for developing against HTML in ways similar to XML
Some specific coding issues that I’ve noted for future reference
- Reading XML and displaying data in MCML — tricks jumping back & forth between .NET’s XMLReader and MCML
- Need help with Images from an XML file to Repeater — code and discussion of issues when displaying multiple image files
- streaming video to a MCML based app — some advice on when to jump outside of MCML to accomplish web-like behaviours
- Preventing multiple instances of a Windows Media Center application from running at the same time — apparently this is a big faux pas with Media Center add-ins, so I’ll be sure to implement this.
- Creating a “loading page” for MCML apps — creating a one-time splash page that assuages user’s fears that their PC has halted while an MCML app initializes.
- Customizing the Windows Media Center Start menu in Windows Vista — fiddly tweaks to minimize the need for your users to scroll in the Start Menu (that apparently will be covered in the SDK, so check the v5.3 SDK or later)
- Mailbag: How are images displayed for custom tiles on the Media Center Start menu? — how to get the best results for the 75×75 “buttons”/icons for your app
- Strong Name signing for Media Center application assemblies — integrating strong name public key tokens into the XML file(s?) can be tricky
- Important Note about using RegisterMceApp.exe and RegisterApplication() — tricks when calling these during install
- Possible problem registering Media Center application on Windows Vista x64 — recommended ways to use RegisterMceApp.exe and WiX to avoid Registry issues
- New Windows Media Center add-in registration custom action DLL — useful when you haven’t grown the balls to take on the WiX learning “curve” (more like uphill cliff if you ask me)
- Design considerations for Windows Media Center applications on 64-bit operating systems — options for making these apps work well in 64-bit Vista
- Some useful things I have learned about Windows Installer and UAC — how cause elevation for Custom Actions, how to opt out of elevation, how to add the ElevationShield attribute.
- mcesoft Vista HTML SDK and Media Center support for Hosted HTML applications in Windows Vista — encourages the creation of reusable controls, and indicates the controls shipped in the SDK’s “Z application” are the first step towards reusable controls
- New MCML development resources — shared source controls project, pivots tutorial and a new blog — MCMLookalike is Steven Harding’s effort to build a suite of reusable MCML controls; also, tips on using MCML “pivots” (the multi-category sliders that re-sort content e.g by date, title, category)
- Article about how to use McmlPad during UI development — tips on using the MCML Preview tool during development
- Links to useful ways to customize the Windows Vista Media Center SDK project template — e.g. adding the Z application button to new projects
- How to dynamically update data in an MCML page without reloading the entire page
Interesting Tidbits
- 🙂 Add-ins run out-of-proc in a hosted process called ehExtHost.exe, and communicate with the main Media Center process using .NET Remoting over “Named Pipes” (aka IPC within .NET).
- 🙂 Media Center unloads the add-in when the Launch( ) method exit.
- 🙂 The entry in More Programs is created by the running of RegisterMceApp.exe not by the running of the add-in itself.
- 🙂 In an MCML application, you can only embed a couple of visual elements, NOT including ActiveX controls (i.e. no native Flash rendering).
- 🙂 You can’t embed a WPF app / window inside of MCML.
- 🙂 Charlie Owen has invited anyone to provide good/bad developer feedback on Media Center and the SDK, and left his contact info here.
- 🙂 You can’t override ANYTHING on the Windows Media Center screens — if you want any new functions, they have to be added on completely new screens, which would mean re-building the whole ‘Videos’ library.
Conclusion
I’m not 100% convinced I’m going forward with this yet — I’m inclined to spec out the features, dig into the SDK/MCMLookalike/Codeplex-hosted sources to get a feel for just how much (a) volume and (b) complexity of code I’m facing, and then decide whether to keep pushing forward. I’d sure appreciate feedback from anyone who has ever delved into any of these areas for encouragement or “there be dragons” warnings…
- MCML programming
- web services integration in managed code — Google or otherwise
Cheers all!