guide · static export
Software

Use winget to Install and Update Everything From One Place

A fresh Windows install needs twenty programs. One package manager installs them, updates them and rebuilds the list on the next machine.

by@guidox updated:10/31/26 time:25 min level:Beginner tested on:Windows 11 24H2 works on:Windows 10 1809+, Windows 11 tools:winget
TL;DR

Search with **winget search**, install by id with **winget install --id**, then keep the list with **winget export** and restore it on a new PC with **winget import**.

Before you start

Requirements

  • Windows 11 with App Installer
  • A terminal
  • Internet access
Step by step

Instructions

01

Check the sources

The client ships with the community repository and the Store source. If a package is missing, refresh the sources before you conclude that it does not exist.

winget --version
winget source list
winget source update
02

Search by id, install by id

Name search returns several candidates and the first hit is not always the one you want. Use the exact identifier so the installer cannot pick a different vendor.

winget search firefox
winget install --id Mozilla.Firefox -e
tipThe -e flag means exact match. Without it a partial name can match a package you did not intend.
03

Install unattended

Accepting the agreements and using the silent switch keeps a setup script from stopping on a prompt. Some installers ignore silent mode and still open a window; those need manual clicks.

winget install --id 7zip.7zip -e --silent --accept-package-agreements --accept-source-agreements
04

Update everything in one pass

The upgrade command lists what has a newer version and installs it. Close the apps first: an update cannot replace a binary that is currently running.

winget upgrade
winget upgrade --all --include-unknown
⚠ warningUnknown versions are apps installed outside the package manager. They update fine, but winget cannot verify the version it finds.
05

Export the list, import it on the next PC

The export writes a JSON file with every package and its source. On a new machine one command reinstalls the set; anything unavailable in the repository is reported and skipped.

winget export -o packages.json
winget import -i packages.json
06

Pin what must not move

Drivers, VPN clients and tools that break on major updates can be pinned. A pinned package is skipped by upgrade until you unpin it.

winget pin add --id <package> --blocking
winget pin list
tipPin sparsely. Ten pinned packages turn the one-command update into a manual review.
Troubleshooting

Common issues

No package found for a program I use

Refresh the sources and search the exact name. Niche tools and vendor-specific utilities are often not in the repository.

An install fails with 0x80073D02

The app is running. Close it, including its tray icon and background process, then retry.

Upgrade hangs on one package

The installer opened a window and waits for a click. Retry with --silent, or update that program by hand.

A Store package refuses to install

Store packages can require a signed-in Microsoft account. Install those from the Store app instead.

FAQ

Frequently asked

Does winget replace vendor updaters?

For many apps yes, for drivers and firmware no. Those still come from the vendor tool.

Do I need admin rights?

For per-machine installs yes, and the UAC prompt appears per package. Per-user installs work without elevation.

How to undo this

Uninstall a package with **winget uninstall --id <package>**. The exported JSON file is plain text and can be deleted at any time.

Changelog · 1 entry
  1. 2026-10-31
    First version
Interactive version: checklist, feedback, related guides →

Free · no account needed · tracks your progress