wingettroubleshootinghangingperformance

Fix: winget Stuck, Hanging, or Frozen — 7 Solutions

winget hangs on 'Found', 'Downloading', or 'Installing' for hours? Here are 7 fixes to unstick it — from cache clear to bandwidth throttling.

· 5 min read · updated May 29, 2026
Fix: winget Stuck, Hanging, or Frozen — 7 Solutions

winget runs forever, never finishes? "Downloading" stays at 0% for 10 minutes? Here are the 7 most effective fixes when winget hangs, freezes, or stalls.

Quick diagnostic

Which phase is it stuck on?

Symptom Likely cause Jump to
Hangs at "Found X package(s)" Catalog index stuck Fix 1
Stuck at "Downloading 0%" Delivery Optimization issue Fix 2
Stuck mid-download Network / CDN Fix 3
Hangs at "Installing..." Installer waiting on input Fix 4
Hangs after install completes Post-install cleanup Fix 5
winget search hangs Source not responding Fix 6
Everything is slow Antivirus interference Fix 7

Fix 1 — Stuck at "Found X package(s)"

The local catalog is stuck syncing. Hard reset:

winget source reset --force
winget source update

Wait for the index download to complete (~10 MB), then retry.

If the reset itself hangs, kill winget:

Get-Process winget -ErrorAction SilentlyContinue | Stop-Process -Force

Then re-run the reset.

Fix 2 — Stuck at "Downloading" 0% (Delivery Optimization)

winget's default downloader is Delivery Optimization (DO), which tries peer-to-peer caching across your local network. On many networks DO stalls forever waiting for peers that don't exist.

Switch to the simpler wininet downloader:

winget settings

In the JSON that opens, add:

{
  "network": {
    "downloader": "wininet"
  }
}

Save. Retry winget — downloads should start immediately.

This fix alone resolves ~80% of "stuck at 0%" cases.

Fix 3 — Stuck mid-download

If downloads start but stall mid-way:

Check bandwidth

Test-NetConnection cdn.winget.microsoft.com -Port 443 -InformationLevel Detailed

Look at the RTT. > 500 ms = slow CDN.

Try a different CDN region

If you're on VPN, your traffic may be routing to a slow region:

  • Disconnect VPN
  • Re-run winget

Clear partial downloads

Remove-Item "$env:LOCALAPPDATA\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\LocalCache\Local\Microsoft\WinGet\*" -Recurse -Force -ErrorAction SilentlyContinue

Then retry.

Use longer timeout

In winget settings:

{
  "network": {
    "doProgressTimeoutInSeconds": 300
  }
}

5-minute timeout instead of default 60 seconds — useful for slow connections.

Fix 4 — Hangs at "Installing..."

The installer is running but waiting for something (UI prompt, network, dependent service).

Check for a hidden GUI prompt

Some installers show a UI dialog even with --silent. Alt+Tab to find it. Click through.

Force silent + non-interactive

winget install --id <ID> --silent --disable-interactivity

--disable-interactivity tells the installer "don't pop dialogs."

Watch what the installer is doing

Open Task Manager → Details. Look for:

  • msiexec.exe — MSI install in progress (normal, wait)
  • The publisher's installer EXE — could be waiting on input
  • 0% CPU + no disk activity for 5+ minutes — actually stuck

If stuck, kill the installer:

Get-Process | Where-Object { $_.MainWindowTitle -match "<app name>" } | Stop-Process -Force

Or kill all msiexec processes (only if nothing else is installing):

Get-Process msiexec | Stop-Process -Force

Fix 5 — Hangs after "Successfully installed"

winget cleans up TEMP files and re-indexes after install. Usually completes in seconds, sometimes takes longer if you have many files in %TEMP%.

Clean up TEMP first:

Remove-Item "$env:TEMP\*" -Recurse -Force -ErrorAction SilentlyContinue

Then re-run winget.

Fix 6 — winget search hangs

The msstore source is unresponsive (it depends on Microsoft Store backend). Remove it:

winget source remove --name msstore

winget search should be snappy now. You can still install Store apps via the GUI Store app.

Fix 7 — Antivirus interference

Real-time AV scans every downloaded byte. For 200 MB installers, this can multiply install time 5×.

Test by disabling briefly

  • Windows Security → Virus & threat protection → temporarily disable real-time protection
  • Retry winget
  • Re-enable after

If winget is fast without AV, add exclusions:

  • Path exclusion: %LOCALAPPDATA%\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\LocalCache
  • Process exclusion: winget.exe, msiexec.exe

Done via Windows Security → Virus & threat protection → Manage settings → Add or remove exclusions.

Hard reset (nuclear)

If nothing works:

# Stop everything
Get-Process winget -ErrorAction SilentlyContinue | Stop-Process -Force
Get-Process msiexec -ErrorAction SilentlyContinue | Stop-Process -Force

# Reset App Installer
Get-AppxPackage Microsoft.DesktopAppInstaller | Reset-AppxPackage

# Clear caches
Remove-Item "$env:LOCALAPPDATA\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\LocalCache\Local\Microsoft\WinGet\*" -Recurse -Force -ErrorAction SilentlyContinue

# Reset sources
winget source reset --force
winget source update --accept-source-agreements

# Reboot
shutdown /r /t 0

After reboot, winget should be responsive.

Tips for keeping winget snappy

  1. Use wininet downloader (Fix 2) — single biggest performance win
  2. Remove msstore source if you don't use Store apps
  3. Whitelist winget.exe in your AV
  4. Don't run winget over slow VPN unless required
  5. Update winget itselfwinget upgrade --id Microsoft.AppInstaller
  6. Reboot weekly — clears MSI lock state

When winget is slow but not stuck

If winget completes but takes a long time:

  • 5-10 seconds per install: normal
  • 30-60 seconds per install: AV scanning, slow disk, or slow CDN
  • 2+ minutes per install: something's wrong; run with --verbose --log and diagnose

A typical machine on a fast SSD with wininet downloader installs apps in 10-20 seconds each (excluding the actual download).

Already lost an evening to winget?
winget.tech generates batch install scripts — paste once, walk away, come back to a ready machine.
Build a script →

What's next?

Continue reading