# Upgrade command (winget) [ Windows ]

## **In this article**

1. Aliases
    
2. Usage
    
3. Arguments
    
4. Options
    

The **upgrade** command of the [winget](https://learn.microsoft.com/en-us/windows/package-manager/winget/) tool upgrades the specified application. Optionally, you may use the [**list**](https://learn.microsoft.com/en-us/windows/package-manager/winget/list) command to identify the application you want to upgrade.

The **upgrade** command requires that you specify the exact string to upgrade. If there is any ambiguity, you will be prompted to further filter the **upgrade** command to an exact application.

## **Aliases**

The following aliases are available for this command:

* update
    

## **Usage**

`winget upgrade [[-q] \<query> ...] [\<options>]`

![Image of upgrade command arguments](https://learn.microsoft.com/en-us/windows/package-manager/winget/images/upgrade.png align="left")

## **Arguments**

The following arguments are available.

| Argument | Description |
| --- | --- |
| **\-q,--query** | The query used to search for an app. |

**Note**

The query argument is positional. Wild-card style syntax is not supported. This is most often the string of characters you expect to help find the package you are upgrading.

## **Options**

The options allow you to customize the upgrade experience to meet your needs.

| Option | Description |
| --- | --- |
| **\-m, --manifest** | Must be followed by the path to the manifest (YAML) file. You can use the manifest to run the upgrade experience from a [local YAML file](https://learn.microsoft.com/en-us/windows/package-manager/winget/install#local-install). |
| **\--id** | Limits the upgrade to the ID of the application. |
| **\--name** | Limits the search to the name of the application. |
| **\--moniker** | Limits the search to the moniker listed for the application. |
| **\-v, --version** | Enables you to specify an exact version to upgrade. If not specified, the latest will upgrade the highest versioned application. |
| **\-s, --source** | Restricts the search to the source name provided. Must be followed by the source name. |
| **\-e, --exact** | Uses the exact string in the query, including checking for case sensitivity. It will not use the default behaviour of a substring. |
| **\-i, --interactive** | Runs the installer in interactive mode. The default experience shows installer progress. |
| **\-h, --silent** | Runs the installer in silent mode. This suppresses all UI. The default experience shows installer progress. |
| **\--purge** | Deletes all files and directories in the package directory (portable) |
| **\-o, --log** | Directs the logging to a log file. You must provide a path to a file that you have the write rights to. |
| **\--custom** | Arguments to be passed on to the installer in addition to the defaults. |
| **\--override** | A string that will be passed directly to the installer. |
| **\-l, --location** | Location to upgrade to (if supported). |
| **\-scope** | Select the installed package scope filter (user or machine). |
| **a, --architecture** | Select the architecture to install. |
| **\--installer-type** | Select the installer type to upgrade. See [supported installer types for WinGet client](https://learn.microsoft.com/en-us/windows/package-manager/winget/#supported-installer-formats). |
| **\--locale** | Specifies which locale to use (BCP47 format). |
| **\--ignore-security-hash** | Ignore the installer hash check failure. Not recommended. |
| **\--ignore-local-archive-malware-scan** | Ignore the malware scan performed as part of installing an archive-type package from the local manifest. |
| **\--accept-package-agreements** | Used to accept the license agreement, and avoid the prompt. |
| **\--accept-source-agreements** | Used to accept the source license agreement, and avoid the prompt. |
| **\--header** | Optional Windows-Package-Manager REST source HTTP header. |
| **\-r, --recurse, --all** | Updates all available packages to the latest application. |
| **\-u, --unknown, --include-unknown** | Upgrade packages even if their current version cannot be determined. |
| **\--pinned,--include-pinned** | Upgrade packages even if they have a non-blocking pin. |
| **\--uninstall-previous** | Uninstall the previous version of the package during the upgrade. |
| **\--force** | Direct run the command and continue with non-security related issues. |
| **\-?,--help** | Shows help about the selected command. |
| **\--wait** | Prompts the user to press any key before exiting. |
| **\--logs,--open-logs** | Open the default logs location. |
| **\--verbose, --verbose-logs** | Used to override the logging setting and create a verbose log. |
| **\--disable-interactivity** | Disable interactive prompts. |

### **Example queries**

The following example upgrades a specific version of an application.

CMDCopy

```plaintext
winget upgrade powertoys --version 0.15.2
```

The following example upgrades an application from its ID.

CMDCopy

```plaintext
winget upgrade --id Microsoft.PowerToys
```

The following example shows upgrading all apps

CMD Copy

```plaintext
winget upgrade --all
```

## **Using upgrade**

To identify which apps are in need of an update, simply use **upgrade** without any arguments to show all available upgrades.

In the example below, you will see `winget upgrade` shows the user which apps have an available update. From the available updates, the user identifies that an update is available for *JanDeDobbeleer.OhMyPosh* and uses an **upgrade** to update the application.

![Animation demonstrating upgrade command](https://learn.microsoft.com/en-us/windows/package-manager/winget/images/upgrade.gif align="left")

## **Using a list and upgrade**

To search for an available update for a specific app, use to the [**list**](https://learn.microsoft.com/en-us/windows/package-manager/winget/list) command. Once you have identified that an update is available for your specific app, use an **upgrade** to install the latest.

The example below shows the [**list**](https://learn.microsoft.com/en-us/windows/package-manager/winget/list) command being used to identify that an update is available for *Microsoft.WindowsTerminalPreview*. The user then uses an **upgrade** to update the application.

## **upgrade --all**

**upgrade --all** will identify all the applications with upgrades available. When you run `winget upgrade --all` the Windows Package Manager will look for all applications that have updates available and attempt to install the updates.

**Note**

Some applications do not provide a version. They are always the latest. Because the Windows Package Manager cannot identify if there is a newer version of the app, an upgrade will not be possible.
