First time here?

You are looking at the most recent posts. You may also want to check out older archives. Please leave a comment, ask a question and consider subscribing to the latest posts via RSS or email. Thank you for visiting!

I’ve been promising this for a while and I’ve ranted about creating good installation experiences for Silverlight applications before as well here and here.  Well, our team rallied and created some new guidance and sample code to provide for you to implement the best possible experience.  The guidance whitepaper can be found on the Silverlight Community Site in the whitepapers section and includes:

  • Documentation for defining a good user experience
  • Sample code for media applications
  • Sample code for non-media applications
  • Sample code for implementing various states: not installed, upgrade needed, browser restart detection

The sample code is easy to understand and was templated so that you could change things to your brand/application.  The media sample can be dropped into your Expression Encoder templates easily and does a lot of the magic for you without having to thing (i.e., getting sizes of media, snapshot of media for image, etc.).

Hopefully this will help you understand the process more and provide you with the information (and code) you need to complete the best possible experience in your site.  You’ve spent the time developing your application, make sure you spend the time delivering the best install experience for those who may not have Silverlight yet.

Download the whitepaper and code today.

Hope this helps!

This work is licensed under a Creative Commons Attribution By license.

4/11/2009 3:35 AM | # re: Silverlight installation experience guidance posted
Hi Tim,

Nice stuff again!
But should'nt someone have run the spell checker?
In the footer:

4/11/2009 8:45 AM | # re: Silverlight installation experience guidance posted
Hi Tim, yeah, there are some various spelling mistakes in the whitepaper.

Good job overall, but I'd like to offer a suggestion.

First of all, another prompt type should be offered other than the ones given, I'd call it the NotOfficiallySupported prompt, this is to be displayed to users of Chrome and Windows Safari where MS doesn't officially support it yet, but the plugin will run albeit with some issues.

The second suggestion ties into the first, right now Silverlight.js uses 'top.location=SilverlightInstalllink' where the target page will then run a useragent check and redirect the request to the appropriate EXE install file. Unfortunately in the case of the unsupported browsers like Chrome, instead of the EXE file a page with the Unsupported Browser message is displayed which of course takes over from the content page.

I guess what I'm looking for is for a way to detect browsers that are not supported but known to work, and then allow us to redirect our users to the install EXE directly without going through a page that does useragent detection. This of course puts US, the content provider with the responsibilty of telling the user that there might be problems when using the unsupported browser.

This is an important issue because I was showing the SL install experience to a client who was using Chrome and MS's warning page was deemed too scary for the average user. ;)
4/11/2009 10:37 AM | # re: Silverlight installation experience guidance posted
Also, the URL which Chrome is being redirected to.

Is also saying that.
"The site that you visited was built for an earlier, beta version of Silverlight - not the current one. Please contact the site owner to let them know that they must upgrade to the latest release of Silverlight 2. Let us know if the site is not updated shortly so we can try to assist in upgrading the site to the latest Silverlight technology."

I guess this is due to one of the version parameters?
4/13/2009 4:20 AM | # re: Silverlight installation experience guidance posted
I completely agree with Marauderz. I use Chrome to develop Silverlight application, but installation experience in Chrome is problematic, though my application works just fine. It should not disallow user to install Silverlight if user is using Chrome.
4/13/2009 10:20 AM | # re: Silverlight installation experience guidance posted
Marauderz/esh - Chrome is not an 'officially supported' browser which is why the official guidance blocks it. This is an easy fix though. The guidance uses the Silverlight.supportedUserAgent.js script which is where Chrome is being blocked. You can modify that easily if you want to -- I make note of what to modify here: timheuer.com/.../...-google-chrome-user-agent.aspx
4/13/2009 10:21 AM | # re: Silverlight installation experience guidance posted
Marauderz -- you are being directed to that message from a site -- which site is that? It looks like a site built with an older version (as the error suggests).
4/13/2009 7:23 PM | # re: Silverlight installation experience guidance posted
I was just using the code included in the GenericWebApplication demo. After some snooping around of my own, it seems like it's because of the v=2.0,2.0 querystring parameter, since when I manually call Silverlight.getSilverlight() it passes the page a parameter of v=2.0. Looks like it'll call it with the incorrect querystring, if you were using Google Chrome and call Silverlight.getSilverlight("2.0.31005.0"), calling just Silverlight.getSilverlight() on Chrome does not cause the old version warning to appear.

I know Chrome is not an 'officially supported' browser, but a lot of people don't understand what that means and the only thing which they'll see is that "Chrome is not supported by Silverlight" since the sample install pages given run the UA detection check before even running the code to create the plugin. I made my page inform the user that Chrome is not officially supported by Microsoft, and they'll get a warning message to that fact when they hit the install link, and that we will ensure that the code we write will work in Chrome.

I understand that there might be certain legal complications if you released code that detected Chrome as a supported browser when it doesn't work properly. Maybe you can amend the UA detection javascript file say in a commented script block, and the whitepaper to inform users about this decision and how they can uncomment the script block to detect Chrome as a supported browser. Then maybe at the same time change the AGInstaller script to give a unsupported browser warning when getSilverlight() is called?

In its current state I'm sure there's going to be people who download the whitepaper, run the sample code and then complain that Microsoft doesn't support Chrome.
4/13/2009 8:23 PM | # re: Silverlight installation experience guidance posted
Marauderz -- where are you seeing the v=2.0,2.0 being passed in -- that looks like a bug in our example, but I don't see that happening?
4/14/2009 2:59 AM | # re: Silverlight installation experience guidance posted
Under the Install Experience sample code, WebAppInstall sample. I modified the code which Generated a small installer for my page, where the Get Silverlight link pointed to javascript:Silverlight.getSilverlight("2.0.31005.0") which I guess in the Silverlight.js file in that example is redirecting to v=2.0,2.0 ... hmm.. I did do one extra change to the Silverlight.js though I don't think that should be the cause. I changed the redirection from window.top.location=installerlink to window.open(installerlink) cause I can't have the installer page overwriting my page if the user is using Chrome.
4/22/2009 5:29 PM | # re: Silverlight installation experience guidance posted
Very good whitepaper!!
I noticed a few typos, who can I submit them to ?
4/23/2009 2:53 AM | # re: Silverlight installation experience guidance posted
The whitepaper covers the cases when the <Object> Tag is used for the Silverlight components of the page. Is it possible to extend the document in order to include the improvement of the installation experience when the ASP.NET Silverlight Control is used in .aspx pages?

4/23/2009 7:18 PM | # re: Silverlight installation experience guidance posted
Stergios -- we're actually working with the ASPNET team in looking for ways to version the control to include this experience or additional PluginNotInstalled-type nodes on that control.

Please add 3 and 2 and type the answer here:


The opinions/content expressed on this blog are provided "ASIS" with no warranties and are my own personal opinions/content (unless otherwise noted) and do not represent my employer's view in any way.