A Windows 11 version 25H2 install error is almost never what people fear it is. It is not your licence, it is not your hardware failing, and it is not a sign that Microsoft has decided your PC is too old. In the overwhelming majority of cases it means Windows tried to modify its own component store and could not, and that is a repairable condition with a well-understood sequence of fixes.
This guide is the long version. It covers what each error code actually means, how to read the paired codes that Windows setup produces, the fixes in the order you should try them, how to read the log files when the fixes do not work, and the small number of situations where the honest answer is that something else is wrong. Work through it top to bottom and you will either be on 25H2 or you will know exactly why you are not.
[image: Windows Update screen showing the message Windows 11, version 25H2 failed to install with the red text Install error 0x800f0991 underneath]
What a 25H2 install error actually means
Windows 11 25H2 installs in one of two completely different ways, and which one applies to you decides what your error means.
If your PC is already on Windows 11 24H2, 25H2 arrives as an enablement package. The code is already on your disk, delivered quietly inside previous monthly updates, sitting dormant. The enablement package is a tiny switch that turns it on. Nothing large is downloaded and nothing is migrated. When this fails, the failure is almost always in the servicing stack, which is the part of Windows responsible for modifying Windows itself.
If your PC is on Windows 11 23H2, or on Windows 10, you get the full feature update instead. Windows downloads several gigabytes, stages a complete second copy of the operating system, migrates your files, settings, applications and drivers into it, and restarts several times. When this fails, the failure can be in a lot more places, and the error codes look different because they come from Windows Setup rather than from Windows Update.
Knowing which path you are on tells you which half of this guide matters to you. Press Windows and R, type winver, press Enter. If the box says Version 24H2 you are on the enablement path. If it says 23H2 or you are on Windows 10, you are on the full-update path. If you want the more thorough method, our guide to checking what Windows you have covers reading the build number properly, which matters later in this article.
Here is the short diagnosis for the codes people search for most.
| Error code | What it means in plain language | Usually fixed by |
|---|---|---|
| 0x800f0991 | Windows Update could not complete a servicing operation, usually because required files are missing or the component store is inconsistent | DISM component store repair |
| 0x800f0983 | The component store contains data Windows cannot reconcile, often after an interrupted earlier update | DISM, then Windows Update reset |
| 0x800f0993 | A servicing operation failed on a specific component, frequently a language pack or optional feature | Removing the conflicting optional feature, then DISM |
| 0x80070002 | File not found, meaning setup expected something in the download cache that is not there | Clearing SoftwareDistribution and redownloading |
| 0x8007000d | Invalid data, meaning a downloaded file is corrupted | Clearing the cache, then an ISO install |
| 0x80070070 | Disk full | Freeing space, twenty gigabytes or more |
| 0xC1900101 | A generic rollback, nearly always a driver that setup could not carry across | Updating or removing the offending driver |
| 0xC1900208 | An installed application is blocking the upgrade | Uninstalling the named application |
| 0xC190020E | Not enough free space to stage the upgrade | Freeing space or attaching external storage |
Find your code in that table and you already know roughly which fix section to jump to. But before you start, spend two minutes learning to read the code properly, because it saves an enormous amount of guessing.
Read the whole error code before you touch anything
Windows Update errors are single codes. Windows Setup errors are pairs, and the second half of the pair is the useful half. Most people copy only the first code into a search box and end up reading advice written for a completely different failure.
A setup error looks like this: 0xC1900101 – 0x4000D. The first part is the result code, which is a standard Windows error number telling you what went wrong. The second part is the extend code, and it tells you where and during which operation it went wrong.
The extend code splits again. Its leading digit is the phase, and its last two digits are the operation.
| Phase digit | Phase name | What was happening |
|---|---|---|
| 1 | Downlevel | Setup was still running inside your existing Windows |
| 2 | Safe OS | Setup had restarted into the minimal pre-Windows environment |
| 3 | First boot | The new Windows was booting for the first time |
| 4 | OOBE boot | The new Windows was in the out-of-box setup stage |
| 5 | Uninstall | Setup was rolling back to your previous version |
| Operation digits | Operation | What that means practically |
|---|---|---|
| 01 | Copy payload | Moving installation files, so disk or download trouble |
| 03 | Install updates | Applying updates during setup |
| 07 | Install drivers | A driver could not be installed, the single most common cause |
| 0D | Migrate data | Carrying your files, profiles and settings across |
| 17 | Boot | The new build could not start |
| 18 | Sysprep | Generalisation, mostly seen on imaged machines |
Put the two together and the diagnosis is almost automatic. 0x80070002 – 0x20007 reads as file not found, during the Safe OS phase, while installing drivers. That is a driver problem, not a corrupted download, and the fix is to deal with the driver rather than to clear caches for an hour. 0x8007042B – 0x4000D reads as a process ended unexpectedly, during the OOBE boot phase, while migrating data, which usually points at a profile or a security tool interfering with the migration.
Learning this once permanently changes how you troubleshoot Windows upgrades. Microsoft publishes the full reference in its upgrade error code documentation, and it still applies to Windows 11 despite the page title.
Quick checks first, before any commands
A meaningful share of 25H2 install errors clear up with something on this list, and all of it takes under ten minutes. Do not skip to the commands.
Check free disk space. An enablement package needs almost nothing, but a full feature update wants around twenty gigabytes free on the system drive, and Windows will not always tell you clearly that this is the problem. Storage Sense under Settings, System, Storage will clear temporary files, and emptying the Recycle Bin and clearing previous Windows installation files usually finds more than people expect.
Check that you are actually eligible. The enablement package for 25H2 requires Windows 11 24H2 with the August 2025 cumulative update, build 26100.5074, or newer. If your build number is lower than that, the 25H2 offer will fail because the foundation it switches on is not there yet. Install the pending cumulative update first, restart, then try again. This alone accounts for a large fraction of failed attempts.
Unplug things. External drives, docks, SD cards, printers, USB hubs, phones. Windows setup enumerates and migrates drivers for connected hardware, and a single device with an old driver can roll the whole upgrade back. This sounds like superstition and it is not.
Pause third-party security software. Antivirus suites and VPN clients sit exactly where Windows setup needs to work, and several of them are known to interfere with the servicing stack. Pause protection or uninstall temporarily, then reattempt. Windows Defender alone is fine for the twenty minutes it takes.
Restart properly. Not a fast shutdown, an actual restart. Fast startup means a shutdown does not fully clear system state, so if you have shut down and powered on rather than restarted, pending servicing operations may still be queued. Hold Shift while clicking Restart to be certain.
Make sure the connection is stable and you are not on a metered connection. Windows silently defers large downloads on metered connections, and the resulting behaviour looks like a failure rather than a deferral.
Take a backup. Not a fix, but this is the moment to do it, because the remaining steps involve modifying system components. If you are about to run an in-place upgrade later in this article, having a bootable recovery drive ready is worth the twenty minutes, and our guide on how to create a bootable USB for Windows walks through it.
Fix 1: Run the Windows Update troubleshooter
It is easy to be dismissive about the built-in troubleshooter, and for years that dismissiveness was earned. It has genuinely improved, and for servicing errors it does something useful: it resets stuck update states, re-registers services, and clears certain pending operations that block everything downstream.
Go to Settings, System, Troubleshoot, Other troubleshooters, and run Windows Update. Let it finish. Restart even if it says no changes were needed, then check for updates again.
Expect this to work perhaps one time in five. That is a poor hit rate for a fix, but it costs three minutes and no risk, and it occasionally saves you the next hour entirely.
Fix 2: Repair the component store with DISM
This is the single most effective fix for 0x800f0991 and 0x800f0983, and it is where you should spend your effort if the troubleshooter did nothing.
The component store, which lives in the WinSxS folder, is Windows’ internal library of every component version it knows about. Servicing operations read from it and write to it. If it is inconsistent, Windows cannot safely modify itself, and it fails rather than risk producing an unbootable system. That is the behaviour you are seeing.
Open Command Prompt or Windows Terminal as administrator. Right-click the Start button and choose Terminal (Admin). Run these three commands in order, letting each one finish completely before starting the next.
DISM /Online /Cleanup-Image /CheckHealth
This is a quick read of whether Windows has already flagged corruption. It takes seconds. If it reports no component store corruption detected, that does not mean you are clear, only that nothing has been flagged yet.
DISM /Online /Cleanup-Image /ScanHealth
This performs a full scan. It takes ten to twenty minutes on most machines and it will appear to hang at twenty percent and again at sixty-two percent. It has not hung. Leave it alone. Interrupting a DISM scan is a good way to turn a repairable problem into a worse one.
DISM /Online /Cleanup-Image /RestoreHealth
This is the repair. It downloads replacement components from Windows Update as needed and rebuilds the inconsistent parts of the store. Allow twenty to forty minutes. You want to see the restore operation completed successfully at the end.
If RestoreHealth itself fails, usually with 0x800f081f meaning the source files could not be found, it is because the machine cannot reach Windows Update to fetch replacements, or because the update source is exactly what is broken. In that case you can point DISM at a mounted Windows 11 ISO instead, using the Source parameter and specifying the install.wim inside the ISO’s sources folder, with the LimitAccess switch so it does not try Windows Update. That is the advanced route, and if you are at that point the in-place upgrade in Fix 8 accomplishes the same thing with less typing.
Fix 3: Run System File Checker
Immediately after DISM finishes, run sfc /scannow in the same administrator prompt.
The order matters and people get it backwards constantly. System File Checker repairs damaged system files by copying good versions out of the component store. If the component store is itself damaged, running SFC first means repairing files from a broken source, which either fails or makes things worse. DISM repairs the store, then SFC repairs the files from the now-healthy store. Always DISM first, then SFC.
SFC takes five to fifteen minutes. If it reports that it found corrupt files and successfully repaired them, restart and try the update again. If it reports that it found corrupt files and could not repair some of them, run DISM RestoreHealth once more and then SFC again. Two rounds resolve most cases; if a third round is still failing, move on rather than looping.
Fix 4: Reset the Windows Update components
If DISM and SFC both came back clean but the update still fails, the problem is not the component store. It is the download cache and the update service state. Resetting them is the standard next move, and it is what clears 0x80070002 and 0x8007000d most reliably.
The safe way to do this is to stop the services first, rename the folders rather than delete them, and start the services again. Renaming means you can put things back if something goes sideways. Deleting means you cannot.
In an administrator terminal, stop the four services: net stop wuauserv, net stop cryptSvc, net stop bits, net stop msiserver. Wait for each to confirm before running the next.
Then rename the two folders: ren C:\Windows\SoftwareDistribution SoftwareDistribution.old and ren C:\Windows\System32\catroot2 catroot2.old.
Then start the services again: net start wuauserv, net start cryptSvc, net start bits, net start msiserver.
Restart the PC and check for updates. Windows will rebuild both folders from scratch and redownload everything it needs, so the first update check after this will be slower than usual. That is expected.
Now the warning, and it is not a small one. Do not do any of this while an update is actually installing, and be certain you know where your BitLocker recovery key is before you start. There are documented cases of a SoftwareDistribution rename performed mid-update producing a machine that would not boot and then demanded a recovery key that the owner did not have. Your recovery key lives in your Microsoft account under devices, or in your organisation’s Entra ID if this is a work machine. Check that you can actually see it before you touch these folders, not after.
Fix 5: Deal with the driver, when the code points at one
If your extend code ends in 07, or your result code is 0xC1900101, you have a driver problem and no amount of cache clearing will fix it.
The pattern is that setup reaches the point of installing drivers into the new build, hits one it cannot install, and rolls the whole thing back to keep you bootable. The rollback is Windows behaving correctly. The problem is the single driver.
Start with the usual suspects, in this order: graphics drivers, storage controller drivers, and anything from a peripheral vendor with its own control panel software. Update them from the hardware manufacturer’s site rather than from Windows Update, because Windows Update often carries an older version than the vendor does.
If updating does not help, remove rather than update. In Device Manager, uninstall the device and tick the box to delete the driver software. Windows will use a generic driver during the upgrade and you reinstall the real one afterwards. This is the correct move for old printers, scanners, capture cards, fingerprint readers and anything with a driver dated more than about four years ago.
To find out which driver specifically, you need the logs, and that is Fix 9.
Fix 6: Remove the optional feature or language pack that is blocking it
Error 0x800f0993 in particular, and sometimes 0x800f0983, comes from an optional feature or language pack whose files are in a state the update cannot reconcile.
Go to Settings, Apps, Optional features. Look at what is installed beyond the defaults. The recurring offenders are additional language packs, handwriting and speech packs for languages you no longer use, the legacy .NET Framework 3.5 feature, and Windows Media Player legacy components.
Remove anything you do not actively need, restart, run the update, and reinstall the features afterwards if you want them back. Language packs in particular are quick to reinstall and are a common cause on machines that have been through several Windows versions.
On a related note, if you had reinstalled WMIC after 25H2 removed it, or if you have old components lingering from earlier versions, those can be part of the same picture. The 25H2 release removed PowerShell 2.0 outright and uninstalls WMIC, and a machine carrying manual workarounds around either can produce servicing conflicts.
Fix 7: Clean boot to rule out software conflicts
A clean boot starts Windows with only Microsoft services and no third-party startup programs. It does not fix anything by itself; it tells you whether something you installed is the cause.
Press Windows and R, type msconfig, press Enter. On the Services tab, tick Hide all Microsoft services, then click Disable all. On the Startup tab, open Task Manager and disable every startup item. Restart.
Now attempt the update. If it succeeds, something in that disabled list was the culprit, and you find it by re-enabling half at a time until it breaks again. If it fails identically, you have ruled out third-party software entirely, which is genuinely useful information because it means you can stop chasing it.
Remember to undo the msconfig changes afterwards. Leaving a machine permanently in clean-boot state causes a slow drip of odd problems months later that nobody connects back to this afternoon.
Security software deserves a specific mention here. Endpoint protection suites, disk encryption tools other than BitLocker, and anything that filters the file system are the categories most likely to block a servicing operation. Pausing protection is often not enough; the filter driver stays loaded. Uninstalling temporarily is the reliable test.
Fix 8: The in-place upgrade, which fixes almost everything
If you have worked through everything above and the update still fails, this is the step that resolves the large majority of remaining cases. It is also the step people avoid longest because it sounds drastic, and it is not.
An in-place upgrade reinstalls Windows over itself from installation media while keeping your files, your applications and your settings. It rebuilds the component store from a known-good source rather than trying to repair the damaged one. Everything that DISM was trying to fix piece by piece gets replaced wholesale.
There are two ways to run it. The Windows 11 Installation Assistant, downloaded from Microsoft’s software download page, does it in one guided flow and is the easier option. Or download the Windows 11 ISO, double-click it to mount it as a drive, and run setup.exe from inside it.
Either way, the critical moment is the screen asking what to keep. Choose Keep personal files and apps. If you choose anything else you are doing a clean install, which is a different operation with a very different Saturday attached to it.
Expect thirty to ninety minutes and several restarts. Plug the laptop in. When it finishes you will be on 25H2, your desktop will look the way you left it, and the servicing problem will be gone.
One point worth understanding: running the ISO route also gives you a clean fallback. If the in-place upgrade itself fails, the error it produces is usually far more specific than what Windows Update was reporting, because Windows Setup writes proper logs. Which brings us to the next fix.
Fix 9: Read the logs like a technician
Everything above is pattern matching. This is diagnosis. If you have a machine that refuses every fix, the logs will tell you why, and reading them is less intimidating than it sounds because you are looking for a small number of specific things.
For Windows Update and servicing failures, the log is C:\Windows\Logs\CBS\CBS.log. It is enormous and mostly noise. Open it in a text editor, jump to the end, and search upward for the word Error or for the code you are seeing. The lines immediately around a hit usually name the component that failed, and a component name is a searchable, actionable thing in a way that a hex code is not.
For full feature updates, the logs live in C:\$Windows.~BT\Sources\Panther. That folder is hidden, so you will need to enable hidden items and protected operating system files in File Explorer’s view options, or just paste the path into the address bar. The two files that matter are setupact.log, which is the running narrative of what setup did, and setuperr.log, which contains only the errors and is therefore where you should start.
If setup rolled back, there is a second copy of these in C:\$Windows.~BT\Sources\Rollback, and those are the ones describing the failure that caused the rollback.
What you are looking for in setuperr.log is a driver file name, usually ending in .sys, or an application name, appearing near the failure. When someone tells you the upgrade was blocked by an old storage driver, this is where they read it. The file name maps to a vendor, the vendor maps to a download page, and you have moved from a hex code to a concrete action in about five minutes.
Also worth knowing: C:\Windows\Panther holds the logs from the last successful setup, so if you want to see what a healthy run looks like for comparison, that is where it is.
Fix 10: Check whether Microsoft is deliberately holding you back
There is one category of failure where every fix in this article is wasted effort, and it is worth ruling out before you spend an evening on the others.
Microsoft places what it calls safeguard holds on specific hardware and software configurations when a known incompatibility exists. If your PC is under a safeguard hold, Windows Update will simply not offer 25H2, or will offer it and fail, and this is intentional. It is Windows protecting you from a bug that Microsoft already knows about on your exact configuration.
You can see the current list on Microsoft’s Windows release health dashboard for 25H2, which publishes active known issues and holds. As of the most recent update to that page, the outstanding 25H2 issues had been resolved, so a hold is less likely now than it was in the months after release, but it still happens on specific driver and application combinations.
If a hold applies, the correct response is to wait for the fix, not to force the upgrade. There is a registry setting that bypasses safeguard holds, and it exists for IT administrators testing in controlled environments. Using it on your personal machine means deliberately installing a version Microsoft has determined will break something on your hardware. People do it and then spend a weekend recovering.
The related situation is the rollout itself. Microsoft uses a machine learning model to phase 25H2 out to hardware configurations gradually, so a machine that has not been offered it yet is not failing. If Windows Update says you are up to date and shows no 25H2 offer, and your build is 26100.5074 or newer, you are probably just in a later wave. Waiting a week is a legitimate fix.
The enablement package specifically: when the small update fails
Everything above applies broadly. This section is only for people on 24H2 whose tiny enablement package will not install, because that failure has its own short list of causes.
The prerequisite is the most common one, and it bears repeating because it accounts for so many failures. You need build 26100.5074 or later. Check with winver. If you are below it, the enablement package has nothing to enable, and it fails. Install the pending cumulative update, restart, and the 25H2 offer usually appears within a day.
The second cause is a pending restart. If any earlier update is waiting on a restart, servicing operations queue behind it and the new one fails. Restart, then retry.
The third is that the enablement package is being offered but the underlying cumulative update it depends on failed silently in an earlier month. This shows up as an update history full of successful entries and one quiet failure from three months ago that nobody noticed. Look at Settings, Windows Update, Update history, and check for failed entries. Retry any that failed, in date order, before attempting 25H2.
The fourth is worth knowing because it produces the most confusing symptom of all: the update installs, reports success, you restart, and winver still says 24H2. That means the enablement package applied but the version switch did not take, which is usually a servicing stack update that needs to be installed separately. Check update history for a servicing stack update, install it, restart, and re-run Windows Update.
If you want the background on how the enablement package works and why 25H2 installs so differently from a normal feature update, our full guide to Windows 11 25H2 covers the mechanism, the support dates, and what actually changed in the release.
[image: Command Prompt running as administrator with the three DISM commands CheckHealth ScanHealth and RestoreHealth entered in sequence, showing the restore operation completed successfully message]
The full-update path: when you are coming from 23H2 or Windows 10
Coming from further back means the full feature update, and the failures cluster differently. Drivers and applications cause most of them, not the component store.
Free space is the first check and a bigger deal than on the enablement path. Twenty gigabytes free on the system drive is the working minimum, and thirty is comfortable. Windows can use external storage for part of the staging if you attach a USB drive when prompted, which is useful on small-SSD laptops.
Compatibility blocks are the second. Error 0xC1900208 means an installed application is incompatible, and setup usually names it if you read the dialog rather than the code. Old antivirus suites, old virtualisation tools, and old disk utilities dominate this category. Uninstall, upgrade, reinstall afterwards.
Hardware eligibility is the third, and it is the one that cannot be fixed by troubleshooting. If the PC does not meet the Windows 11 requirements, no amount of repair will let it upgrade cleanly, because the block happens before the upgrade begins. Our guide to Windows 11 requirements covers each item and, importantly, how to tell whether TPM 2.0 is genuinely absent or just switched off in firmware, which is the most common false negative there is.
If the machine truly cannot run Windows 11 and you are on Windows 10, upgrading is not your path. Windows 10 stopped receiving security updates in October 2025, and extended security updates are the bridge while you plan a replacement. Our guide to Windows 10 ESU covers who qualifies, including the free routes in that a lot of people miss.
[image: Windows setup error dialog showing the paired code 0xC1900101 – 0x4000D with the result code and extend code labelled separately]
The complete fix order, in one place
If you want the sequence without the explanation, this is it. Work down, retry the update after each step, stop when it succeeds.
| Step | What to do | Time | Risk |
|---|---|---|---|
| 1 | Check free space, disconnect peripherals, restart properly | 10 minutes | None |
| 2 | Confirm you are on build 26100.5074 or later | 1 minute | None |
| 3 | Run the Windows Update troubleshooter | 5 minutes | None |
| 4 | DISM CheckHealth, ScanHealth, RestoreHealth | 30 to 60 minutes | Low |
| 5 | sfc /scannow, after DISM not before | 15 minutes | Low |
| 6 | Reset Windows Update components, renaming not deleting | 15 minutes | Moderate, know your BitLocker key |
| 7 | Update or remove the driver named in the error or the logs | Varies | Low |
| 8 | Remove optional features and language packs, then retry | 15 minutes | Low |
| 9 | Clean boot and retry | 20 minutes | Low |
| 10 | Read setuperr.log and CBS.log for a named component | 20 minutes | None |
| 11 | In-place upgrade from ISO or Installation Assistant, keeping files and apps | 30 to 90 minutes | Low, but back up first |
| 12 | Check for a safeguard hold and wait if one applies | 5 minutes | None |
Most people who reach step 11 are fixed by step 11. The ones who are not are usually looking at failing storage, and that is a different article.
When it is not the update at all
Three situations get misdiagnosed as install errors often enough to name.
Failing storage. If DISM reports errors it cannot repair, SFC finds corruption again immediately after fixing it, and the machine has been feeling slow or freezing, run a disk check. Open an administrator terminal and run chkdsk C: /scan, and check the SMART status of the drive with your manufacturer’s tool. Repeated, returning corruption on a healthy Windows installation usually means the disk underneath it is not healthy. No servicing fix survives a dying drive.
Failing memory. Random rollbacks at different points in the upgrade, with different error codes each attempt, is the signature of bad RAM. Run the Windows Memory Diagnostic, or better, MemTest86 from a USB stick for a couple of passes. This is rare but it wastes entire weekends when it is missed.
An activation problem wearing an update problem’s clothes. If Windows was already reporting activation trouble before the update, the update did not cause it, though the timing will make it feel that way. Feature updates do not consume or invalidate licences. What they do is force a re-check, so a licence that was already in a bad state fails visibly at that moment. Our guide to Windows 11 activation explains what each message means, and if you are staring at a specific activation code, error 0xc004f074 and a key that will not work both have their own walkthroughs.
If nothing worked: the honest section
We sell Windows licences, so here is where you would expect the pitch. Instead, here is the honest boundary.
A 25H2 install error is not a licensing problem, and buying a licence will not fix one. Servicing errors, driver rollbacks, corrupted component stores and safeguard holds all happen identically on a perfectly licensed, fully activated, retail-purchased copy of Windows. If someone tells you a new key will clear 0x800f0991, they are either confused or selling.
There are only two situations where the answer involves a licence at all.
The first is that you did an in-place upgrade or a clean install and Windows came back unactivated. That is not the update failing, that is your digital licence not being found, usually because the reinstall was done with a different edition than the one you were licensed for, or because significant hardware changed. If you have a valid licence, the activation troubleshooter and a Microsoft account usually restore it without spending anything, and our page on how to activate a Microsoft product key covers the steps.
The second is that the licence was never sound. A key from a marketplace seller, a key already used on another machine, or a volume key used outside its terms can survive for a long time and then fail at exactly the moment a feature update forces a re-check. In that case the update is the messenger. If that is where you have landed, a genuine Windows 11 licence key from KYMakers activates through Microsoft’s own servers and ends the problem permanently rather than deferring it to the next update. If you are licensing an older machine for the ESU route instead, the Windows 10 keys cover that.
If neither of those describes you, you do not need to buy anything, and we would rather tell you that than sell you a key that will not help.
How to avoid this next time
Most 25H2 install errors are the accumulated cost of months of small neglect, and the prevention is boring.
Do not defer updates for months at a time. Every deferred cumulative update makes the next feature update harder, because the servicing stack falls further behind and the component store drifts further from what Microsoft expects. Deferring by a week or two after patch Tuesday is sensible caution. Deferring by a year is how you end up here. If you defer for a reason, our guide on how to stop Windows Update covers doing it in a controlled way rather than by breaking the service.
Keep twenty gigabytes free on the system drive as a standing habit, not as something you arrange the night an update fails.
Keep graphics and storage drivers reasonably current, from the vendor rather than from Windows Update. Twice a year is plenty.
Retire hardware whose vendor stopped shipping drivers. That ancient scanner is not worth the four hours it will eventually cost you.
Run DISM RestoreHealth and SFC once every six months on a machine you depend on. It takes an hour of unattended time and it catches store drift before it becomes a blocked upgrade.
Know where your BitLocker recovery key is. Not conceptually. Actually open your Microsoft account and look at it, today.
Windows 11 version 25H2 install error: FAQ
Why does my Windows 11 version 25H2 install error keep coming back after I fix it?
Returning corruption after a successful repair is the classic signature of failing storage, or of a third-party filter driver undoing the repair. Check the drive’s SMART health first, then uninstall security software temporarily and repeat the repair. If the corruption returns on a healthy drive with no third-party software installed, an in-place upgrade replaces the whole component store and breaks the cycle.
Is 0x800f0991 a hardware problem?
Almost never. It is a servicing error, meaning Windows could not complete an operation on its own component store. DISM RestoreHealth followed by sfc /scannow resolves most cases. It only points at hardware when it recurs immediately after a successful repair, which suggests the disk is not reliably storing what Windows writes.
Can I just skip 25H2 and wait for the next version?
Not usefully. Windows 11 24H2 Home and Pro stop receiving security updates on 13 October 2026, and the version after 25H2 is built on the same platform, so waiting neither saves you an upgrade nor avoids the underlying problem. If your machine cannot install 25H2 today, it will not magically install the next one either, because the servicing fault would still be there.
Will an in-place upgrade delete my files or programs?
No, provided you select Keep personal files and apps at the prompt. Files, installed applications and most settings survive. Take a backup anyway, because the one scenario where this advice fails is an interrupted install on a disk that was already failing.
Do I need to buy a new Windows licence to fix an install error?
No. Feature updates and their failures have nothing to do with licensing. Your existing licence carries across every version of Windows 11 including 25H2. The only time a licence is relevant is if Windows was already unactivated before the update, which is a separate problem with a separate fix.
How long should DISM RestoreHealth take before I assume it is stuck?
Up to about forty minutes on a mechanical drive, less on an SSD. It pauses visibly at twenty percent and around sixty-two percent on almost every machine, and those pauses can last several minutes each. Do not interrupt it. If it has genuinely made no progress for over an hour, cancel, restart the PC, and run it again from a clean boot.
Where do I find the log that actually names the problem?
For update and servicing errors, C:\Windows\Logs\CBS\CBS.log, searched from the end backwards for the word Error. For full feature update failures, C:\$Windows.~BT\Sources\Panther\setuperr.log, which contains only errors and is far shorter. A driver file name ending in .sys near the failure is what you are hunting for.
The bottom line
A Windows 11 version 25H2 install error looks alarming and is usually mundane. Read the full code including the extend code, do the quick checks, repair the component store with DISM and then SFC in that order, reset the update components if the store was clean, deal with drivers when the code points at them, and run an in-place upgrade if you get that far. Twelve steps, most of them free, and the great majority of machines are fixed well before the end of the list.
What it is not is a licensing problem. If you have a genuine, activated copy of Windows, keep it and fix the servicing fault. If your licence was already shaky and the update simply exposed it, that is the one case where a genuine Windows 11 key is the actual answer, and every key we sell activates through Microsoft’s own servers rather than through anything clever.
Instant email delivery, lifetime license, 180-day money-back guarantee, 24/7 support.
