What Is winget?
If you’ve ever used apt on Ubuntu or brew on macOS, you already know the comfort of installing software with a single command. Windows users had to rely on third-party tools like Chocolatey or Scoop for years – until Microsoft quietly shipped their own solution.
winget (short for Windows Package Manager) is a command-line tool built into Windows 10 (21H1 and later) and Windows 11. It lets you install, update, and uninstall software straight from your terminal – no browser, no installer wizard, no “Next β Next β Finish” dance.
Why Should You Care?
Here’s the honest pitch: winget won’t replace everything in your workflow, but it solves a specific pain point really well – keeping your software up to date and setting up a new machine fast.
- No third-party dependencies – it’s built into Windows
- Access to thousands of packages (7,000+ in the official repo)
- Works with PowerShell, CMD, and Windows Terminal
- Scriptable – great for machine bootstrapping
- Integrates with Microsoft Store and community-maintained sources
Getting Started
Is winget already installed?
Open Windows Terminal or PowerShell and run:
winget --version
If you see something like v1.9.x, you’re good to go. If not, install the App Installer package from the Microsoft Store β winget ships with it.
Core Commands
Search for a package
winget search firefox
This queries the winget repository and returns a list of matching packages with their IDs and versions. The Package ID is what you’ll use to install precisely the right thing.
Install a package
winget install Mozilla.Firefox
winget downloads and runs the installer silently (where supported). Most packages require no interaction at all.
This queries the winget repository and returns a list of matching packages with their IDs and versions. The Package ID is what you’ll use to install precisely the right thing.
π‘ Tip: Not sure about the exact package name? Check out winstall.app β it’s a clean web UI for browsing the winget repository. You can search visually, pick your packages, and it generates the ready-to-run
winget installcommands for you. Especially handy when setting up a new machine.
Pro tip: Use the --id flag to be explicit and avoid ambiguity:
winget install --id Mozilla.Firefox
Update a single package
winget upgrade Mozilla.Firefox
Update everything at once
This is the real power move:
winget upgrade --all
One command. Every outdated app on your system β updated. This alone is worth knowing winget exists.
Uninstall a package
winget uninstall Mozilla.Firefox
List installed packages
winget list
This shows everything winget knows about β including apps installed outside of winget, as it scans the system registry.
Practical Example: Setting Up a New Machine
One of the best use cases for winget is machine bootstrapping. Instead of hunting for installers, you can create a simple PowerShell script:
# my-setup.ps1
winget install --id Microsoft.VisualStudioCode
winget install --id Git.Git
winget install --id Mozilla.Firefox
winget install --id Spotify.Spotify
winget install --id VideoLAN.VLC
winget install --id 7zip.7zip
Run it once, grab a coffee, and come back to a fully set up machine. You can commit this script to a Git repo and reuse it whenever you get a new PC.
Export & Import: The Portable Setup
winget can also export your current installed packages to a JSON file:
winget export -o my-packages.json
And import them on another machine:
winget import -i my-packages.json
This is handy for keeping multiple machines in sync or for disaster recovery.
A Few Gotchas to Know
- Not every app is in the repo. Niche or enterprise software might be missing. Check with
winget searchfirst. - Silent installs aren’t always silent. Some installers don’t support unattended mode and will still show a UI.
- winget upgrades only what it knows about. If you installed an app manually before, winget might not track it correctly.
- Run as Administrator when installing system-level tools to avoid permission issues.
Where Do the Packages Come From?
winget pulls from multiple sources:
| Source | What it contains |
|---|---|
winget (default) | Microsoft-curated community repo on GitHub |
msstore | Microsoft Store packages |
| Custom sources | You can add your own private repos |
The community repo lives at github.com/microsoft/winget-pkgs β anyone can submit a package via pull request.
Verdict
winget isn’t trying to be Homebrew. It’s a pragmatic, no-frills tool that does exactly what Windows users needed: a native, scriptable package manager that just works. The upgrade --all command alone will save you time every week.
If you’re already comfortable in a terminal, give it a shot. Start with winget upgrade --all and see what it finds.

Leave a Reply