I recently undertook an exercise to convert the installer source files for the Q sample application in the Windows Media Center SDK from WiX v2.0 to WiX v3.0.  Since I wasn't sure how much general interest this topic would have, I posted an item on my personal blog that describes this experience.

Of particular interest to me in WiX v3.0 is the Votive Visual Studio 2005 add-in.  Votive allows you to create a WiX project (.wixproj) and include it in the solution for your Windows Media Center application.  Then, you can easily configure Visual Studio to rebuild your application binaries and repackage the MSI sequentially.  You can also use MSBuild to perform these build steps if you would like to script your build process instead of using the Visual Studio IDE.

For folks working on creating deployment solutions for Windows Media Center applications, I encourage you to check out this blog post and download the sample setup source files and build scripts that are included in the post.

You can find the blog post at http://blogs.msdn.com/astebner/archive/2006/12/10/converting-the-q-sample-application-setup-to-use-wix-v3-0-and-votive.aspx.



Categories: Sample | Comments [0] | # | Posted on Wednesday, December 13, 2006 1:08:38 AM (GMT Standard Time, UTC+00:00)   

Pete and others in the comments bring up some good questions over on the Why Our Look & Feel Isn't Available To Applications post. My response warrants a broader distribution than a comment in reply.

At Windows Vista launch (actually, probably at CES 07) you will see at least one example of 'what people want' which could not be accomplished solely with our look and feel. Again, those partners would not have wanted to adopt our brand, and I would have personally HATED to see them do so. I'll try to remember to post 'why' when those are made public. It's fairly easy to envision the kinds and types of apps which could be built with our look and feel in mind, and then build the platform to just accomplish those. But thats very limiting and, frankly, not very much of a challenge. It also doesn't 'push the envelope' which, in some respects, a platform needs to allow people to do. Also, one of the guiding principles for our platform is to not lock the entire world into our assumptions about what types of apps are wanted. We want to enable people to build things we can't envision. Just FWIW.

And, as many of you have noted, you can reference Microsoft DLLs and use resources straight out of them. Luckily most of you also note this is not supported, might violate some EULA along the way and (most importantly) may very well not work in later versions, etc.

Feel free to use those. Seriously. Party on. Go crazy. Knock yourself out.

But do understand we never tested, planned, scoped or have any plans to test app compatibility for this approach. It simply will not happen. Also note these resources are intended for internal Microsoft consumption only and we are free to change them at any time, without letting you know. Development work using this approach isn't valuable to us, so we will tend to ignore your feedback as it doesn't help further the platform. Also, I feel compelled to tell you there are things on the horizon for vNext which would make me personally shy away from using them. Yeah, I know, it sounds like I'm trying to use scare tactics. I'm not trying to do so -- I'm merely hoping to avoid having to come back later and say 'I told you so...' because someone is screaming 'Microsoft broke my app!' when they should have known better. Of course, now that I've posted this, I've told you so. :-)

Long story short: If you don't see it documented (editorial or code sample) in the SDK but you think it's still a valid, long term approach: Post a question to http://discuss.mediacentersandbox.com or (IF you have already posted to the discussion group) drop me an email.

Categories: Media Center Application Design | Windows Vista | Comments [3] | # | Posted on Sunday, December 10, 2006 5:41:56 PM (GMT Standard Time, UTC+00:00)   

Go check out comment number 80 at http://blog.retrosight.com/CommentView,guid,d792aa21-7b6e-4f0f-acab-76cae5e3bbe5.aspx#commentstart. My favorite quote...

"Everything to everybody will end up being no good to everybody instead."


Categories: Humor | Comments [4] | # | Posted on Thursday, December 7, 2006 7:50:34 AM (GMT Standard Time, UTC+00:00)   

I've been meaning to do a 'brain dump' of why we don't make the Windows Media Center look and feel available to third party developers. Here goes...

Application Compatability Risk
We know exactly who uses our buttons, galleries, templates, etc. -- us. If we change these we break exactly one application -- Windows Media Center. Making them available to third parties imparts a certain amount of risk in that we can break applications without knowing we have done so. For example, we have tweaked media galleries in every version of Windows Media Center to date. Compare the music gallery in Emerald to the one in Diamond, for example of one of the more dramatic changes. What happens if your app is based on our gallery because it assumes certain things about that gallery which are incompatible with our new gallery. Trouble for us -- and you.

Variety Is The Spice Of Life
It would be a very boring world if every application looked like Windows Media Center. We do not have the market cornered in great experiences designed for use with remote control. Now that we have a platform (Windows Media Center Presentation Layer) which allows you to do the same class of animations (including full fidelity remoting to XBox 360 Media Center Extender) as Windows Media Center itself we no longer have this 'thunking down' into a low fidelity HTML experience. I'm excited to see what folks are able to do with this power at their fingertips, and certainly expect developer enthusiasts to start shipping features which surpass our own (have you seen this http://mobilewares.spaces.live.com/blog/cns!78533A1A2E078194!177.entry -- my wife was asking how she could keep track of Law & Order episodes the other night, and this app holds the promise of just that feature --pretty darn cool).

Public vs. Private Platform
Because we are both a product and a platform we only have so much time to create the public platform, and the public platform will always be a subset of the private platform (stuff we use to create our product) due to this time constraint. The Windows Media Center user experience relies in some cases on private platform features not present in the public platform. Let me give you an example: The lens effect seen on the Windows Media Center Start Menu when you navigate items in the horizontal strips. Our design team wanted a very specific (and quite subtle) look and feel in this lens effect which could not be created to their satisfaction without a *huge* investment in MCML authoring (and even then, we still really couldn't give them exactly what they desired). So we wrote new rendering code (which is in itself non-trivial) to accomplish the effect -- but it came in too late to be considered part of what we could expose publicly. At some point in any software you have to make a decision about what you will vs. won't ship (even if you use an Agile method or 'ship daily' as can be done with web apps). All of that to say this: It's not possible to give you the controls unless they can be accomplished with the public platform. Classic chicken or egg first problem.

Focus On The Fundamentals
We are still focused on making sure the platform fundamentals are in place -- for example, expanding on what you can do with web application approach (see http://blog.mediacentersandbox.com/PermaLink,guid,cb622812-d80f-45d2-82d6-a54099e62e21.aspx). For example, you can't use session cookies in web apps today -- it's way more important to get this in than trying to recreate Windows Media Center look and feel for the public platform (see previous point).

Maintaining Brands
I'm sure some folks will zero in on this particular point and say 'I knew it -- it's all about the money!' So, up front I'll admit this could also be titled 'who pays our bills' -- which is why I put it at the bottom of this list -- so you would read the prior items first and hopefully see it's a wholistic decision process. We are, after all, out to make a profit for ourselves and shareholders. With but a few exceptions, everyone who has a day job does it to make a living. This puts food on our table and a roof over our heads. But I digress... We make the platform for multiple audiences -- big, brand name partners and individual developer enthusiasts, and many, many medium and small entities in between (think in terms of Large, Medium, Small and Individual audiences). Unfortunately, the needs of these groups will inevitably conflict in some ways -- and this is one of those areas. The big companies who have well established brands will never use a Microsoft brand for their experiences -- it diminishes their brand if they do (and they spend GOBS of money and resources into maintaining their brand -- sometimes too much, and at the expense of great experiences, but that's a topic for another day). We could do a bunch of work to expose our look and feel, but the large and medium shops will never use them. Never. And increasingly, neither do the small shops. Honestly, it's never come up in the list of feature requests from large or medium shops and only very rarely from the small shops. That means we can realize a zero return on investment in this area in terms of dollars. At the end of the day, those partners are what makes or breaks our platform from a 'budget' perspective. It would be great if we could make a platform solely for the individual (aka developer enthusiast) audience, but at this point in the Windows Media Center platform life we can't build a business on this alone. As we grow, and developer enthusiasts grow, we hope to do more things specifically for this audience. The Z sample application is a great example of where I specifically added 'features' to our SDK which would target and assist the individual developer enthusiast -- and hopefully it's a great start.

Maximum Flexibility
Our platform provides for maximum design flexibility at the cost of reuse. We propose 'one size fits all' is not a true statement -- therefore the platform is one which can be tailored at the extreme for any purpose. We understand this precludes many development folks who are used to other types of platforms which provide controls. We've been pretty honest and straightforward the platform may be difficult to grasp for the mass market developer or weekend coder.

Resource Constraints
As with any software product or platform there is a finite amount of resources to put into the project. We've evaluated the idea of including the Windows Media Center controls in our platform resources with each release. And with each release it's been deemed as less valuable than improving the features of the existing platform of visual primitives. Of course, we are still very early in the lifetime of this platform -- at the time of this writing, just over a year since it's been commercially available to consumers. Stick with the platform for 10-15 more years and let's see what happens to this request over time.

[3/26/2008 Edited To Add the Maximum Flexibility and Resource Constraints sections.]

Categories: Media Center Application Design | Windows Media Center | Comments [11] | # | Posted on Thursday, December 7, 2006 7:32:37 AM (GMT Standard Time, UTC+00:00)   
RSS 2.0
Sign In | All Content © 2014 Charlie Owen

This is a personal weblog. The opinions expressed here represent my own and not those of my employer.

Powered by newtelligence dasBlog 2.3.9074.18820