You ran winget upgrade and got "0x80073D02 — Package is currently in use" or "The package is in use by another process". Here's exactly what that means and 5 ways to fix it.
Why 0x80073D02 happens
Windows refuses to upgrade an app that's currently running. The DLLs and EXEs are locked while the process holds them. winget reports this with HRESULT 0x80073D02.
Cause is always the same: the app (or one of its background processes) is open.
Fix 1 — Close the app
The obvious one. Find the app in your taskbar or system tray, close it normally, then:
winget upgrade --id <ID>
Should work.
Fix 2 — Kill the process
If the app has hidden background processes, regular close isn't enough:
# Find all processes for the app
Get-Process -Name "*chrome*" -ErrorAction SilentlyContinue
# Kill them all
Get-Process -Name "chrome" -ErrorAction SilentlyContinue | Stop-Process -Force
Common apps with background processes:
- Chrome / Edge / Brave — runs even when "closed" (system tray icon)
- Discord — minimises to tray
- Spotify — keeps a background process
- Steam — runs services
- OneDrive — always running
- Teams — multiple processes
After killing, retry:
winget upgrade --id <ID>
Fix 3 — Stop the service
Some apps install Windows services that hold file locks:
Get-Service | Where-Object { $_.Name -like "*Docker*" }
Output example:
Status Name DisplayName
------ ---- -----------
Running com.docker.service Docker Desktop Service
Stop it:
Stop-Service com.docker.service -Force
Now retry winget. After the upgrade, the service auto-starts again (or restart Docker manually).
Common service-heavy apps:
- Docker Desktop
- VirtualBox
- VMware
- Adobe Creative Cloud
- Microsoft Office Click-to-Run
- Some antivirus tools
Fix 4 — Force the upgrade
If the app uses delayed file replacement (replaces files on next reboot), --force can help:
winget upgrade --id <ID> --force
This tells winget to proceed even if files are locked; Windows queues the replacement and applies it on reboot.
After upgrade, reboot:
shutdown /r /t 0
Fix 5 — Reboot and retry
The nuclear option that always works:
shutdown /r /t 0
After reboot, the app isn't running yet. Run winget immediately:
winget upgrade --id <ID>
This is the "I'm done debugging" approach.
Specific apps that often hit 0x80073D02
Microsoft Teams
Teams has 4-5 background processes that don't close from the UI:
Get-Process | Where-Object { $_.Name -like "*Teams*" } | Stop-Process -Force
winget upgrade --id Microsoft.Teams
OneDrive
OneDrive auto-restarts after kill. Stop and signout:
taskkill /f /im OneDrive.exe
winget upgrade --id Microsoft.OneDrive
Steam
Steam runs even when window is closed:
Get-Process steam -ErrorAction SilentlyContinue | Stop-Process -Force
Stop-Service "Steam Client Service" -Force -ErrorAction SilentlyContinue
winget upgrade --id Valve.Steam
Discord
Discord keeps multiple processes:
Get-Process discord -ErrorAction SilentlyContinue | Stop-Process -Force
winget upgrade --id Discord.Discord
Microsoft Edge
Even after closing Edge, MSEdgeUpdate.exe stays running. Kill all Edge processes:
Get-Process | Where-Object { $_.Name -like "*edge*" -or $_.Name -like "*msedge*" } | Stop-Process -Force
winget upgrade --id Microsoft.Edge
Adobe Creative Cloud
Adobe's processes are notoriously hard to kill. Stop the service first:
Stop-Service "Adobe Genuine Monitor Service" -Force
Get-Process | Where-Object { $_.Name -like "*Adobe*" -or $_.Name -like "*Creative Cloud*" } | Stop-Process -Force
winget upgrade --id Adobe.CreativeCloud
During winget upgrade --all
If you're updating many apps and one hits 0x80073D02, the rest continue. Note which app failed, close it, then retry just that one:
winget upgrade --id <FailedID>
Or pre-close everything before the bulk upgrade:
# Close common apps
$apps = "chrome", "msedge", "discord", "spotify", "teams"
$apps | ForEach-Object {
Get-Process -Name $_ -ErrorAction SilentlyContinue | Stop-Process -Force
}
winget upgrade --all
Make it scriptable
Create a safe-upgrade.ps1:
# Kill known background-process apps
$processes = @(
"chrome", "msedge", "discord", "spotify",
"teams", "OneDrive", "OneDriveSetup",
"steam", "EpicGamesLauncher"
)
foreach ($name in $processes) {
Get-Process -Name $name -ErrorAction SilentlyContinue | Stop-Process -Force
}
Start-Sleep -Seconds 2
winget upgrade --all --include-unknown `
--accept-package-agreements --accept-source-agreements `
--silent --disable-interactivity
Run weekly. Apps reopen on next launch as needed.
When the error is misleading
Sometimes 0x80073D02 appears for apps that aren't visibly running:
- System tray icons — closing the window doesn't quit
- Windows services — auto-start at boot
- Scheduled tasks — may launch the app silently
- File explorer extensions — Windows Explorer holds DLLs
Open Task Manager → Details and search for the app's process name. If it's there, kill it.
Prevention
To minimise this happening:
- Reboot before bulk upgrades — every app starts fresh
- Close known offenders before
winget upgrade --all - Pin auto-update apps (browsers) so they don't appear in upgrade lists
- Schedule upgrades for off-hours when apps aren't open
What's next?
- All winget error codes explained → — full reference
- Access denied 0x80070005 → — sibling error
- Another installation in progress → — 1618 error
- How to update all apps → — upgrade workflow
