×

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!

If you are doing Silverlight development, you are no doubt slapping in the <object> tag or using the <asp:silverlight> control (if in ASP.NET) to host your Silverlight content/application.  This is all great, but don't forget about deployment!

When I talk about Silverlight I like to relay a story I heard from one of the Silverlight program managers (PM) a while back.  The PM was pretty excited about a feature just completed in Silverlight and one of the samples that had been created.  He went home to show his wife and told her to 'go to 'dub-dub-dub-dot-something-dot-com' (yelling from the other room of course) and to tell him what she thought.  After a long pause of a few minutes he shouted back 'what do you think?'  Her response: 'It's lame.'  He was no doubt offended until he walked up to her machine and on the screen saw this:

Silverlight Install Image

The Problem

You see, 'Get Silverlight' means nothing to your mother-in-law (or wife in this matter).  Technology means nothing to non-geek users.  Content is king.  And to your non-savvy users (and even your savvy ones), leaving this default experience isn't a wise one.  It doesn't convey that there is anything of value by installing something they might not have.  It doesn't even convey what the action is going to be when they 'Get Microsoft Silverlight.'  Leaving this experience unchecked leaves your users in the dark as well as a reputation rank downward in my opinion.

NOTE: This site is likely riddled with these badges as seen above.  I'm claiming exempt status because they are samples :-).

While in Silverlight 1.0 creating a great install experience was possible, Silverlight 2 makes that process so much easier.  In Silverlight 1.0, the use of the silverlight.js file could aid in detection and direction to an alternate experience.  This method is still possible in Silverlight 2, and in fact might be a best practice still.  Most interactive developers using Flash use some method of script creation in instantiating the Flash host.  This is mostly due to the IE EOLAS "click to activate" issue that has been resolved and will remedy in an upcoming IE update.

Some Solutions

So that brings a few methods for instantiating the Silverlight control host.  You can still use a script method to do the check for you and provide alternate content or redirect to something.  You can also still simply include the <object> tag itself.  My favorite is using the simple <object> tag and tricking the HTML.  You see an object tag might look like this:

<object type="application/x-silverlight-2-b1">
    <param name="source" value="ClientBin/CallingServices.xap"/>
    <param name="onerror" value="onSilverlightError" />
    <param name="background" value="white" />
    <div id="no-sl" class="install-badge">Some descriptive information</div>
</object>

Notice the random HTML after all the params?  Browsers will read the HTML like a book (US-English) from top to bottom.  They get to the object tag and can't understand it, so will look at the next part of the DOM.  Param tags...nope don't get it.  Next part.  Oh, a <div> element...yep I understand...begin render.

Within here you can put an image or some element with a CSS class that is absolutely positioned, etc.  Bottom line is you own that experience.  It is now on you, the developer, to ensure that your users aren't just seeing 'Get Silverlight' but are being provided at least some explanation of what they are about to see, why they should install this plugin, etc.

Some Examples

Perhaps you need some inspiration?  Here's some examples from some recent sites...


Silverlight.net Gallery


Zombomatic Game on Miniclip.com


WWE Insider Video


Hard Rock Memorabilia Site


65th Annual Golden Globes


Major League Baseball Video

As you can see, the options are endless from very simple, to heavily branded. 

Testing your deployment experience

So now that you've decided you are going to optimized that "no Silverlight" experience, how do you go about testing it?  Well, here's a simple trick that I employ to do this.  There is no need to uninstall/re-install the runtime on your machine.  In fact, this will likely give you headaches in doing so and waste endless minutes :-).  Here's a simpler way.

In Internet Explorer you have the ability to manage your add-on experience.  To test your "no Silverlight" experience, simply do the following.

To make it easier go to a page with Silverlight content.  You can do this without this step, but it will cost you 2 extra clicks and I'm trying to save you time.

Next, go to Tools...Manage Add-ons...Enable or Disable Add-ons:

Now, find Microsoft Silverlight in the Enabled section and change the radio button to 'Disable' and click OK. 

You will be prompted with a message which you can just click OK through.  The page will be refreshed and the Silverlight plug-in no longer enabled.  Now any site you visit will give you the "no Silverlight" experience for you to test your deployment experience.  When you want to re-enable, simply repeat the process and choose 'Enable' and you are back in business.  No messy control panel uninstall/re-install mess.

I'm not a Firefox power user and couldn't find an easy way to do this rapidly without installing another plugin, so if anyone knows the similar method in Firefox, please enlighten me (or Safari for that matter).  I tried searching and found solutions of moving the plugin out of the /plugins folder in Firefox so I'd imagine you could batch script this out.  I really like the ease that Internet Explorer provides in managing my own preferences for each add-in running.  Looks like this gets even better in IE8.  I'm actually surprised it isn't a part of Firefox.

Summary

The bottom line is: don't ignore this experience.  This is your chance to explain that the user is about to see premium content, a better user experience, a fun game, whatever it is you are trying to convey.  I hope this has helped at least some be enlightened on ensuring you make that a work item in your task list and the tip of disabling the add-in is helpful to some. 


3/26/2008 4:28 PM | # re: Providing a great Silverlight deployment experience
Great post. Thanks for the inspiration.

No doubt this will be seamless in the future...we just have to manually make up the difference for now.
3/26/2008 10:37 PM | # re: Providing a great Silverlight deployment experience
Good Post, Silverlight is trying good to replace flash.
Gravatar
3/27/2008 9:41 AM | # re: Providing a great Silverlight deployment experience
In fact - in case you have silverlight(1.1 nor 2.0) not installed it's working fine. But the problem is when you have already SL1.1 installed, then tag with image source inside <object> tag, doesnt work :/ Is then, any way to detect such situation?
3/30/2008 3:55 PM | # re: Providing a great Silverlight deployment experience
Hi there,

I am also looking for the solution if there is any way to know which version of Silverlight has been installed?

This question may not be right to ask because microsoft claim that Silverlight control will automatically get updated at the client side. But still not sure if that would be a solution in case of off-line.

Please advise
3/30/2008 8:15 PM | # re: Providing a great Silverlight deployment experience
Ricky: the silverlight host exposes "IsVersionSupported" calls so you can check to see if version "X.X" is supported and if not, do something else.
4/4/2008 3:05 PM | # re: Providing a great Silverlight deployment experience
Is there a way to facilitate the installation via an ActiveX control instead of just linking to an exe? Flash does this and in my opinion it's way better than having the user save and/or run an exe. It seems like MS could build something pretty easily that would accomplish this by wrapping the setup no? Silverlight is awesome but unless the installation is as painless as possible, adoption will be weak.
4/4/2008 5:17 PM | # re: Providing a great Silverlight deployment experience
timmyg: here's the flash install/upgrade i experienced: http://www.timheuer.com/blog/archive/2007/12/04/flash-player-update-h-264-silverlight-install-experience.aspx

how is that different? i had to download/install an exe...
4/19/2008 9:34 PM | # re: Providing a great Silverlight deployment experience
According to Microsoft, the adoption of Silverlight will be triple to what is right now. All big content providers like Yahoo, AOL etc. are ready to adopt Silverlight.

Stay updated with Technology

http://feedshub.blogspot.com

12/2/2008 4:20 PM | # re: Providing a great Silverlight deployment experience
Your tip about "Testing your deployment experience" is great.. it helped me a lot!!!

Thanks!
Jacek Ciereszko
12/17/2008 9:56 PM | # re: Providing a great Silverlight deployment experience
how can I call back to the page once the installation has been finished?

reg.
1/3/2009 1:13 PM | # re: Providing a great Silverlight deployment experience
Hi Tim

I totally agree with your thoughts, so I immediately went out to add some code. I have Silverlight 2.0 and VS 2008. So I added code around the line that dispalys the install shield in the .Web file and did a test. "class="install-badge" is not defined so I assume there has been an update to the generated code.

It worked. But, when I re-enabled the Plugin, the page now displays with the content that I added (no install shield), but no longer continues on to my first page page. The current line being generated in VS is
Source="~/ClientBin/My_Site_Name.xap" MinimumVersion="2.0.31005.0"
Width="100%" Height="100%" />

So, I thought perhaps we could get a link to a slightly expanded source code example. I'm probably trying to do this in the wrong file or some other noobie mistake.


1/4/2009 8:45 PM | # re: Providing a great Silverlight deployment experience
ScCrow: if you are using the ASPNET Silverlight control then use the PluginNotInstalled parameter of the control to provide your alternate content. Also "install-badge" is not any default class so that's why you didn't find it anywhere :-)
Gravatar
7/23/2009 2:26 AM | # re: Providing a great Silverlight deployment experience
When Silverlight has been installed how come the <div> containing the useful info doesn't display? If HTML really reads like a book shouldn't this always be displayed?
Gravatar
7/23/2009 2:40 AM | # re: Providing a great Silverlight deployment experience
And can this solution be extended to display a Silverlight update screen if the sufficient version of Silverlight is not installed? Is this possible without creating large Javascript files?
7/23/2009 7:25 AM | # re: Providing a great Silverlight deployment experience
Ted -- I'm not sure what you mean. If you are referring to any HTML within the <object> tag, that's because if it is installed, you're seeing the plugin render instead of the HTML. Yes it reads like a book, but renders things when it understands them. So the browser that has SL plugin installed sees the object tag, understands it, and renders the content. The HTML within the <object> tag at that point is useless because it isn't a part of the <object> spec, so the browser ignores it.

For displaying a screen when it isn't installed -- this is exactly what the intention is for. Check out the install experience whitepaper on http://silverlight.net/learn/whitepapers.aspx for a complete walk through and sample code of all the options.
7/23/2009 11:06 PM | # re: Providing a great Silverlight deployment experience
Hi,
Nice post. My current problem with the install experience is that after silverlight installation is finished it pops up a dialog that says I should reload the page. However when I reloaded the page it again displayed the "Install Silverlight" button and I had to actually press Shift-F5 to reload the page properly for the Silverlight app to load.

Is there any way to avoid this experience?
Gravatar
7/28/2009 2:53 AM | # re: Providing a great Silverlight deployment experience
Thanks Tim that's really useful. I've managed to make it work as needed.
9/10/2009 12:23 PM | # re: Providing a great Silverlight deployment experience
Tim,
Will the Silverlight team ever create a <PluginNotMinVersionTemplate> ?
My application requires 3.0.40818.0 and if users have the released version, it has some minor problems, so I made the plugin require the MinimumVersion to be 3.0.40818.0.

I'd like to control the user experience so the users get a nice page, instead of the Silverlight popup... is this possible?
9/10/2009 1:27 PM | # re: Providing a great Silverlight deployment experience
Dave -- no we dropped the asp:Silverlight control for v3 and did not extend it.
2/2/2010 2:42 PM | # re: Providing a great Silverlight deployment experience
Hi,

How do i modify this to handle the case where my app is on an a disconnected network that cannot reach microsoft.com. I've downloaded the Silverlight_runtime.exe and assume I host it on network share or make it come back throught the web server. I'm abit new at this.
2/2/2010 5:14 PM | # re: Providing a great Silverlight deployment experience
John - if this is an internal enterprise application you can distribute Silverlight within your own organization. But right now we aren't widely enabling redistribution rights for other applications.
7/20/2010 9:56 AM | # re: Providing a great Silverlight deployment experience
We just did a deployment of silverlight at work and it worked so well. It was an easy process and we just love using it
5/15/2011 3:05 AM | # re: Providing a great Silverlight deployment experience
This is a good post. A customized install should be a prerequisite to live deployment.
One huge problem is that the www.microsoft.com/.../Default.aspx (Get Silverlight Page) is not localized. I like to let my users install from there rather than have the Silverlight.exe just popup from my pages.

I think my install presentations are better than netflix. I normally provide an embedded video showing the installation, screen-shots of the app, downloadable PDF instructions and the other highlights discussed in this article.

My bounce rate is still incredibly high by non-Silverlight enabled browsers. I'm loosing approx 30 thousand users a week.

The ria stat sites claim silverlight has an install base of near 68 percent. That is impressive but I cannot understand why they allocate resources to making videos etc on how to localize apps but they will not localize the critical "Get Silverlight" page.

MS really should find a way to simplify and enhance the install. Sure this is a non-factor if you are getting paid by the hour or are already established. For those who develop and monetize on their own, it's a different story.




7/26/2011 8:50 AM | # re: Providing a great Silverlight deployment experience
Pretty cool post.It's really very nice and useful post.Thanks for sharing this with us!it’s my first visit.Pretty cool post.It's really very nice and useful post.Thanks for sharing this with us!it’s my first visit.
Abilene Roofing Contractor

 
Please add 6 and 7 and type the answer here:

DISCLAIMER:

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.