| Comments

Today (at approximately 10:00 AM PST) our team released an update to the Silverlight 4 runtime.  This update, dubbed internally as “GDR3,” provides an update in the following key areas (KB2495644):

  • Timestamp issues with media playback and VC-1 codec
  • Visual Studio IDE crash when profiling a Silverlight application which has a pixel shader
  • Enabling Silverlight to run as a 32-bit process in 64-bit Firefox on OSX
  • DRM fixes for a “6207” error when playing protected content after upgrading to a version of Silverlight
  • Memory leak fixes with regard to the use of in-line DataTemplate
  • Out-of-browser applications failing to update if the application name was changed
  • Media playback error when the media streams have redirect information
  • Improving network latency (KB2505882)

Many readers of this blog will likely zero in on the memory leak fix here.  The issue is discussed/debated/ridiculed ad nauseam on the forums relating to this issue.  If your customer applications are facing this issue and you chose not to apply one of the two workarounds, then you want to encourage your customers to upgrade to this release.  This can be done using the minimum runtime version attributes in your <object> tags where you use Silverlight.  This will prompt the user for an upgrade.  Of course, I’ve stated my opinion many times before that this should be a customized experience and we’ve even provided sample code to do so in our installation experience whitepaper.

‘I noticed <your-favorite-bug/feature> isn’t fixed here’

Each service release doesn’t fix our backlog completely.  If there is an issue you are seeing with Silverlight after applying this update, please, please, please log a bug on the product.  Don’t assume someone else has.  There is a specific way you can log a product bug on Silverlight as I’ve outlined in this post: Ways to give feedback on Silverlight.  The ideal bug is one that is detailed, reproducible, and provides an actual repro project/sample.  This is the fastest route to getting a bug understood and evaluated.

Getting the update

As with all service updates, this update will be made available to customers via Microsoft Update.  If you are a developer and don’t want to wait, you can download the bits here (please be aware network propagation across the globe might take a few hours):

There is NO SDK update for this release.  As a developer you only need to update the developer runtime on your machine to continue enabling Silverlight development but to also have the new runtime on your machine as a user as well.  Please note that by you, the developer, simply having the updated dev runtime doesn’t “force” your apps to use it.  This is controlled by using the minRuntimeVersion flags in your <object> tag to trigger what the minimum requirement is for your application.

Hope this helps!

| Comments

Small public service announcement here for Silverlight developers…we released a minor update to the runtime and SDK today.  You may see this referred to as Silverlight 3 GDR2.  Formally it is version 3.0.40818.0.  Usually when a release pops up people are curious about what is in it and why there wasn’t some major announcement.

NOTE: “GDR” is Microsoft-speak for general distribution release.

If you are interested in the full release history for Silverlight it is always available online (click the deployment section).  This latest minor release really had several updates for improving some media and network scenarios, but namely the main driver on this release was GB18030, which is a Chinese government standard for support of its national characters.  The standard reads:

“All products currently sold or to be sold in China must plan the code page migration to support GB18030 without exception. GB18030 is a "mandatory standard" and the Chinese government regulates the certification process to reinforce GB18030 deployment.” source: http://gb18030.org

So yeah, we needed to do this :-).  Silverlight made necessary changes to ensure that Blend and Visual Studio would be in compliance.

How will this affect my users?

Most likely it won’t unless you know about the fixes and have been a customer of one of the needs.  The driver for your customers/end-users of your applications is the minRuntimeVersion attribute of the plugin.  This is what tells the plugin on the end user machine what version they must have at a minimum to support your application.  Unless you change this to 3.0.40818.0 then your app isn’t likely to be affected.

If you need the update to comply with GB18030 deployments for example, then you’d want to modify the minRuntimeVersion to suit your needs.  This would prompt users with an older version to install the update.  You can make this a better experience for them by following the guidance in the Silverlight Installation Experience whitepaper (you can see a very simple implementation of this here).

What about my development environment?

For your development environment, you’ll need to upgrade to the latest development runtime.  If you try to install the end-user runtime on a developer machine, you will not be successful.  This is like trying to upgrade your turbo car engine with the standard V8.  The developer runtime is a superset so you can only upgrade to another developer runtime.

The links available at the Silverlight Community Site in the Get Started section are still valid (see developer runtime links at the bottom of that page for Windows and Mac).  There are no new Silverlight Tools update you need to install at this time.  There were some minor updates to the SDK which aren’t required, but again, if you want the latest, you can always get it.

That is all.  This is not a major update, but if you’re like me and can’t stand having anything but the latest, you can go out and get it.  Note that all your current installer links for your end users will remain to work always.  We update our installation handlers on our sites each release to be appropriate.

These updates went live approximately 10:00AM PST.  There may be some still propagating across the giant tubes of the interwebs.

Hope this helps!

| Comments

Yesterday a minor update to the Silverlight 2 runtime was released.  You may see terms of “GDR 1” floating around.  That’s pretty much an internal term at Microsoft referred to as “general distribution release” – yeah, I know we have a lot of random terms.  Think of it just as an incremental update.  If you are curious for Silverlight’s entire release history, you can view that here.

So what’s in it?  Well, nothing earth shattering if you were expecting feature updates.  There were some needed fixes based on customer feedback that we included in this update (which is version 2.0.40115.0).  Basically I would bucket it into a simple list for you:

  • Various accessibility fixes relating to UIAutomation
  • Fixes for certain anti-virus vendors scanning algorithms
  • Much needed fix for OSX platform when users modify their font locations (i.e., people with font management tools usually)
  • Bug in IsolatedStorage quota increasing when the user’s display language is set to one that Silverlight has not been localized to

That’s about it…no new controls, nothing suddenly going to make you amazed and shocked.  But it was a needed release to fix these issues. 

So what should you do?  Depends. 

If you are a consumer…

You really shouldn’t need to do anything unless you are specifically experiencing one of the issues above.  Web developers using Silverlight and needing their user’s to have this update will update their site and let you know.  There isn’t a huge need to rush out as an end-user and download the update.  Besides, if you have it configured to automatically update, then in due time you’ll get the update through that mechanism and won’t have to do anything.  If you absolutely want to be on top of things, then feel free to grab the latest updated runtime by visiting the download link.

If you are a developer…

If you are directly affected by the changes above then you should update your application.  There are really two things you need to do:

For the latter note this is a simple change.  Update your “MinRuntimeVersion” attribute in your hosting page/content to ensure that end users have the latest runtime version for your application.  Again, you should only really need/want to do this proactively if you (or your users) are directly affected by the updates in this release!  Here’s how you’d do it.

NOTE: Even though you update the developer runtime the Visual Studio project templates are not updated to set the default runtime version to the updated version so each new Silverlight project using those templates will still reference minRuntimeVersion=”2.0.31005.0” – if you want to change that you can modify the template.

UPDATE: How to modify the default value of the template

I’ve received some errors myself after changing this, so while it sounded like a good idea :-), I can’t recommend altering this reg value to the updated version – if I find out why, I’ll post here.

I got some questions about exactly how you would get the default web templates to change the generated test pages to emit the updated version number.  Since these are pages in a web project and not the Silverlight project, it isn’t easily found.  In fact, that value gets pulled from a registry setting.  The setting is at (removing the Wow6432Node if you are not on 64-bit Windows):

   1: [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Silverlight\v2.0\ReferenceAssemblies]
   2: "SLRuntimeInstallVersion"="2.0.40115.0"

and you need to change the value to match what you want that to be.  Again, this is not a required step at all.

As a reminder, messing with your registry can be dangerous if you have no idea what you are doing.  Backup your reg keys, don’t blame me if something goes wrong :-).

If you are using the ASP.NET Silverlight control you’d modify the MinimumVersion and AutoUpgrade attributes:

   1: <asp:Silverlight ID="Xaml1" AutoUpgrade="true" runat="server" 
   2:                 Source="~/ClientBin/SilverlightApplication3.xap" 
   3:                 MinimumVersion="2.0.40115.0" Width="100%" Height="100%" />

If you are using the <object> tag instantiation you’d modify the minRuntimeVersion and autoUpgrade attributes in the <object> tag for your Silverlight application:

   1: <param name="minRuntimeVersion" value="2.0.40115.0" />
   2: <param name="autoUpgrade" value="true" />

If you are using Silverlight.js to create the object you’d modify the version attribute when passing it in to the properties parameter of the createObject function (sample):

   1: Silverlight.createObject(
   2:             "ClientBin/SilverlightApplication1.xap",  // source
   3:             silverlightControlHost,  // parent element
   4:             "slPlugin",  // id for generated object element
   5:             {
   6:                 width: "100%", height: "100%", background: "white", 
   7:                 version:"2.0.40115.0"
   8:             },
   9:             { onError: onSLError, onLoad: onSLLoad },
  10:             "param1=value1,param2=value2", 
  11:             "context"    // context helper for onLoad handler.
  12:         );

That’s it!  Hope this helps.  The team is diligently working on Silverlight 3!