Thursday, January 22, 2015

How to install the Dot Net 3.5 runtime to a Windows 8.1 Pro system

I've been attempting to add the Dot Net 3.5 run time to my new Surface Pro 3 running Windows 8.1 Pro for about half a day now.

Initially the normal web installer for the 3.5 run time was failing with error:
"0x800f0906 : “The source files could not be downloaded. Use the "source" option to specify the location...". 
After a bit of Googling I discovered (in fact remembered because I think I've been here before) that you can only install the Dot Net 3.5 run time from the Windows "Add / Remove" features section of the Control Panel. However, this too failed, with the same error.

Now our Internet traffic in the office is all routed through a Web Guard proxy. There is however a work around for this exact scenario which I promptly implemented, ensuring I was bypassing the proxy - still the same error.

Next, I discovered there was a security patch, which could actually prevent the run time being installed - but that could be resolved using security update 3005628. I ran the Windows 8.1 x64 version of this - guess what, no change.

Now you always find what your looking for in the last place you look right? The next discovery on my part was that, as the only way to add the Dot Net 3.5 run time to Windows 8.1 Pro is via the Windows Update service (no stand-alone installation is going to work) you cannot be running your Windows updates via WSUS. Guess what, We are!

So, the work around for this is a command line option - found here.
DISM /Online /Enable-Feature /FeatureName:NetFx3 /All /LimitAccess /Source:installationMediaDrive:\sources\sxs
But alas, that too was failing.... still failing to locate the required files, with the same error!

Next, to disable the WSUS Group Policy. Luckily, we are a very small company, and I, as the developer and also "the I.T. Guy" because, you know, I know how to restart a server!

So I located the Group Policies in question, recorded the settings for each relevant one, then disabled them. (For the record, they are in the Computer / Policies / Administrative Templates / Windows Components / Windows Update branch of the Group Policy editor.) Having run "gpupdate /force" on the Windows 8.1 Pro machine, I tried again from the command prompt. It didn't work!  I was attempting to use a Windows 8.1 Pro MSDN disk as the source for the component.

So, I went back to the control panel, and tried adding the feature the original way - now that my WSUS Windows update policy was turned off, I was optimistic - with good reason - it worked! The Dot Net 3.5 run time was installed, on my Windows 8.1 Pro, Surface Pro machine.


Now I don't expect many people to read all that diatribe - here's the executive summary:

For error 0x800f0906: The source files could not be downloaded..... when attempting installing the Dot Net Runtime on a Windows 8.1 Pro machine:

  1. Make sure you are not accessing the Internet via a Proxy that is preventing access to Windows Updates (pretty unlikely you'd hope) - you must have Internet access as this is the only way, for Dot Net 3.5 on Windows 8)
  2. Remember, you need to be using the Control Panel / Programs and Features option to "Turn Windows Features on or off (you can find Control Panel in Windows 8 by just typing "Control Panel" from the Start Screen.)
  3. Make sure Security Update 3005628 is applied.
  4. Find out if you are using Windows Server Update Services (WSUS) for windows updates as this will prevent you PC from accessing the files required to add the feature. If so, you'll need to get it disabled for this process. If you're like me and in control of those Group Policies, temporarily disable them. If you work for a larger organisation where that is impractical, you will need to see if you can get yourself temporarily excluded from that policy, while you add this feature.
If none of these things have helped solve your problem, I'm sorry, but as I mentioned, step 4 fixed mine, and you also find the answer in the last place you look! (sorry I didn't keep looking for answers, after I found one).