A Configuration Manager application that fails in Software Center leaves a hex code, and AppEnforce.log adds the installer's exit code. This quick reference lists 47 codes you meet when deploying apps: Microsoft's meaning, the usual cause and the first check, plus how the Return Codes tab turns an exit code into success, a restart or a retry.
Codes in this quick reference
0x87D00202 Service is shutting downSoftware Center / console deployment status0x87D00207 / 0x87D00235 / 0x87D00244 Parsing error / Syntax error occurred while parsing / object or subsystem not initializedSoftware Center / console deployment status0x87D00215 Item not foundSoftware Center / console deployment status0x87D0027C / 0x87D00289 CI documents download timed out / Failed to decompress CI documentsCIAgent.log / CIDownloader.log0x87D00314 CI Version Info timed outSoftware Center / console deployment status0x87D00329 Application requirement evaluation or detection failedAppIntentEval.log0x87D00324 The application was not detected after installation completedSoftware Center / AppDiscovery.log0x87D00325 Application was still detected after uninstall completedSoftware Center / AppEnforce.log
+ 39 more codes in the tables below.
How to read these codes#
You see the code in Software Center, in the console under Monitoring › Deployments (select the deployment, then View Status and the Error tab), and in the Microsoft Intune admin center for tenant-attached devices. The client logs in C:\Windows\CCM\Logs say which stage failed (walkthrough: AppDiscovery, AppEnforce and CAS logs).
0x87D0xxxxand0x87D1xxxx: Configuration Manager client codes.- Plain decimals such as
1603or3010: the installer's exit code, compared with the deployment type's return codes. 0x8000…,0x8004…and0xC000…: Windows and COM codes;0x80041…: WMI;0x0024…and0x8024…: Windows Update Agent, for an.msudeployed as an application.
Reports and SQL views store codes as signed decimals. Convert both ways in PowerShell:
'0x{0:X8}' -f -2016410844 # 0x87D00324
[int]0x87D00607 # -2016410105Configuration Manager client codes#
Evaluation, policy and detection#
| Code | Meaning | Usual cause | First check |
|---|---|---|---|
0x87D00202 | Service is shutting down | The client service stopped or restarted during the action | The SMS Agent Host service; CCMExec.log |
0x87D00207, 0x87D00235, 0x87D00244 | Parsing error; Syntax error occurred while parsing; The object or subsystem has not been initialized | Invalid data in a client component: something missing for the app, or an old package version | Search the logs for the deployment type ID |
0x87D00215 | Item not found | The client can't find the deployment's policy or its content | Policy retrieval, then the content status |
0x87D0027C, 0x87D00289 | CI documents download timed out; Failed to decompress CI documents | The client couldn't fetch or unpack the app's definitions | CIDownloader.log, CIAgent.log, DataTransferService.log |
0x87D00314 | CI Version Info timed out | The app changed and the client lacks the new revision | Policy retrieval (see policy not downloading) |
0x87D00329 | Application requirement evaluation or detection failed | A requirement, dependency or supersedence rule couldn't be evaluated | AppIntentEval.log |
0x87D00324 | The application was not detected after installation completed | The installer succeeded but the detection method doesn't find the app | AppDiscovery.log; test the rule as SYSTEM |
0x87D00325 | Application was still detected after uninstall completed | Wrong uninstall command, or a rule that still matches | The uninstall command in AppEnforce.log |
Enforcement and run time#
| Code | Meaning | Usual cause | First check |
|---|---|---|---|
0x87D00213 | Timeout occurred | The installer ran past Maximum allowed run time (default 120 minutes), usually waiting for hidden input | Test the command silently as SYSTEM before raising the limit |
0x87D00321 | The script execution has timed out | A script in the deployment type ran too long | AppEnforce.log; the run time and maintenance window |
0x87D00327 | Script is not signed | An unsigned PowerShell script, blocked by the client's execution policy (Microsoft lists AllSigned as the default) | Client Settings › Computer Agent › PowerShell execution policy, or sign it |
0x87D00667 | No current or future service window exists to install software updates | The run time is longer than any maintenance window on the device | Window length vs run time (see maintenance windows) |
0x87D01106 | Failed to verify the executable file is valid or to construct the associated command line | A file missing from the content, or a .ps1 called directly | Call scripts through powershell.exe -File; check the content |
0x87D103E8 | Error Unknown | No specific code was returned | AppEnforce.log and the installer's own log |
0x87D1076C | Application was successfully installed | A success result, not a failure | Nothing to fix |
Content download#
| Code | Meaning | Usual cause | First check |
|---|---|---|---|
0x87D00607 | Content not found | No distribution point the client may use has the content | Content Status; the client's boundary group |
0x87D01107 | Failed to access all the provided program locations. This program may retry if the maximum retry count has not been reached | The client got locations but can't reach them | LocationServices.log, then ContentTransferManager.log and DataTransferService.log |
0x87D01201 | The content download cannot be performed because there is not enough available space in cache or the disk is full | Low disk space or a full cache | Free space; ccmcache size against the client cache setting |
0x87D01202 | The content download cannot be performed because the total size of the client cache is smaller than the size of the requested content | Content larger than the client cache | Raise Client Cache Settings in client settings |
0x80091007 | The hash value is not correct | Content changed or damaged, or another process (often security software) held the file during the hash check | CAS.log; redistribute; Process Monitor filtered on Sharing Violation |
0x87D01281, 0x87D0128F, 0x87D01290 | A supported App-V client is not installed; The App-V sftmime command returned failure; An error occurred when querying the App-V WMI provider | An App-V deployment type on a device without a working, supported App-V client | The App-V client on the device |
Installer exit codes and return codes#
When the installer ends, AppEnforce.log looks up its exit code in the deployment type's Return Codes tab. Each code has a type:
- Success (no reboot) and Failure (no reboot).
- Soft Reboot: installed and requests a restart; other installs can run first. Hard Reboot: installed, but nothing else installs until the device restarts.
- Fast Retry: another installation is running; the client retries every two hours, up to 10 times.
Windows Installer deployment types get 0 and 1707 (Success), 3010, 1641 and 1618 by default; Script Installer types get the same without 1707. Any other code is a failure:
Looking for exit code 1603 in exit codes table...
Unmatched exit code (1603) is considered an execution failure.If a vendor documents another code as success (some return 1), add it as Success (no reboot); values from -2147483648 to 2147483647 are allowed.
| Code | Meaning | Usual cause | First check |
|---|---|---|---|
0 | The action completed successfully. (default: Success) | Installed; if detection then fails you get 0x87D00324 | The detection that follows in AppEnforce.log |
3010 | A restart is required to complete the install. (default: Soft Reboot) | Installed; a restart finishes the job | The deployment's restart settings |
1641 | The installer has initiated a restart. (default: Hard Reboot) | The installer restarted, or will restart, the device | REBOOT=ReallySuppress on MSI command lines |
1618 | Another installation is already in progress. (default: Fast Retry) | Another Windows Installer session is running | What else installs at the same time |
1602 | The user canceled installation. | The installer showed UI that someone closed | Make it silent, or install for system |
1603 | A fatal error occurred during installation. | A custom action, prerequisite, pending restart or wrong context | A verbose log (/l*v); search for Return value 3 |
1605 | This action is only valid for products that are currently installed. | An uninstall or repair names a product code that isn't installed | The product code in the command |
1612 | The installation source for this product isn't available. | Repair or patching needs the original MSI, gone from the cache | Persist content in the client cache on the deployment type |
1619 | This installation package couldn't be opened. | The command names an MSI that isn't in the content | File name and Installation start in |
1625 | This installation is forbidden by system policy. | Windows Installer or application control policy blocks it | Policies on the device |
1633 | This installation package isn't supported on this platform. | Processor architecture mismatch | An OS architecture requirement |
1638 | Another version of this product is already installed. | The MSI can't upgrade the installed version | Remove the old version first, or use supersedence |
1639 | Invalid command line argument. | A typo or bad quotes in switches or properties | Run it from psexec -s -i cmd |
1642 | The installer can't install the upgrade patch because the program being upgraded may be missing or the upgrade patch updates a different version of the program. | An MSP for a version that isn't installed | The installed version |
Windows, WMI and Windows Update codes#
| Code | Meaning | Usual cause | First check |
|---|---|---|---|
1 | Incorrect function | A script or installer returned 1, sometimes even for success | The vendor's exit codes; event logs |
2 | The system cannot find the file specified | A file in the command line isn't in the content or working folder | Command line against the content; Process Monitor |
692 | Debugger terminated process | A debugger was attached to the installer process | Detach it and retry |
0x80000009 | General access denied error | Permissions on a file or folder the installer touches | Process Monitor; icacls |
0x80004005 | Unspecified error | The installer stopped without a specific code | Merge the installer and client logs around the failure |
0x8000FFFF | Catastrophic failure | An unexpected failure inside the installer or a component | Event logs with the installer log |
0x80040154 | Class not registered | A COM or DCOM registration problem | dcomcnfg; regsvr32 the DLL |
0xC0000142 | Initialization of the dynamic link library failed. The process is terminating abnormally | A DLL the installer loads failed to initialize | regsvr32 the DLL |
0x80041001 | WBEM_E_FAILED | A generic WMI failure | winmgmt /verifyrepository |
0x80041009 | WBEM_E_NOT_AVAILABLE | The WMI resource, often a remote machine, isn't available | Device online; wbemtest |
0x00240006 | The update to be installed is already installed on the system | An .msu app reaches a device that already has it | The detection method |
0x80240017 | Operation was not performed because there are no applicable updates | The update doesn't apply: wrong OS, or already superseded | The update's requirements, or deploy it as a software update |
How to verify a fix#
Editing a deployment type creates a new revision. On a test device, run Machine Policy Retrieval & Evaluation Cycle, then Application Deployment Evaluation Cycle. Good looks like this:
AppEnforce.logshowsMatched exit code 0 to a Success entry in exit codes table., and the detection that follows finds the app.- Software Center shows Installed; after Run Summarization, the device moves to Success in the deployment status.
- WMI on the device agrees:
Get-CimInstance -Namespace root\ccm\ClientSDK -ClassName CCM_Application |
Where-Object Name -like 'Contoso*' | Select-Object Name, InstallState, ErrorCode
# InstallState = Installed, ErrorCode = 0References#
- Application installation error codes reference (Microsoft Learn): Configuration Manager, MSI, Windows, WMI and Windows Update Agent codes
- Create applications in Configuration Manager (Microsoft Learn): return code types and defaults, Maximum allowed run time
- MsiExec.exe and InstMsi.exe error messages (Microsoft Learn): Windows Installer exit codes

