When you attempt to install .NET Framework 3.5 or any other optional feature using “Windows Features” (optionalfeatures.exe
) dialog or using DISM command-line, error 0x800F0954
may popup.
After enabling .NET Framework 3.5 and clicking OK, the following error may appear:
Windows couldn’t complete the requested changes.
The changes couldn’t be completed. Please reboot your computer and try again.
Error code: 0x800F0954
The same error may occur when attempting to install additional speech recognition or supplemental fonts using Optional features in the Settings page or using DISM command-line. For instance, you run the following command to install .NET Framework 3.5 from an elevated or administrator Command Prompt.
DISM /Online /Enable-Feature /FeatureName:NetFx3 /All
After pressing ENTER, here is the full error message you might see:
Version: 10.0.16299.15
Image Version: 10.0.16299.192
Enabling feature(s)
[==========================100.0%==========================]
Error: 0x800f0954
DISM failed. No operation was performed.
For more information, review the log file.
The DISM log file can be found at C:\Windows\Logs\DISM\dism.log
The DISM.log
file would show these entries/errors:
xxxx, Info DISM DISM Package Manager: PID=12956 TID=12296 Further logs for online package and feature related operations can be found at %WINDIR%\logs\CBS\cbs.log - CPackageManagerCLIHandler::ExecuteCmdLine xxxx, Error DISM DISM.EXE: DISM Package Manager processed the command line but failed. HRESULT=800F0954
And the CBS.log
file would have recorded these errors:
xxxx, Info CBS DWLD:Failed to do Windows update search [HRESULT = 0x800f0954 - CBS_E_INVALID_WINDOWS_UPDATE_COUNT_WSUS] xxxx, Info CBS FC: WindowsUpdateDownloadFromUUP returns. [0x800F0954]
Note that the error 0x800f0954
refers to CBS_E_INVALID_WINDOWS_UPDATE_COUNT_WSUS
which indicates that your system might have been configured to use a WSUS server (on your domain network) to get updates instead of connecting to Windows Update servers directly.
[Fix] Error 0x800F0954 Installing .NET Framework 3.5 or Any Optional Feature
If the error 0x800f0954
occurs installing optional Windows features, it may be because the system is unable to access the Windows Update server. This is especially true in case of domain-joined computers which is configured to downloads updates from a WSUS server. It could also be possible that your computer was once a part or a corporate or domain network and the group policy setting is still in place.
Method 1: Bypass WSUS to Install Features/Updates Directly from Windows Update
To fix the problem, temporarily bypass WSUS server using the following registry edit (requires administrator privileges).
- Right-click Start, and click Run
- Type
regedit.exe
and click OK - Go to the following registry key:
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU
- On the right-pane, if the value named
UseWUServer
exists, set its data to0
- Exit the Registry Editor
- Restart Windows.
Note: Please note that some servers will flip the UseWUServer back to 1 on reboot. In that scenario, set it to 0, restart the Windows Update service (without rebooting), and install the required optional feature (Feature on Demand).
Automate the above, using PowerShell (admin)
Here are the PowerShell commands to automate the following steps:
- Set “UseWUServer” registry setting to 0
- Restart the Windows Update service
- Install .NET Framework (“NetFx3”)
- Restart Windows. If the UseWUServer GPO has been configured on your system, it will be reenabled after the reboot.
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" -Name "UseWUServer" -Value 0 Restart-Service wuauserv Add-WindowsCapability –Online -Name NetFx3~~~~
See if you’re able to install .Net Framework 3.5 or any other optional feature (e.g., Print Management, RSAT, Notepad, etc.) now. In most cases, the above steps should fix the problem.
Method 2: Bypass WSUS for Repair Content/Feature On Demand Downloads
Using this method, you can bypass WSUS server only for downloading repair content and Feature-on-Demand package installation. After you enable the following setting, Windows will use Windows Update (instead of WSUS) to download the FOD packages or the files needed to repair the operating system corruption.
- Open the Group Policy Editor (
gpedit.msc
). - Go to:
Computer Configuration → Policies → Administrative Templates → System
- Double-click “Specify settings for optional component installation and component repair”
- Set “Download repair content and optional features directly from Windows Update instead of Windows Server Update Services (WSUS)” to Enabled.
(This policy setting specifies the network locations that will be used for the repair of operating system corruption and for enabling optional features that have had their payload files removed.)
Alternately, use the following registry setting equivalent:
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Servicing] "RepairContentServerSource"=dword:00000002
This fixes the error 0x800f0954
when installing a feature (FOD) using GUI or DISM.
Method 3: Install .NET Framework (or Optional Features) from Windows 10/11 ISO or DVD
If the procedure under Method 1 or 2 did not help, you may use the following DISM command (with the installation source path) to install additional features from the Windows 10/11 ISO or DVD.
Here are the steps to install .NET Framework 3.5 from the Windows setup disk or ISO:
- Obtain the latest Windows 10/11 ISO (assuming that your Windows 10/11 system is running the newest build) using the Media Creation Tool.
Editor’s note: Even better option would be to update your Windows 10 device fully, and then prepare an up-to-date Windows 10 setup disk by slipstreaming. See how to Slipstream Windows (Integrate Updates with Original Setup Disk)
- Mount the ISO image by double-clicking on the ISO file.
- Note down the drive letter of your DVD or the mounted drive, let’s say
H:\
- Open an elevated Command Prompt (Administrator) window.
- Type the following command, and press ENTER
dism /online /enable-feature /featurename:NetFX3 /Source:H:\sources\sxs /LimitAccess
Note: If you need to install the “Windows Communication Foundation (WCF) HTTP Activation” and “Windows Communication Foundation (WCF) Non-HTTP Activation”, make sure you add the /All
parameter, as seen in the above screenshot. As said earlier, these two components are usually not required for most users.
Similarly, to install other optional features using DISM, refer blog post Adding features (including .NET 3.5) to Windows 10 – Michael Niehaus’ Windows and Office deployment ramblings as well as Microsoft Docs articles DISM Capabilities Package Servicing Command-Line Options & Available features on demand
Hope this article helped you install .NET Framework 3.5 or any other optional Windows features, without getting the error 0x800F0954
.
Related article
One small request: If you liked this post, please share this?
One "tiny" share from you would seriously help a lot with the growth of this blog. Some great suggestions:- Pin it!
- Share it to your favorite blog + Facebook, Reddit
- Tweet it!
Thank you, Step 1 already solved the problem!
Thanks, installed successfully after step 1
I solved the problem using Step 1. Thanks!
Step 1: Bypass WSUS fixed my issue.
Many Thanks
BP WSUS works thanks!
I solved the problem using Step 1. Thanks!
Thanks it worked
Thank you. Step 1 works for me.
I solved the problem using Step 1. Thanks!
Thanks for the feedback.
UseWUServer = 0
should take care of the problem.Solution #2 to (offline) install the optional feature eg., .NET framework, RSAT tools, etc., works even if
UseWUServer
is set to 1.Thank you, Step 1 solved my problem!
Many thanks, bypassing WSUS was required for me to use the ‘Add Windows Feature’ tool.
First time that was required, have been able to use DISM previously.
Thank you.. this worked.
It would be nice if Microsoft actually supported their products as well as the various user communities do. You can’t find a solution to this problem anywhere within Microsoft’s support sites. Even the error dialog presented sends you to a site supposedly with “help” on it…that doesn’t even mention this error code.
@bryan: Thanks for the feedback, bryan. Glad you got the issue resolved!
Thank you, also solved by step 1.
Step 2 did it for me Cheers!
It’s really good solution! But if your company use WSUS and verificate all update packages – need to come back { In the right-pane, if the value named UseWUServer exists, set its data to 0 } to value 1.
Thanks for resolve my issue!
Thank you so much!
Step 1 solved my problem
thank you, it worked
It works.. Thank You.
thank you – installed from mounted cd – worked like a charm
Thank you very much. Step 1 worked.
Edin
Step 1: Bypass WSUS fixed my issue.
Step 1 WORKED
Excellent. Thank you. Will keep a Window10.ISO updated regularly!!
I am getting an error that will not let me update the value of UseWUServer, how can I correct?
Step 1 worked for me too. Been battling this for years since Windows 8. I was resorting to the cd and the dism /online command to get it installed. But now most pc’s don’t comes with a CD/DVD drive anymore. Step 1 is the quickest answer. Though you do not have to restart windows. If you do group policy likely changes that registry key back to a 1 again. You just run services.msc as an admin, scroll down to Windows Update service, right click on it and select restart. After the service restarts then you can add the feature. When you reboot, if you truely are set to use a WSUS server, group policy will likely set the registry key back. If unsure you can set it back to 1 after the .NET framework install is complete.
I wish I knew what I could do to allow this to work WITH a WSUS server. I approved the features on demand for .NET in our WSUS server and the error persists.
I solved automatic reset of the registry value by setting permissions for the key containing it: Deny Set Value for SYSTEM. It did the trick.
Disabling WSUS worked, thanks!
But there’s no need to restart the computer after the registry change, restarting the Windows Update service is enough.
Step 1 worked. Thank you so much. We have been working on this problem for weeks. Quick question. After Framework 3.5 is installed should the UseWUServer value be changed back to 1?
With step1 if you just restart the windows update service after changing the registry there is no reboot required. This makes it easier for those of us that use GPOs which will overwrite the change after restart. Another admin manages the WSUS server and he was out of the office so this was a great workaround until he is back so I can throw things at him until he fixes it.
Thanks its work by pass method
Thank you very much!!!!
Step 1 works perfectly. Thanks
yes I love you. It works with step 1
Muchísimas gracias, genio!!! Anduvo con la primera opción!!!
Fixed with step #1. Thank you!
Thank you, Step 1 solved my problem! Wish that I have seen your post first because I have tried others, and got nothing.
Any way to set step 1 as a group policy in a domain? I am in the process of replacing the Win 7 systems with Win 10 systems and need to install the .Net software on each. Would be easier if I didn’t have to set each registry.
Thank you so much! Step 2 worked very well!!
Thank you so much. Step 1 worked!!!
Step 1 worked where all other methods failed. Thanks a lot man!!!!
I had been messing for 2 days … 1st step solved my problem, thanks much !!
Step 1 was the winner. Thanks for sharing 🙂
Step 1 saved the day. Thank you very much!!
Just Step 1 is solved. 🙏
Thank you.
Thank You So much.Step 1 worked.I could download files and enable IIS features
Step 1 Solves the issue, thanks a lot.
Issue resolved by solution 1.
Thanks.
Appreciated !
Solved the issue, thanks!
No need to restart whole machine, if you restart Windows Update service.
Thank you soo much after 2 days wasting on this error finally got it solved.. Thanks once again
Thank you a ton. Issue has been resolved.
Thanks a bunch! Step 1 and done.
MS could write one line of code to fix this…sheesh.
Perfect, like others step-1 worked for me rightaway! Went back and changed the setting to “1”.
Excellent article, did the trick thank you!!
Thank You Friend.Step1 is working.
Step 1 worked for me
Sweeeeeeeeet!!! i had been looking everywhere and your solution sorted me out instantly!! thanks mate.
My hero. An hour and a half of work was resolved after this trick. Noting it in the knowledge base at my place of work for future reference.
Step1 did it for me! Cheers mate
What if all three don’t work and it still shoots out error code: 0x800f0922 everytime?
@Zack: Delete the registry value named DisableWindowsUpdateAccess if it’s found. The value needs to be deleted. If that doesn’t help, pls upload the files, cbs.log and dism.log.
The same problem 🙁
i’m thinking about reinstalling my WSUS server to get rid of this error… does anyone know if there is something in WSUS installation to take care of to avoid having to deal with 0x800F0954 later?
Perfect mate!! Step 1 fixed the problem for my users (corp)
everyone just bypassed the WSUS configuration … jeez, as a Sys Admin looking for a fix – that DOESN’T INVOLVE bypassing WSUS … it’s horrifying to see how many users had WSUS configurations set (likely coz they’re in a work/domain environment) and have now just overwritten that setting to pull updates directly from the internet … maybe a submission of an error to your IT department would’ve been a better step then by changing settings :~D
Hi !
I tried step 1 but unfortunately, changes made in the registry were reverted to default.
I had set data to 0 for a value named UseWUServer but after reboot, I found it 1 again.
@Akash,
gpedit.msc
).Alternately, use the following registry setting equivalent:
This fixes the error
0x800f0954
when installing a feature (FOD) using GUI or DISM.Thanks. Worked after step 1.
Step 1 still did it!
Please be warned some AD servers will flip the wsus=0 back to =1 on reboot. In these scenarios you should instead set it to 0 then restart the wuauserv service without rebooting to quickly slip the feature download in.
My problem still there, all no use, try the last method, the error code change to 0x800f081f. OMG……
@Lico: Try the local installation source method and DISM RestoreHealth procedure here:
[Fix] DISM and .NET Framework 3.5 Error 0x800F081F:
https://www.winhelponline.com/blog/dism-restorehealth-error-0x800f081f-windows-10/
Thank you very much!
Your Step 1: Bypass WSUS to Install Features/Updates Directly from Windows Update
solved a bunch of my problems!
THANK YOU SO MUCH! Step 1 solved my 2 week trouble of attempting to install .net 3.5 for exchange 2010 requirements. I am setting up a windows 11 machine in our environment and using the dism commands and iso combination did not seem to work in this case for me. I have been looking for alternate methods and step 1 did the final trick. I cannot thank you enough.
Step 1 confirmed to work flawlessly in a domain environment. Thank you 🙂
Our environment has WSUS settings. Setting server value to 0 and rebooting causes the setting to be applied again. I used add features and pointed to install media.
Bonjour,
Merciiii !! ça a fonctionné !
Pour info les amis j’ai du ajouter une étape supplémentaire et je vous la dis.
Une fois l’ISO monté, il faut récupérer les dossier en questions dans ” sxs ” les copier puis les coller dans un dossier sur le bureau. Decompresser les différents dossier labas. Puis ensuite lorsque vous entrer la commande:
ajouter le chemin vers le bureau donc C:/windows/user/mohamed/desktop/frameworkscopié ”
Et ensuite l’installation devrais fonctionner !
Great step 1 itself solved
Thanks! Worked for me
Step 1 Worked! Fantastic! Thanks
Step1 did it for me! Thanks a lot
Step 1 worked. Thank you !!!!
The wsus reg solved the issue for me.
Dont forget to also remove the server from groups or and ou, so no policy will add the reg, value once again
I was facing this issue with VDI and was able to resolve same after modifying regedit mentioned in the 1st step. Many thanks.
Great article, first step for me too.
Customer had a “safe” update server but with out the packages I needed. Turning off WUA was the trick, but rebooting turned it back on again. Work around was turn it off as you suggested, and restart “Windows Update” services, no reboot necessary (until everything was installed).
Cheers!
After the windows update Issue was fixed, without any changes on registry.
Excellen tutorial, worked perfectly, thanks !
Thank you very much for this post.
I was able to install .net successfully.
The registry setting to bypass WSUS worked for me.
Thank you,
Methode 1 is working
Method 2 worked for me, within domain 🙂
Perfect, thanks a lot!
Thank you, Thank you, Thank you. Method 1 did the trick. This has been a thorn in my side for along time. Used the mount Windows ISO way for a long time which works but takes longer.
Be Well, Jay