Code 0x800f0922 is the servicing stack reporting a collapsed sub-installer inside the update. On Dell laptops that sub-installer is nearly always the .NET Framework 3.5 feature step — the code decodes to a CBS installer failure, and experience says the failing piece is the .NET 3.5 payload that cumulative updates attempt to configure. Dell machines with .NET 3.5 stranded half-enabled (a frequent souvenir of in-place upgrades) hit this more than most. the Windows 10 write-up
Do not keep pressing Retry. Each attempt replays the same failing installer against the same broken payload, so the outcome cannot change. The repairs below either restore the .NET feature state so the installer can succeed, or bypass the broken piece with a manual install. Follow them in sequence; most Dell owners never get past the third repair.
Why this happens
- .NET 3.5 stuck between on and off. The feature is neither fully enabled nor fully disabled, or its payload is damaged, so its installer step dies on every attempt. Launch optionalfeatures.exe — a half-filled checkbox exposes the condition instantly.
- Payload sources deleted by cleanup. Disk Cleanup’s “Windows Update Cleanup” sometimes removes the side-by-side sources .NET 3.5 requires, leaving the installer with nothing to build from.
- Secure Boot blocking the installer shim. Some Dell firmware builds reject the .NET installer shim while Secure Boot is active. Switch it off briefly to test, then back on immediately.
- App Readiness disabled by a debloater. Feature configuration during updates depends on this service, and debloat utilities target it eagerly. services.msc reveals its current state.
- Damage inside the CBS store. The component-based servicing store cannot complete the transaction the .NET installer needs.
DISM /Online /Cleanup-Image /ScanHealthgauges the extent. - SupportAssist scrambling feature states. Dell’s utility occasionally leaves Windows features inconsistent after driver work — review its history around the date updates began failing.
- A wedged pending.xml. One frozen pending file from an earlier update kills every fresh attempt at the same installer step. Delete C:\Windows\WinSxS\pending.xml only after a clean reboot fails to dislodge it.
How to fix it
Work through these in order — diagnose first, then act.
Fix 1: Read the .NET Framework 3.5 feature state
Start with the five-second diagnosis behind most 0x800f0922 cases: is .NET 3.5 actually in a clean state? The DISM feature query reports enabled, disabled, or stranded in a broken partial state — run it before and after your change.
- Launch optionalfeatures.exe via Win + R, then open the “.NET Framework 3.5 (includes .NET 2.0 and 3.0)” node.
- A filled-but-not-checked box means half-enabled: uncheck it completely, click OK, and restart. Unchecked-and-unneeded means leave it off and retry the update. Checked-and-healthy means look elsewhere.
- Confirm the outcome with DISM /Online /Get-FeatureInfo /FeatureName:NetFx3 — the state should read cleanly enabled or cleanly disabled.
- Retry the update; a large share of 0x800f0922 cases end right here.
Fix 2: Rebuild .NET 3.5 from a fresh source
A corrupted or missing SxS payload leaves DISM with nothing to build from — unless you supply a fresh source. Check C:\Windows\Logs\CBS\CBS.log to identify the failure; it names the payload file that was absent when the .NET step collapsed.
- In an elevated Command Prompt, run DISM /Online /Enable-Feature /FeatureName:NetFx3 /All.
- If DISM complains about the source, mount a Windows 11 ISO and rerun as DISM /Online /Enable-Feature /FeatureName:NetFx3 /All /Source:X:\sources\sxs /LimitAccess, swapping X for the mounted drive letter.
- Restart once it succeeds, then retry Windows Update — the 0x800f0922 step should now clear.
- Re-run the exact update that failed and check that no 0x800f0922 entry returns to update history.
Fix 3: Drain the pending update queue
A single frozen pending.xml from an earlier update poisons every retry identically. This code is deterministic — unchanged retries fail unchanged — so verify each change lands.
- Halt the update services from an elevated prompt: net stop wuauserv, then net stop bits.
- Back up the pending file at C:\Windows\WinSxS\pending.xml and delete it when present.
- Restart the services: net start wuauserv, then net start bits.
- Check for updates again, then open C:\Windows\Logs\CBS\CBS.log and confirm the .NET step passed without new errors.
Fix 4: Restore the App Readiness service
Feature configuration during updates leans on App Readiness, a favorite target of debloat tools. the broader Windows 11 update-failure walkthrough When .NET 3.5 exists only because some legacy application once demanded it, decide whether that application still matters before repairing the feature.
- Open services.msc from Win + R.
- Set “App Readiness” — and “AppX Deployment Service (AppXSVC)” — to Manual startup.
- If a tuner keeps disabling it, remove or reconfigure the tuner.
- Restart, retry the update, and note the failure point: dying at a different percentage counts as progress.
Fix 5: Rule Secure Boot in or out
Certain Dell firmware lets Secure Boot interfere with the .NET installer shim. Treat this purely as a diagnostic, never a permanent change. Note also that SupportAssist driver sessions occasionally flip Windows features as a side effect — recheck the feature state after any SupportAssist run.
- Reboot into BIOS/UEFI setup (F2 on most Dell laptops) and find Secure Boot under Security or Boot.
- Disable it temporarily, save, and boot Windows.
- Retry the update; on success, re-enable Secure Boot immediately. On failure, re-enable it anyway and continue.
- Restart once more and run a second update check for follow-on updates the first pass may have unblocked.
Fix 6: Wipe the update cache
A damaged download can still collapse at the .NET step with the feature state perfect. The .NET 3.5 SxS payload is roughly 300 MB; when Disk Cleanup deletes it, DISM needs an external source — which is why Fix 2’s ISO method exists.
- From an elevated Command Prompt, stop the services: net stop wuauserv, net stop bits, net stop cryptsvc.
- Rename C:\Windows\SoftwareDistribution to SoftwareDistribution.old.
- Start the services again — net start wuauserv, net start bits, net start cryptsvc — and check for updates to fetch a fresh payload.
- Afterward, confirm applications depending on .NET 3.5 still launch.
Fix 7: Heal the store with SFC and DISM
CBS store corruption destroys the transaction the .NET installer requires. Remember what 0x800f0922 means specifically — a CBS installer failed — which separates it from download errors (0x800700xx) and servicing corruption (0x80073712).
- In an elevated Command Prompt, run sfc /scannow followed by DISM /Online /Cleanup-Image /RestoreHealth.
- Reboot the laptop and attempt the update again.
- If DISM cannot repair the store, abandon the automatic path for the manual install.
- Unmount any ISO when done, keeping it around for future use.
Closing
The cryptic code is a precise diagnosis in disguise: the .NET Framework 3.5 sub-installer is the failing piece, and every repair above aims at that exact step. Straighten the feature state, drain the pending queue, and keep the manual Catalog install ready as the bypass around the broken path. For adjacent stubborn codes, the 24H2 edition of this error takes the same methodical approach. Microsoft’s own repair documentation is on Microsoft’s update support site .
