A couple of weeks ago Microsoft released patches for both version 1.0 and version 1.1 of the .net framework. The patches were published via WindowsUpdate and being the good little drone that I am I went off to download them. V1.1 patched perfectly, but the v1.0 patch just wouldn't take. I didn't worry that much, as it's not doing anything on the servers any more, but it sat in the back of my mind. Today Aaron Stebner posted a solution.

When I installed the framework on those machines they were Win2k boxes. The framework was downloaded and ran straight from within IE, and the installer sat in IE's cache. When the v1.0 updated tried to install the Windows Installer decided the install was broken and thus it needed files from the original install media, now long cleared from the cache. The result? A failed install and no useful error message. The application event log did have a message,

Product: Microsoft .NET Framework (English) -- Error 1706.

No valid source could be found for product Microsoft .NET Framework (English).

The Windows installer cannot continue.

Not entirely useful.

So how did I map this to Aaron's blog entry? If this issue has affected you download the SP3 patch from download.microsoft.com, rather than use the version on Windows Update. Run it and see what error message you get. If you are prompted for the original .net install media then you're half way to fixing it. If the patch is run from WindowsUpdate then the silent install WindowsUpdate uses swallows that error message.

Cancel the update and download the original .net framework installer. Now extract the files within the package by running the installer, following Aaron's instructions, and running

dotnetfx.exe /t:c:\temp /c

substituting c:\temp with a temporary location of your choice. Now run the patch again and when prompted for the install media point it to the directory where you extracted the files to.

One thing to note, if you have IIS and other versions of the framework on the machine you are patching the patch will cause any IIS mappings to revert to v1.0 files. To reset the ASP.Net handler you will need to re-register the correct version, either via the command line, changing to c:\windows\Microsoft.Net\Framework then change directory into the version number corresponding to the framework version you want to handle IIS requests and then run

aspnet_regiis -i

or by using the asp.net version switcher provided by Denis Bauer.