I’ve experienced a number of machines recently that just obstinately will not take the most recent patches for the 2.0 and 3.5 version of the .NET Framework. Either patching through tools or directly through Microsoft Update just doesn’t work.
I’ve developed a process now for fixing this, it’s painful – and if it’s a windows 2003 server and you let it try to do its normal job in the meantime it might go horribly slow in the middle! My biggest problem was a physical server that ran Backup Exec – when I was mid fix the whole server borked and the reboot took about 90 minutes – ouch.
So to the steps, firstly download the tools you need:
- Microsoft Windows Installer Cleanup (about 350KB) it can currently be found here: http://support.microsoft.com/kb/290301 the filename is msicuu2.exe
- Microsoft .NET Uninstaller (about 287KB) – it can currently be found here: http://blogs.msdn.com/b/astebner/archive/2008/08/28/8904493.aspx the filename is cleanup_tool.exe. Also read the blog entry carefully for background information!
- Microsoft .NET Frameworks 2.0, 3.0, and 3.5 – these can be pretty big, so download the full versions from www.microsoft.com/downloads to save repeated downloads
Now to fix things
- Whatever function the box is installed for (and I’ve seen this problem on desktops and servers), pick a good time to take the box down – this normally takes about an hour
- Take backups – several, including system state so that you can recover if it goes wrong. If you are working in a virtualised world then snapshots may well be your friend (and worth taking a few during the process)
- Configure the server to not run any facilities on it after reboots (set services to disabled or manual – I prefer disabled), remove items from the startup menu and so on. You will be rebooting this computer a few times and you want it to be quick, and you don’t want (what will be) temporarily broken apps to fail to start.
- Run the Windows Installer Cleanup (don’t be worried about the Microsoft Office branding – this is the right tool!) – for each .NET framework listed
- In this case select each of the first 3 items, and click remove. You will see command windows opened minimised (have a look if you are interested!)
- When all instances of the .NET framework are removed, run the .NET Framework Uninstaller. The application does not install it is a directly executed file
- You will be asked to confirm you want to run it, and then confirm the licence.
- You can use the drop down to clean up each version 1 at a time, or just select all. If you h
Editor’s note – in theory you can run this first. I don’t because a) it takes a lot longer that way, b) the .NET Framework uninstaller tended to fail for me on some machines
- Check the logs, and then assuming all is well, reboot the machine.
- Now you are rebooted, install each of the .NET frameworks you should have (on Windows 2003 server I have 2.0, 3.0. and 3.5) one at a time (this will be time consuming).
- Once the last framework is installed, reset your applications to work correctly and reboot
- After reboot run Microsoft Update (or your patching tool of choice) and you should find the Frameworks fully patch and all is well again.
- Depending on choices and operating system – you may get a reboot after this, so your choice as to when to return functionality to the machine may be dependent on this possibility.
There are no guarantees and your mileage might vary, but this is the most successful approach I have found.
All usual caveats apply !