.Net Framework 3.5 is getting old now and really shouldn’t be installed unless it’s required but if you do need this it’s now a real pain to get installed.
Almost everyone that has had the pleasure of trying to install this feature on Windows 2012 R2 will have found this Microsoft article which basically says that if you’ve already installed 2966827 or 2966828 that the installation will fail. The fix is to remove them before trying the installation again.
Well these patches came out in 2014 and there doesn’t appear to be any update to this guidance. If you look at most new servers you won’t see these patches but just try to install .Net Framework 3.5. It didn’t go very well did it?
When you run the installation it’s trying to find newer file versions which aren’t present on the original source media. It needs these newer versions due to other updates that have been installed. Of course since this is the first time .Net Framework has been installed these files weren’t around to be patched. But it knows that it needs them to remain stable and secure.
If the server is configured to use Windows Update then it will be able to download these files but otherwise the installation will fail.
Tracking down the offending patches
When you run the .net installation it logs the installation in c:\windows\logs\CSB\cbs.log. When the installation fails have a look for something like the following:
CommitPackagesState: Started persisting state of packages
2018-01-29 09:03:42, Info CBS Failed call to CryptCATAdminAddCatalog. [HRESULT = 0x800706be – RPC_S_CALL_FAILED]
2018-01-29 09:03:42, Info CBS Failed to install catalog file \\?\C:\WINDOWS\CbsTemp\30644498_651525325\Package_for_KB4058702~31bf3856ad364e35~amd64~~16299.188.1.0.cat for package [HRESULT = 0x800706be – RPC_S_CALL_FAILED]
2018-01-29 09:03:42, Info CBS Failed to install catalog for package: Package_for_KB4058702~31bf3856ad364e35~amd64~~16299.188.1.0 [HRESULT = 0x800706be – RPC_S_CALL_FAILED]
2018-01-29 09:03:42, Info CBS Failed to stage package manifest. [HRESULT = 0x800706be – RPC_S_CALL_FAILED]
2018-01-29 09:03:42, Info CBS Failed to add package. [HRESULT = 0x800706be – RPC_S_CALL_FAILED]
2018-01-29 09:03:42, Info CBS Failed to persist package: Package_for_KB4058702~31bf3856ad364e35~amd64~~16299.188.1.0 [HRESULT = 0x800706be – RPC_S_CALL_FAILED]
2018-01-29 09:03:42, Info CBS Failed to update states and store all resolved packages. [HRESULT = 0x800706be – RPC_S_CALL_FAILED]
2018-01-29 09:03:42, Info CSI [email protected]/1/29:15:03:42.863 CSI Transaction @0x27adb0b1d50 destroyed
2018-01-29 09:03:42, Info CBS Perf: Resolve chain complete.
2018-01-29 09:03:42, Info CBS Failed to resolve execution chain. [HRESULT = 0x800706be – RPC_S_CALL_FAILED]
2018-01-29 09:03:42, Error CBS Failed to process Multi-phase execution. [HRESULT = 0x800706be – RPC_S_CALL_FAILED]
2018-01-29 09:03:42, Info CBS WER: Generating failure report for package: Package_for_KB4058702~31bf3856ad364e35~amd64~~16299.188.1.0, status: 0x800706be, failure source: Resolve, start state: Resolved, target state: Staged, client id: UpdateAgentLCU
2018-01-29 09:03:42, Info CBS Not able to query DisableWerReporting flag. Assuming not set… [HRESULT = 0x80070002 – ERROR_FILE_NOT_FOUND]
In this part of the log you will notice it mentioning KB4058702. This is trying to locate the .Net Framework 3.5 files located in this patch which simply don’t exist. But if you remove this patch and retry you are likely to find another patch being mentioned.
Ultimately I found that the following patches needed to be removed before .Net Framework 3.5 would install but you may find a slightly different list.
- KB3195792
- KB4058702
- KB4040981
- KB4014505
- KB4014581
- KB3048072
- KB3142045
- KB3072307
- KB3188732
- KB3188743
- KB3195792
- KB3210132
- KB2966828
Once the installation is successful make sure that you reinstall the missing patches again.