RedBits My Ass


One of the small neglected features of what’s been happening with .NET 3.5 recently is the whole mess surrounding what’s collectively referred to by Microsoft RedBits vs. GreenBits.

What provoked me into writing about this in this blog is that Microsoft bit me in the ass (or screwed me, depending on your preferences I guess) and got my machine into a situation that while .NET 3.5 redist WAS installed (presumably), it really wasn’t. Sounds funny innit?

It appears (after spending almost a full day trying to drill this down) that to get a full working version of .NET 3.5 it is might not be enough to have an install of the .NET 3.5 redist…
Daniel Moth for MS gives a nice theoretical explanation about this in his blog:

Too bad it doesn’t actually contain enough information. and too bad that MS has a crappy package management system which is capable of bringing a working machine into a “in-limbo” situation. Hey MS, here’s a pointer on how to make a package management system: http://en.wikipedia.org/wiki/Advanced_Packaging_Tool

The problem is that in reality the .NET 3.5 is made up of two separate parts… One is the .NET 3.5 redist, and the other is .NET 2.0/3.0 SP1.

This is actually depicted in the picture above… The “red” circles around the .NET 2.0 and 3.0 yellow ellipses denote the “RedBits” or the additional updates that need to be installed in .NET 2.0 and 3.0 independantly (!) before installing .NET 3.5.

As you can see, certain new APIs in MSDN, like Socket.SendAsync, are fully supported in .NET 2.0 SP1, even if you don’t have .NET 3.5 installed.
This kind of makes some technical sense as the SP1 update is downloadable for x86 / x64, as well as a .NET 3.0 SP1 (which appears to be architecture independent…) as a separate update from Microsoft…
Unfortunately there is not easy way of downloading the same update for Vista. The only way I was able to get it is by getting the VS 2008 DVD and looking for the updates in:

  • x64
  • \WCU\dotNetFramework\dotNetMSP\x64\NetFX3.0-*-x64.msu
  • \WCU\dotNetFramework\dotNetMSP\x64\NetFX2.0-*-x64.msu
  • x86
  • \WCU\dotNetFramework\dotNetMSP\x86\NetFX3.0-*-x64.msu
  • \WCU\dotNetFramework\dotNetMSP\x86\NetFX2.0-*-x64.msu

One might be left with the logical question: Why the duality Microsoft? Why just not call the whole thing .NET 3.5 AND (notice the logical and: && operator in my statement) distribute it as one downloadable update?

I have no idea what drove Microsoft into the insanity of splitting this up into two different updates, especially since this now means that when using VS 2008 to target the .NET Framework 2.0 in the build properties you are actually targeting .NET 2.0 SP1 (which is not clearly stated anywhere except for reality).

Now, Why should I care about this, apart from it being technically ludicrous?
The reason is simple. Microsoft bit me in the ass (or screwed me, depending ob your gender I guess) and got my machine into a situation that while .NET 3.5 redist WAS installed (presumably), the .NET 2.0 SP1 / .NET 3.0 SP1 were not…
Think I’m lying? take a look at these two pictures taken with Lutz Roeder’s Reflector:

This is .NET 3.5 installed WITHOUT the 2.0 / 3.0 SP1:

fx35-fuckedup-blurred

This is .NET 3.5 installed AFTER FIXING THIS ISSUE:

fx35-fixed-blurred

Note that in both screenshots you can see that the System.Core assembly is installed properly, while the versipn and size information for System.dll is distinctly different….

If you’re wondering how I got to this amazing situation… That’s simple… The answer is Vista SP1. Apparently, when you uninstall the Vista SP1 it also uninstalls he .NET 2.0 /3.0 SP1 packages… while leaving the 3.5 seemingly intact! (Stupid! Stupid! Stupid!) Has anyone in redmond not heard of dependencies and reference counting? Are you all too busy doing something other than releasing dependable software (pun intended)?

If you’re wondering how I finally did understand what was going on… It was by uninstalling the 3.5 that I seemingly had installed… and then trying to re-install it. This immediately led me into a situation where .NET 3.5 refused to install without having a 2.0 / 3.0 SP1 installed (not that the installer actually said something along those lines, I naturally had to go through the installation log files to get the valuable piece of information)…

Aaaarrrrrrggggghhhhh!!!!

~ by damageboy on January 19, 2008.

3 Responses to “RedBits My Ass”

  1. Sorry for the trouble you went through.

    1. .NET 3.5 does include the SP1 for v2.0/3.0 contrary to your claims throughout the post, except in the end where you admit how you got in the mess.

    2. It looks like your troubles originated by combining the Fx 3.5 with a *prerelease* version of Vista SP1 (and I personally agree, removing Vista SP1 should not remove the Fx v2.0/3.0 SP1).

  2. Hi Daniel, Unfortunately you are wrong about the .NET 3.5 installation “including” the SP1 update (Again, at least in my case…)

    AFTER uninstalling the semi-3.5 installation I did have, I couldn’t install 3.5 without installing the .msu files for SP1 manually…

    The whole reason that I understood WHAT was going on was because of the .NET 3.5 insallation .log file which indicated that the installation cannot proceed without having SP1 installed…

  3. Well, you can insist that it doesn’t install them after you removed Vista SP1 which we have already covered. On a brand new machine, the v3.5 will install SP1.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

 
%d bloggers like this: