You hit a winget error like 0x80073D02 and Stack Overflow's three-year-old answer is useless. Here's the complete 2026 reference: every error code, what it means, and how to fix it.
The most common 12 codes (memorise these)
| Code | Meaning | Quick fix |
|---|---|---|
0x80073D02 |
App is currently running | Close the app, retry |
0x80070005 |
Access denied | Run as Administrator |
0x80070002 |
File not found | Re-run winget source update |
0x80070003 |
Path not found | Reinstall App Installer |
0x80070057 |
Invalid parameter | Check your command syntax |
0x80073CFA |
Package cannot be installed | Architecture/scope mismatch |
0x8A150011 |
Manifest validation failed | Wait for upstream fix |
0x8A15000F |
Failed installer hash check | See hash mismatch guide |
0x8A150027 |
Source agreements not accepted | Add --accept-source-agreements |
0x8A150049 |
Network error | Check internet / proxy |
0x8A150050 |
No applicable installer | Architecture/scope mismatch |
0x8A150003 |
Source not found | winget source update |
winget-specific codes (0x8A15____)
These are winget's own errors. The facility code 0x8A15 is unique to App Installer.
0x8A150001 — internal error
Generic catch-all. Usually transient.
Fix: retry. If persistent, restart Terminal.
0x8A150002 — invalid command line
You passed a flag winget doesn't recognise.
Fix: check winget <command> --help.
0x8A150003 — package or source not found
The ID doesn't exist in any configured source.
Fix:
winget source update
winget search <name> # verify ID
0x8A150004 — multiple matches found
Search returned more than one result.
Fix: add -e (exact) or specify --source winget.
0x8A150005 — no installer found
The package has no installer matching your system architecture / scope.
Fix:
winget install --id <ID> --architecture x64
# or try without scope flag
0x8A150006 — manifest broken
The package manifest is invalid (shouldn't happen for merged packages, but can during transient catalog sync).
Fix: winget source reset --force and retry.
0x8A15000F — installer hash mismatch
Downloaded installer doesn't match the manifest's expected SHA-256.
Fix: see Installer hash does not match guide. TL;DR: wait 24h or use --force if you trust the publisher.
0x8A150011 — manifest validation failed
Manifest in the catalog is malformed.
Fix: report at winget-pkgs issues; usually fixed within a day.
0x8A150027 — source agreements not accepted
First-time use; you haven't accepted the source agreements.
Fix:
winget source update --accept-source-agreements
0x8A150036 — pin prevents upgrade
You pinned this package and tried to upgrade it.
Fix:
winget pin remove --id <ID>
winget upgrade --id <ID>
See winget pin guide.
0x8A150049 — network failure
Network error during download.
Fix:
- Check internet connection
- Check proxy settings (see search not working)
- Retry — usually transient
0x8A150050 — no applicable installer
Same root cause as 0x8A150005 — system architecture / OS version mismatch.
Fix: check winget show --id <ID> for installer requirements.
Windows / HRESULT codes (0x8007____)
These come from Windows itself, not winget. The lower bits are standard Win32 error codes.
0x80070002 — file not found
Something the installer expected isn't there. Could be a dependency or a temp file cleanup race condition.
Fix: retry. If repeated, restart and retry.
0x80070003 — path not found
Install path doesn't exist. Often happens with --scope machine when winget can't find C:\Program Files.
Fix: verify Program Files exists; retry as Admin.
0x80070005 — access denied
Most common after not recognized. Permission to install / write to Program Files / modify HKLM denied.
Fix: open Terminal as Administrator. See Access denied fix.
0x80070057 — invalid parameter
Bad command syntax.
Fix: winget <command> --help. Common: forgetting --id, missing = in --id=ABC.
0x80073CFA — package cannot be installed
The app's installer rejected the install. Could be architecture, scope, or system requirements.
Fix:
winget show --id <ID>
# Check requirements
# Try --architecture x64 or --scope user
0x80073D02 — package is currently in use
The app is already running. Windows refuses to upgrade a running app.
Fix: close the app first.
Get-Process -Name "<app>" -ErrorAction SilentlyContinue | Stop-Process -Force
winget upgrade --id <ID>
0x80073D03 — invalid manifest
Manifest XML/YAML malformed.
Fix: winget source reset --force then retry.
MSI / Installer exit codes (1602, 1603, 1618...)
When the underlying installer fails, winget propagates the installer's exit code. Common ones:
| Code | Meaning |
|---|---|
| 1602 | User cancelled |
| 1603 | Fatal error during installation (generic MSI failure) |
| 1605 | Action only valid for currently installed products |
| 1612 | Installation source unavailable |
| 1618 | Another installation is already in progress |
| 1619 | Installation package could not be opened |
| 1620 | Installation package could not be opened (corrupted) |
| 1638 | Another version is already installed |
| 1641 | Reboot required to complete |
| 3010 | Reboot required (success) |
See winget MSI exit codes guide for fixes.
Diagnostic: turn on verbose logs
When stuck, enable verbose logging:
winget install --id <ID> --log "$env:TEMP\winget.log" --verbose
The log file shows every step, every HTTP request, and the actual error from the installer.
Or check the default log directory:
%LOCALAPPDATA%\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\LocalState\DiagOutputDir
Quick decision tree
- "Access denied" → Run as Admin
- "Already running" → Close the app
- "Hash does not match" → Wait or
--force - "No installer found" → Try
--architecture x64 - "Source not found" →
winget source update - "Network error" → Check proxy / connection
- Anything else →
--verbose --logand read the log
90% of errors fall into one of these buckets.
