<!--
  canonical-url: https://www.avonture.be/blog/windows-winget
  published:     2023-12-14
  This is a static plain-Markdown mirror generated at build time.
  Visit the canonical URL above for the fully rendered page, with images and interactive components.
-->

# Update all out-of-date Windows programs in batch

> Update all your out-of-date Windows programs in a batch using the powerful winget command-line tool. Learn the commands for a fast and efficient system.

---
![Update all out-of-date Windows programs in batch](/img/v2/windows_tips.webp)

**TL;DR**

This article covers `winget`, Windows' built-in package manager: batch-upgrading every installed program with `winget upgrade --all --silent` (optionally with `--include-unknown` to catch more), listing installed software and available updates with `winget list --upgrade-available`, and upgrading a single application by name.

> [Use the winget tool to install and manage applications](https://learn.microsoft.com/en-us/windows/package-manager/winget/)

If you're working under Linux or [WSL](/blog/wsl-windows-explorer), you know very well the `sudo apt-get update && sudo apt-get upgrade` instruction to ask the operating system to upgrade programs present on your disk with a newer version.

Under Windows, since a few years (starting with Windows 10), there is such command too: it's `winget`.

By running `winget upgrade --all --silent` in **[a DOS (or Powershell) console](/blog/windows-terminal)** started with admin rights, you'll start a process that will scan (in a second) your computer, detect which programs are installed on it and check if a newer version exists (and known by winget).

![Starting winget](./images/start-winget.webp)

Then, because we've added the `--all --silent` flags, we just allow winget to process to the updates without asking confirmation. Let the computer do its work for a few minutes and... tadaaa... you've fresh and updated versions of your software *(the ones supported by winget)*.

![Running winget](./images/running-winget.webp)

Winget has detected that 17 programs should be upgraded and, one by one, will download and install newer versions.

Easy no?

> **Including unknown ones:**
>
> [Marc Dechèvre](https://www.woluweb.be/) tells me that `winget upgrade --all --silent` command found 29 updates to make on his machine and that adding the `--include-unknown` flag found 15 more.

## Getting the list of software

Running `winget list` returns the list of all software installed on your machine and `winget list --upgrade-available` only those when a newer version is available on the internet.

And, to get the list sorted, make sure you're under **PowerShell** and run this command instead: `winget list --upgrade-available | Sort-Object`. The result isn't really nice but, at least, application names are sorted.

## Upgrade just one application

By running `winget upgrade Docker` f.i. you'll upgrade only that one.
