Feature Update Error 0xC1900208: Fix Compat App Block
A Windows feature update stops with 0xC1900208 before the device reboots into the new build. Intune may show an Incompatible alert on the Feature update failures report. Windows Update may only say the upgrade could not continue. Microsoft names this code MOSETUP_E_COMPAT_INSTALLREQ_BLOCK: Setup found an actionable compatibility issue, such as an incompatible app, and will not proceed until you clear it.
Do not start with driver rollback work or safeguard-hold hunts. Setup already ran the compatibility scan and recorded a hard block. Read the CompatData XML, fix what it lists, and prove a scan-only run returns 0xC1900210 before you retry the full feature update.
Quick Fix checklist
- Confirm the failure code is
0xC1900208(or that a/compat scanonlyrun returned it), not0xC1900101,0xC1900200,0xC190020E, or a safeguard hold with no install attempt. - In Intune, open Reports > Windows Updates > Windows Feature Update Report or Devices > Monitor > Feature update failures. If the alert is Incompatible, Microsoft tells you to review
ScanResult.xmlforBlock Type=Hard. - On the device, show hidden items and open the newest
C:\$WINDOWS.~BT\Sources\Panther\CompatData*.xml. - Search for
BlockingType="Hard"under Programs. Note the program Name and Id. - Search for
DriverPackageentries withBlockMigration="True". Note the INF name. - Search the newest
*_APPRAISER_HumanReadable.xmlforDT_ANY_FMC_BlockingApplication=True, then read the nearbyLowerCaseLongPathUnexpandedvalue for the exact file path. - Uninstall or upgrade the named app or driver. If the app is already gone, delete the leftover file the human-readable log points to.
- Empty
C:\Windows\SoftwareDistribution\Download. If you do not need the files inC:\$WINDOWS.~BT, empty that folder too. - Retest with a scan-only Setup run. Success for the compat scan is
0xC1900210. If you still get0xC1900208, read the new logs for another blocker. - Only after the scan is clean, retry the Intune feature update or media-based upgrade.
What 0xC1900208 means in Microsoft’s words
Microsoft’s upgrade error codes table lists:
| Result code | Message | Description |
|---|---|---|
0xC1900210 | MOSETUP_E_COMPAT_SCANONLY | Setup didn’t find any compat issue |
0xC1900208 | MOSETUP_E_COMPAT_INSTALLREQ_BLOCK | Setup found an actionable compat issue, such as an incompatible app |
0xC1900204 | MOSETUP_E_COMPAT_MIGCHOICE_BLOCK | The migration choice selected isn’t available |
0xC1900200 | MOSETUP_E_COMPAT_SYSREQ_BLOCK | The computer isn’t eligible for Windows 10 |
0xC190020E | MOSETUP_E_INSTALLDISKSPACE_BLOCK | The computer doesn’t have enough free space to install |
The resolution-procedures list uses the same code with a shorter description: “The system does not pass the compat scan to install the update.”
Microsoft’s compatibility-scan guide is direct about symptoms: Setup fails with 0xC1900208 because an application or driver is not compatible with the target feature update. You can hit this even when the incompatible application or driver was already uninstalled. Leftover files still trip the appraiser.
When you run Setup with /Compat ScanOnly, Microsoft documents these exit codes:
0xC1900210if no compatibility issue is found0xC1900208if actionable compatibility issues (for example, apps) are found0xC1900204for an unavailable migration choice0xC1900200if the machine is not eligible0xC190020Eif free disk space is insufficient
Treat 0xC1900208 and 0xC1900210 as opposites on the same scan: one means Setup found a hard problem, the other means the scan is clean.
Why the obvious diagnosis can be wrong
You treat it like 0xC1900101
0xC1900101 is a generic rollback after Setup already started the upgrade. Microsoft usually ties it to an incompatible driver that caused a hang, bug check, or unexpected reboot during SAFE_OS, FIRST_BOOT, or SECOND_BOOT. With 0xC1900208, Setup stopped in the compatibility phase. Rebuilding drivers for a rollback you never reached wastes time. If you need the rollback path, use Fix Windows 11 24H2 Intune feature update error 0xC1900101.
You assume the app is gone, so the block is gone
Microsoft’s compat-scan article says you can see 0xC1900208 after the incompatible application or driver was already uninstalled. The human-readable appraiser log often names a leftover .exe or .dll. Uninstall alone is not enough when the file remains.
You chase Intune targeting instead of the named blocker
Devices that never leave Offering may be on a safeguard hold or stuck earlier in the 25H2 feature update failure path. 0xC1900208 means Setup got far enough to run the compat scan and fail it. Fix the named app or driver before you rewrite feature update policies.
You confuse adjacent compat codes
0xC1900200: hardware or edition eligibility, not an app list0xC190020E: free disk space0xC1900209: the user cancelled because the machine did not pass the compat scan (applications cannot migrate)0xC1900210: scan-only success, not a failure
If the hex code is 0xC1900208, start in CompatData, not in sysreq or disk-space workflows.
Quiet mode turns a dismissible warning into a hard block
SetupDiag documents CompatBlockedApplicationDismissable: when Setup runs in /quiet mode, dismissible application messages become blocks unless the command line also includes /compat ignorewarning. Enterprise feature updates from Windows Update and Intune often run non-interactively, so a warning that a user could click past on media can stop a managed rollout.
Evidence to collect
CompatData XML (primary)
During Downlevel, OOBE, or Rollback, Setup writes:
C:\$WINDOWS.~BT\Sources\Panther\CompatData<date-time>.xml
After OOBE, also check C:\Windows\Panther. Use the newest timestamp. These folders are hidden; enable Hidden items in File Explorer.
Open the newest CompatData file and search for:
BlockingType="Hard"under<Programs>/<Program>: apps you must remove or mitigate//DriverPackages/DriverPackage[@BlockMigration="True"]: drivers that will not migrate and must be upgraded or removed
Microsoft’s example Program node looks like this shape (names vary by device):
<Program Name="Some Wallpaper Apps may be incompatible" Id="{3eb4353f-e9c5-44b4-97c6-a07df49c5803}" DefaultIcon="True">
<CompatibilityInfo BlockingType="Hard" StatusDetail="WarnUpgrade" Message="Your PC has an app that changes the Window Desktop or Wallpaper and it may be incompatible with this version of Windows. This app may..."/>
</Program>
APPRAISER human-readable XML
Search the OS drive for *_APPRAISER_HumanReadable.xml. In the newest file:
- Find
DT_ANY_FMC_BlockingApplication=True(orValue="TRUE"). - Nearby, read
LowerCaseLongPathUnexpandedfor the exact blocking file path.
Delete that path when Add/Remove Programs no longer lists the app.
SetupDiag
Microsoft’s compat-scan guide recommends SetupDiag for scale and for mapping logs to known rules such as CompatBlockedApplication. SetupDiag ships with Windows Setup and can also be downloaded. Run it elevated. Example offline-style command from Microsoft’s guide:
SetupDiag.exe /LogsPath "C:\Temp\WindowsSetupLogs" /Output "C:\Temp\SetupDiag-Results.txt"
Rules that matter for this code family include:
| Rule | What it means |
|---|---|
CompatBlockedApplicationAutoUninstall | An application must be uninstalled before Setup continues |
CompatBlockedApplicationManualUninstall | An app without an Add/Remove Programs entry blocks Setup; remove its files manually |
CompatBlockedApplicationDismissable | A dismissible app warning became a hard block under /quiet |
HardblockDeviceOrDriver | A loaded driver is incompatible with the target OS |
GatedCompatBlock | A temporary soft block until a fix ships |
When SetupDiag reports multiple failures, Microsoft says the last failure in the log is typically the fatal one.
Intune Feature update failures report
Path: Devices > Monitor > Feature update failures (also reachable from Reports > Windows Updates).
For alert Incompatible, Microsoft’s recommendation is: “Review the ScanResult.xml file for Block Type=Hard.” That matches the CompatData BlockingType="Hard" search above. Other alerts (DiskFull, SafeguardHold, RollbackInitiated) belong in different articles.
Client-side feature update report data needs diagnostic data collection configured. Service-side offer and alert data can show up sooner.
AppCompatFlags registry (context only)
Microsoft notes that the Compatibility Appraiser writes under HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags and runs as the scheduled task \Microsoft\Windows\Application Experience\Microsoft Compatibility Appraiser. Use this to confirm appraiser health, not as the first place to hunt the blocker name.
Remediation workflow
- Name the blocker from logs before changing the device. Write down Program Name/Id, INF, or file path.
- Remove or upgrade the app or driver. Prefer vendor-supported upgrade when the product is still required.
- Delete leftover files when the human-readable log still shows
DT_ANY_FMC_BlockingApplication=Trueafter uninstall. - Clear caches if you will reuse the same media or a stuck
$WINDOWS.~BTtree:- Empty
C:\Windows\SoftwareDistribution\Download - Empty
C:\$WINDOWS.~BTif you do not need those files
- Empty
- Refresh compat intelligence with Dynamic Update so Setup has current appraiser data (Microsoft links this from the compat-scan guide).
- Scan only, without installing:
setup.exe /auto upgrade /noreboot /eula accept /compat scanonly /compat ignorewarning
Microsoft documents that /Compat ScanOnly returns 0xC1900210 when clean and 0xC1900208 when actionable issues remain. /compat ignorewarning keeps dismissible messages from becoming quiet-mode blocks while you inventory hard blocks.
- Re-read the new CompatData and appraiser logs. Repeat until the scan returns
0xC1900210. - Retry the real feature update from Intune or from media only after the scan is clean.
I have not executed these Setup commands on a production device in this run. Treat them as Microsoft-documented commands to run in your lab or pilot ring first.
What not to waste time on
- Rebuilding the Intune feature update profile while CompatData still shows
BlockingType="Hard". - Full OS reimages for a single named leftover
.exe. - Driver rollback deep-dives aimed at
0xC1900101when Setup never left the compat phase. - Ignoring a second hard block after you clear the first; Microsoft tells you to recheck logs if
0xC1900208returns.
Prevention
- Run
/compat scanonly(with/CopyLogsif you need a central share) against a pilot hardware and app ring before broad Intune feature update rings. - Keep required line-of-business apps on vendor versions that support the target Windows feature update; retire or replace apps that only appear as hard blocks.
- Remove abandoned security, VPN, wallpaper, and virtualization leftovers that leave files behind after uninstall.
- Keep Dynamic Update enabled for feature updates so appraiser data stays current.
- In Intune, watch Feature update failures for Incompatible early instead of waiting for help-desk tickets.
- Keep a short internal list of apps that hard-block your target build so the next ring does not rediscover them device by device.
Sources
- Windows 10 upgrade error codes:
0xC1900208/MOSETUP_E_COMPAT_INSTALLREQ_BLOCKtable - Use Windows Setup compatibility scan logs to identify blocking issues: symptoms, CompatData / appraiser paths, remediation, scanonly
- Windows 10 upgrade resolution procedures: modern setup error list including
0xC1900208 - Windows Setup Command-Line Options: /Compat: ScanOnly / IgnoreWarning exit codes
- SetupDiag: compat rules and log locations
- Reports for Windows Feature Update Policies: Intune Incompatible alert and
ScanResult.xml