Fix it now
Setup is failing part way through and reverting to the old build, and the two headline codes tell you almost nothing on their own. Read the SetupDiag report first: it names the rule that matched, and that is what decides which of the causes below is yours.
SetupDiag.exe /Output:C:\Temp\SetupDiag.xml /Format:xml
DISM /Cleanup-Mountpoints
DISM /Online /Cleanup-Image /RestoreHealth
sfc /scannow
- Open the report. SetupDiag also writes to
%WinDir%\Logs\SetupDiag\SetupDiagResults.xmland records the same result underHKLM\SYSTEM\Setup\MoSetup\Volatile\SetupDiagwhen it is run with/AddReg. - Read the matched rule name rather than the hex. Rules such as WimMountFailure, WimMountDriverIssue and PreReleaseWimMountDriverFound point at the image mount path; FindAbruptDownlevelFailure and similar rules point elsewhere entirely.
- If DISM reported corruption and repaired it, retry the upgrade before changing anything else.
- If the report names a mount driver, uninstall the third-party disk or backup software that installed it, then retry.
- Retry with dynamic update off so setup uses only the payload on your media:
setup.exe /auto upgrade /dynamicupdate disable.
Do not start by reinstalling drivers or clearing SoftwareDistribution. Both are guesses, and SetupDiag will tell you in a minute whether either is relevant.
If that fixed it you can stop here. If not, the next section explains what setup is doing when it gives up, and how to tell the five documented causes apart.
Why it happens
An in-place upgrade is not an installation. Setup builds the new Windows alongside the old one, migrates your accounts, settings and files, and only then switches the machine over. Every phase before that switch is reversible by design, so when anything goes wrong the safe answer is always to put the old build back. That is why the machine looks untouched afterwards and why nothing on screen tells you what happened.
The codes divide into two families. The 0xC19xxxxx values come from the setup platform itself. Microsoft publishes several of them: 0xC1900403 is MOSETUP_E_UA_CORRUPT_PAYLOAD_FILES, the payload files were corrupt; 0xC190011F is MOSETUP_E_PROCESS_CRASHED, the installation process crashed; 0xC1900101 is MOSETUP_E_SETUP_PLATFORM, an unspecified setup platform error that Microsoft treats as the generic rollback code usually caused by an incompatible driver.
0xC1420127 and 0xC1420117 are the other family, and this is the honest part: Microsoft publishes no meaning for either. They circulate with confident explanations attached, usually that an image could not be mounted or dismounted, and no vendor page says that. Treat them as a signal that setup stopped in the image-servicing area, then let SetupDiag name the rule that actually matched.
The payload files on the media or in the download are corrupt
You have this one if 0xC1900403, or a rollback that happens at the same point on every attempt regardless of what you change on the machine.
- Discard the staged files: delete
C:\$Windows.~BTandC:\$Windows.~WSafter a rollback. - Fetch the media again rather than reusing the ISO you have. A file that failed a hash check once will fail it every time.
- Verify the component store before retrying:
DISM /Online /Cleanup-Image /RestoreHealth, thensfc /scannow. - Retry with
setup.exe /auto upgrade /dynamicupdate disableso setup does not pull additional payload mid-run.
Dynamic update is normally worth having, because it brings the current setup binaries and drivers. Turn it off only as a diagnostic, to prove whether the fault arrives with the downloaded payload.
A filter driver owns the image mount and will not let go
You have this one if SetupDiag matches WimMountFailure, WimMountDriverIssue or PreReleaseWimMountDriverFound, or a leftover mount is listed by DISM.
- Run
DISM /Get-MountedImageInfoand thenDISM /Cleanup-Mountpointsto release anything stale. - Uninstall backup, imaging, disk-encryption and virtual-drive software rather than merely stopping its service.
- Restart, confirm the mount points are clear, and retry the upgrade.
Uninstalling is the part people skip. These products install a kernel filter that stays loaded until the product is removed, so disabling the tray application changes nothing.
A setup process is being killed while it runs
You have this one if 0xC190011F, or a rollback that lands at a different point each time you try.
- Uninstall third-party security software for the duration of the upgrade. Disabling it leaves its drivers loaded.
- Clean boot the machine so nothing non-Microsoft starts, then retry.
- Check
$Windows.~BT\Sources\Rollbackfor asetupmem.dmpand the crash entry naming the process that died.
An extended error during the first boot phase
You have this one if 0x800704B8 – 0x3001A, which is Win32 1208, ERROR_EXTENDED_ERROR.
- Microsoft’s own mitigation for this row is a clean boot with antivirus removed. Do both, not one.
- Disconnect every non-essential device, including docks, card readers and external drives, before retrying.
- Retry the upgrade and let it run to completion without touching the machine.
An incompatible driver in the general case
You have this one if 0xC1900101 with no other detail, sometimes with a phase extend code attached.
- List third-party drivers with
pnputil /enum-driversand note anything from a storage, network or graphics vendor. - Remove the obvious candidates with
pnputil /delete-driver oem##.inf /uninstall. - Or keep them out of the new build entirely for one attempt:
setup.exe /auto upgrade /migratedrivers none.
/migratedrivers takes All or None. With None, setup installs only the drivers in the new image, so plan to reinstall vendor drivers afterwards.
Full reference
Getting a real diagnosis out of SetupDiag
SetupDiag is the only tool here that turns a rollback into a sentence you can act on. It reads the setup logs, matches them against a set of published rules and names the rule that fired. Run it after the rollback, on the machine that failed, from an elevated prompt.
| Parameter | What it does |
|---|---|
/Output:<path> |
Writes the report to a file you choose |
/LogsPath:<path> |
Points SetupDiag at logs you have collected from another machine |
/Format:xml or /Format:json |
Chooses the report format |
/ZipLogs:True |
Packages the logs it used alongside the report |
/AddReg |
Writes the result under HKLM\SYSTEM\Setup\MoSetup\Volatile\SetupDiag |
/RegPath:<path> |
Uses a registry path of your choosing instead of the default |
/Scenario:Recovery |
Analyses a failed recovery rather than a failed upgrade |
Without /LogsPath it looks at the local machine’s logs, which is what you want immediately after a rollback. It also drops SetupDiagResults.xml into %WinDir%\Logs\SetupDiag by default, so if someone else ran it before you, the answer may already be on the machine.
Where setup leaves its evidence
| Location | What is in it |
|---|---|
$Windows.~BT\Sources\Panther |
The logs from the phase that ran before the first restart |
$Windows.~BT\Sources\Rollback |
What setup recorded as it reverted, including setupmem.dmp after a crash |
%WinDir%\Panther |
Logs moved here once setup has finished, successfully or otherwise |
%WinDir%\Logs\SetupDiag |
The SetupDiag report, if it has been run |
Codes that are published, and codes that are not
This matters more than it sounds. Microsoft publishes a table of setup platform errors with constant names against them, and it is worth checking your code against that table before you accept anyone’s explanation. 0xC1900403, 0xC190011F and 0xC1900101 are in it. 0xC1420127 and 0xC1420117 are not, and no other Microsoft page defines them.
The practical consequence is that you should not build a plan around what 0xC1420127 supposedly means. Build it around what SetupDiag matched, what the Panther logs show and which of the causes above your symptoms fit. An undocumented code is a place to start looking, not a diagnosis.
When every cause above has been ruled out
- Free real space on the system volume before retrying. Setup stages the new image and keeps the rollback data at the same time, so a disk that looks adequate at the start can be full at the point it fails.
- Remove any pending servicing operation. A machine with an update part-installed will not upgrade until that transaction is finished or discarded.
- Disconnect additional internal disks. A second disk that was once a system drive can confuse partition analysis in a way that looks like an unrelated rollback.
- Try the upgrade from mounted media rather than through Windows Update, so the payload is fixed and local for the whole run.
- If the machine is managed, check whether a servicing policy is redirecting setup at a source that does not have what it needs.
Licensing, and when it is genuinely the blocker
Nothing in this article is a licensing problem. A rollback is setup deciding it cannot safely finish; the edition you are entitled to is a separate question that setup asks earlier. The licence only enters the picture when the answer to the rollback is to stop repairing the current installation and do a clean install of a different edition, which is a decision about time rather than about error codes.
When a licence is the actual fix
Do not buy anything to fix a rollback. Every cause above is repaired with tools already on the machine, and a new licence will not change what SetupDiag matched. The licence question only becomes real at the other end of this: when you have exhausted the repairs, decided a clean install is the cheaper answer, and found that the machine is running an edition you no longer have media or an entitlement for. Arco supplies Windows 11 Pro upgrade licences, and we would rather establish that your existing entitlement already covers the rebuild than sell you one you do not need.
Every code this article covers
| Code | What it points at | Source |
|---|---|---|
0xC1420127 |
Seen when setup stops in the image-servicing area. Microsoft publishes no meaning for it, so use SetupDiag’s matched rule rather than the code | not published by the vendor |
0xC1900403 |
MOSETUP_E_UA_CORRUPT_PAYLOAD_FILES: the payload files were corrupt | Microsoft Learn |
0xC1900101 |
MOSETUP_E_SETUP_PLATFORM: an unspecified setup platform error, generally an incompatible driver | Microsoft Learn |
0x800704B8 - 0x3001A |
Win32 1208 ERROR_EXTENDED_ERROR: an extended error occurred during the first boot phase. Microsoft’s mitigation is a clean boot with antivirus removed | Microsoft Learn |
0xC190011F |
MOSETUP_E_PROCESS_CRASHED: the installation process crashed | Microsoft Learn |
0xC1420117 |
Appears alongside the codes above during failed upgrades. Microsoft publishes no meaning for it | not published by the vendor |
Confirm the fix worked
- The machine boots into the new build and
winverreports the version you were upgrading to. DISM /Get-MountedImageInforeports no mounted images left behind.DISM /Online /Cleanup-Image /ScanHealthreports no component store corruption.- The
$Windows.~BTand$Windows.~WSfolders are gone, or are the current rollback set rather than a stale one.
Questions people ask about this
What does 0xC1420127 actually mean?
Nobody outside Microsoft knows, because Microsoft has not published a meaning for it. You will find pages asserting that it means an image could not be dismounted. That explanation is not sourced from any vendor documentation, and building a repair plan on it wastes time. Run SetupDiag instead: its rules for mount failures are documented, and if one of them matches you have a real finding rather than a guess.
Is it safe to delete $Windows.~BT?
After a rollback, yes. It holds the staged files from the attempt that failed, and setup recreates it on the next run. Do not delete it while an upgrade is in progress or while you still need the logs inside it, and copy the Panther and Rollback folders out first if you have not diagnosed the failure yet.
Will a clean install definitely work where the upgrade will not?
Usually, because it removes the two things that most often cause rollbacks: migrated third-party drivers and an existing installation whose servicing state is damaged. It also removes your applications and settings, which is the cost. Treat it as the decision you make after the repairs above have failed, not as the first move.
Does turning off dynamic update make the upgrade less safe?
It makes it less current. Dynamic update fetches updated setup binaries, drivers and compatibility data at the start of the run. Disabling it is a legitimate diagnostic, because it fixes the payload to what is on your media, but you should install the cumulative update afterwards rather than leaving the machine on a build that skipped it.
