Sometimes I hear of people visiting a site that prompts them to install Silverlight infinitely. If they click the button to install Silverlight, the installer downloads and seems to run fine but then when they refresh the page, it just prompts them to install again...

So, what gives? Did the install work or not?

I've seen a handful of reasons why this can happen and I'll articulate a few of the most common ones here.

In my experience, this scenario is often due to a bug on the site but not always. So, the first thing to figure out is if it is Silverlight or the specific site.

Try visiting http://www.microsoft.com/Silverlight and see if the Silverlight content on that page loads for you. Currently that site will show a carousel app that shows a few sites that use Silverlight. If you hover over it and right click on your mouse, you should see "Silverlight" in the right click menu.

If you see a prompt to install Silverlight on that site:

  • Is it installed? If you are on Windows, check the Programs Control Panel applet and see if Microsoft Silverlight is is listed as installed. On a Mac, check /Library/Internet Plug-Ins to see if Silverlight.plugin is there.
  • Is it disabled? Check your browser's add-ons menu (e.g. in IE click Tools -> Manage Add-ons) and if you find Silverlight in there and it's disabled, enable it and hopefully you'll be good to go.
  • Something else? You might want to try a different browser to see if it is browser specific. You might also try the setup & installation forums on http://Silverlight.net.
    If Silverlight works fine on the Silverlight site but not the site you were trying to visit, you're probably going to have to contact the site author. If you are the site author or you're just curious about what can go wrong, here's a few things that I've seen which causes the infinite install prompt loop.

Wrong mime type specified on the object tag

At the obvious end of this bucket, a site might specify a totally bogus mime type. This isn't common because the site won't work for anyone, including the developer that posted it but I've learned you can't rule anything out. :)

On the less obvious and far more common end, I've come across a number of sites that were built to target one of the Silverlight 2 Beta releases and they specify the Beta-specific application/x-silverlight-2-b1 or application/x-silverlight-2-b2 mime types in the object tag. We knew ahead of time that the Beta releases would NOT be compatible with the final Silverlight 2 so we gave them special mime types that only work for those Beta releases. We also told people to use a special Beta-specific installer URL so that use of the mime type wouldn't be horrible because the URL goes to a page on mscom/Silverlight that says the site you visited was built against a Beta that is no longer available. But, the infinite install prompt rears its ugly head when sites use the Beta mime type but link to the currently released Silverlight installer instead of the link we asked them to use... Installing the currently released Silverlight runtime doesn't register the Beta mime type so you just get prompted again. If you have or find a site like this, tell the site author to either take the content down or update it to work with an officially released version of Silverlight.

Required version is too high

This one also has a couple variations.

Again starting at the obvious end, I've seen sites with HTML or javascript that checks to see if you have a version of Silverlight that doesn't exist yet and prompts you to install the current release if you don't already have it. Usually this happens because of a typo such as specifying a minRuntimeVersion of "20.31005" instead of "2.0.31005" (2.0.31005.0 was the Silverlight RTM version). No matter how many times you install Silverlight 2, you'll never have Silverlight 20 and so the site will keep prompting you to upgrade. As before, this one is rare because the site can't work for anybody including the developer that built the site. But, sometimes people make a quick edit that they know can't possibly break anything so they don't test the change and end up with a typo or cut & paste bug...

The more common variation of this category is a site that is built against a Beta or Release Candidate that isn't publicly released to end-users. This has happened a handful of times with the Silverlight 3 developer preview release that was made available a few months ago. The site requires the Silverlight 3 Beta and so it prompts you to install Silverlight or upgrade to the latest release if you don't already have Silverlight 3 installed. If it specifies a minRuntimeVersion of "3.0.x.x" it might cause your currently installed Silverlight 2 runtime to prompt you to upgrade (a "real" dialog that isn't html) or maybe they prompt you with their own web ui to install. Either way, when you click to install/upgrade it just installs Silverlight 2 again because that's the latest release that is publicly available. There's a couple bugs here. One bug is that the built-in prompts from Silverlight 2 don't tell the website what version of Silverlight was required so the website can't do something intelligent. That bug is our fault and I'm happy to say we've [mostly] fixed it in Silverlight 3 so when Silverlight 4 beta sites start showing up in the wild hopefully we won't see this issue as often. The other bug is that the site author posted a Silverlight application built for an unreleased Beta on the Web with an installation/upgrade UI that doesn't work because the unreleased Beta the site requires is by definition not yet released. If someone tells you to check out a Silverlight application built for an unreleased Beta they should tell you what you need to install and where to get it before telling you to go to their site. Unfortunately, since the site developer has the unreleased Beta installed they don't see the problem and so they don't "do the right thing" before publishing it live.