Loading editor…
Loading editor…
{| style="width: 100%; border: 2px solid #004578;"
|-
| colspan="2" style="padding: 10px; background-color: #004578;" |
<div style="font-size: 1.3em; font-weight: bold; color: #ffffff; text-align: center;">Windows Package Manager</div>
<div style="font-size: 0.85em; color: #a9c6dd; text-align: center;">winget</div>
|-
| colspan="2" style="padding: 0;" | ![[Winget_in_Windows_Terminal.webp|alt=The winget client searching for and installing a package in Windows Terminal]]
|-
| colspan="2" style="padding: 6px 10px; background-color: #7ad3ff; text-align: center;" darkstyle="background-color: color-mix(in srgb, #7ad3ff 25%, #161617);" |
<div style="font-size: 0.85em; color: #004578;" darkstyle="color: color-mix(in srgb, #004578 55%, #f5f5f7);">Searching for and installing a package from a terminal window</div>
<div style="font-size: 0.75em; color: #1c4f6e;" darkstyle="color: color-mix(in srgb, #1c4f6e 55%, #f5f5f7);">Screenshot from Microsoft's own documentation</div>
|-
! style="background-color: #fff; color: #004578; width: 32%;" darkstyle="background-color: var(--wiki-surface); color: color-mix(in srgb, #004578 55%, #f5f5f7);" | Developer
| style="text-align: left;" | Microsoft
|-
! style="background-color: #fff; color: #004578;" darkstyle="background-color: var(--wiki-surface); color: color-mix(in srgb, #004578 55%, #f5f5f7);" | Announced
| style="text-align: left;" | 2020.05.19 (preview)
|-
! style="background-color: #fff; color: #004578;" darkstyle="background-color: var(--wiki-surface); color: color-mix(in srgb, #004578 55%, #f5f5f7);" | First stable release
| style="text-align: left;" | Version 1.0, May 2021
|-
! style="background-color: #fff; color: #004578;" darkstyle="background-color: var(--wiki-surface); color: color-mix(in srgb, #004578 55%, #f5f5f7);" | Latest stable release
| style="text-align: left;" | 1.28.240 (2026.04.17)
|-
! style="background-color: #fff; color: #004578;" darkstyle="background-color: var(--wiki-surface); color: color-mix(in srgb, #004578 55%, #f5f5f7);" | Client name
| style="text-align: left;" | <code>winget</code>
|-
! style="background-color: #fff; color: #004578;" darkstyle="background-color: var(--wiki-surface); color: color-mix(in srgb, #004578 55%, #f5f5f7);" | Written in
| style="text-align: left;" | C++, C#, PowerShell
|-
! style="background-color: #fff; color: #004578;" darkstyle="background-color: var(--wiki-surface); color: color-mix(in srgb, #004578 55%, #f5f5f7);" | Operating system
| style="text-align: left;" | <div>Windows 10 version 1809 and later, [[Windows 11]], Windows Server 2025</div>
|-
! style="background-color: #fff; color: #004578;" darkstyle="background-color: var(--wiki-surface); color: color-mix(in srgb, #004578 55%, #f5f5f7);" | Delivered in
| style="text-align: left;" | App Installer
|-
! style="background-color: #fff; color: #004578;" darkstyle="background-color: var(--wiki-surface); color: color-mix(in srgb, #004578 55%, #f5f5f7);" | License
| style="text-align: left;" | MIT License
|-
! style="background-color: #fff; color: #004578;" darkstyle="background-color: var(--wiki-surface); color: color-mix(in srgb, #004578 55%, #f5f5f7);" | Source code
| style="text-align: left;" | [https://github.com/microsoft/winget-cli github.com/microsoft/winget-cli]
|-
! style="background-color: #fff; color: #004578;" darkstyle="background-color: var(--wiki-surface); color: color-mix(in srgb, #004578 55%, #f5f5f7);" | Package repository
| style="text-align: left;" | [https://github.com/microsoft/winget-pkgs github.com/microsoft/winget-pkgs]
|-
! style="background-color: #fff; color: #004578;" darkstyle="background-color: var(--wiki-surface); color: color-mix(in srgb, #004578 55%, #f5f5f7);" | Documentation
| style="text-align: left;" | [https://learn.microsoft.com/windows/package-manager/ learn.microsoft.com]
|}
'''Windows Package Manager''' is a [[Package manager|package manager]] for Microsoft Windows, built and maintained by [[Microsoft]]. Its command-line client is named '''[[winget]]''', and most people use that name for the whole system. One command replaces the usual routine of opening a browser, hunting for a download page, and clicking through an installer. Typing <code>winget install PowerToys</code> finds the application, downloads its installer, and runs it silently.
The tool ships as part of App Installer, a system component that Windows updates through the [[Microsoft Store]]. It runs on Windows 10 version 1809 and later, on [[Windows 11]], and on Windows Server 2025. Two package sources are configured by default: a community repository of application descriptions hosted on [[GitHub]], and the Microsoft Store.
Microsoft announced a preview at its Build conference in May 2020 and released version 1.0 a year later. The client is open source under the MIT License, and the source code lives in a public GitHub repository. The preview announcement was quickly overshadowed by a dispute with the author of AppGet, an existing Windows package manager that had influenced the design.
= Background =
A package manager keeps a catalog of software and installs items from it on request. Linux distributions have shipped one for decades, and macOS developers rely on the third-party Homebrew project. Windows had no equivalent built into the system, so installing a set of tools on a fresh machine meant visiting a dozen websites by hand.
Several projects filled the gap before Microsoft did. Chocolatey built a large catalog and a business around enterprise support, Scoop installed software without administrator prompts, Ninite watched for updates to the applications it had installed. OneGet worked through [[PowerShell]], while AppGet and Npackd took approaches of their own.
Microsoft looked at those projects and decided to build a new one anyway, giving two reasons at launch. It wanted a repository whose contents it could vouch for, checking every submission with SmartScreen, static analysis, and hash verification. It also wanted a small native client with few dependencies, something it could ship as part of Windows itself.
= History =
== Preview and the AppGet dispute ==
Demitrius Nelon announced the preview on 2020.05.19, during Build 2020, and Microsoft published the client's source code the same day. That first build could install, search, and show packages, and it included commands for generating and checking manifest files. Windows Insiders received it automatically through App Installer, and anyone else could clone the repository and build the client themselves.
Within days the announcement drew a public complaint from Keivan Beigi, the author of AppGet, who said Microsoft had approached him in late 2019 about a job and a possible acquisition. Talks went quiet for months, and he says he received about a day's warning before winget was unveiled. Beigi argued that winget's mechanics, terminology, manifest format, and repository folder layout all came from his project, which Microsoft's announcement had mentioned only in a passing list.
Andrew Clinick, a group program manager at Microsoft, responded on 2020.05.30 in a post titled "winget install learning." He wrote plainly that the company had failed to live up to its own goal, specifically with Beigi and AppGet. The post named four AppGet qualities that had shaped winget: no scripts during installation, rich manifests stored in GitHub, support for every kind of Windows installer, and smooth updates for anything in the repository. Microsoft still thanks Beigi by name in the project's README file, crediting his work with shaping the initial direction of the effort.
== Growth ==
The catalog passed a thousand packages within six months, and a September 2020 update added the Microsoft Store as a second source and brought tab completion to PowerShell. A preview the following spring added bulk import and support for Group Policy. Version 1.0 arrived at Build 2021, roughly a year after the first preview.
Later releases filled out the feature list rather than changing its shape. Commands were added for pinning a package to a version, downloading an installer without running it, repairing a broken installation, and applying a configuration file. A PowerShell module, a COM programming interface, and a server for AI agent tools followed. In 2026 the version number jumped from 1.12 to 1.28 so that the client would match the App Installer package it ships inside.
{| class="wikitable" style="width: 100%; border: 2px solid #004578;"
|-
! style="background-color: #004578; color: #7ad3ff;" | Release
! style="background-color: #004578; color: #7ad3ff;" | Date
! style="background-color: #004578; color: #7ad3ff;" | Notable additions
|-
! style="background-color: #fff; color: #004578;" darkstyle="background-color: var(--wiki-surface); color: color-mix(in srgb, #004578 55%, #f5f5f7);" | Preview
| style="text-align: left;" | 2020.05
| style="text-align: left;" | Announced at Build 2020; install, search, show, hash, validate
|-
! style="background-color: #fff; color: #004578;" darkstyle="background-color: var(--wiki-surface); color: color-mix(in srgb, #004578 55%, #f5f5f7);" | 0.2
| style="text-align: left;" | 2020.09
| style="text-align: left;" | Microsoft Store as a second source; tab completion
|-
! style="background-color: #fff; color: #004578;" darkstyle="background-color: var(--wiki-surface); color: color-mix(in srgb, #004578 55%, #f5f5f7);" | 0.3
| style="text-align: left;" | 2021.04
| style="text-align: left;" | Bulk import; Group Policy support
|-
! style="background-color: #fff; color: #004578;" darkstyle="background-color: var(--wiki-surface); color: color-mix(in srgb, #004578 55%, #f5f5f7);" | 1.0
| style="text-align: left;" | 2021.05
| style="text-align: left;" | First stable release, announced at Build 2021
|-
! style="background-color: #fff; color: #004578;" darkstyle="background-color: var(--wiki-surface); color: color-mix(in srgb, #004578 55%, #f5f5f7);" | 1.28
| style="text-align: left;" | 2026.04
| style="text-align: left;" | Version renumbered to match App Installer; source editing
|}
= How it works =
== Sources ==
A source is a catalog that the client can search, and the default one, named <code>winget</code>, is the community repository on GitHub. A second source, named <code>msstore</code>, covers free Microsoft Store applications rated for all ages. Organizations can host a private catalog behind a REST interface, and administrators can restrict or replace the configured sources through Group Policy.
== Manifests and the community repository ==
Each package in the community repository is described by a manifest, a short text file in [[YAML]] format. The manifest records the publisher, the version, the download address of the installer, and a SHA-256 hash of that file. It does not contain a script, because the client refuses to run one.
Manifests live in a fixed folder structure inside the winget-pkgs repository. The path runs from a first-letter folder to the publisher, the application, and finally the version, and the identifiers inside the manifest must match that path. Anyone can add a package to the catalog by opening a pull request against the repository.
Submissions then pass through an automated review that checks the manifest against a schema, confirms that the installer hash matches, and tests the installer in a clean environment. Installation must succeed silently for both administrators and ordinary users, and uninstallation must leave nothing behind. Several antivirus engines scan the result, and download addresses must use HTTPS and point directly at the publisher's own servers rather than a redirector.
Labels on the pull request report the outcome, a moderator reviews the package before it joins the public catalog, and Microsoft reserves the right to refuse any submission. Software that legitimately resembles unwanted programs, such as certain debugging tools, is sometimes rejected because the scanners cannot clear it.
== Installer types ==
The client is not tied to one installation technology, and it drives EXE installers built with Inno Setup, Nullsoft, or a plain silent switch, along with MSI, WiX, and Burn packages. It also handles APPX and MSIX packages, ZIP archives, portable executables that need no installation at all, and font files.
= Commands =
Running <code>winget</code> with no arguments lists the available commands, and <code>winget --help</code> gives fuller guidance for any one of them. The commands used most often in day-to-day work are shown below.
{| class="wikitable" style="width: 100%; border: 2px solid #004578;"
|-
! style="background-color: #004578; color: #7ad3ff;" | Command
! style="background-color: #004578; color: #7ad3ff;" | What it does
|-
! style="background-color: #fff; color: #004578;" darkstyle="background-color: var(--wiki-surface); color: color-mix(in srgb, #004578 55%, #f5f5f7);" | <code>search</code>
| style="text-align: left;" | Finds a package by name, tag, or short nickname
|-
! style="background-color: #fff; color: #004578;" darkstyle="background-color: var(--wiki-surface); color: color-mix(in srgb, #004578 55%, #f5f5f7);" | <code>show</code>
| style="text-align: left;" | Prints details about a package without installing it
|-
! style="background-color: #fff; color: #004578;" darkstyle="background-color: var(--wiki-surface); color: color-mix(in srgb, #004578 55%, #f5f5f7);" | <code>install</code>
| style="text-align: left;" | Downloads and runs the installer for a package
|-
! style="background-color: #fff; color: #004578;" darkstyle="background-color: var(--wiki-surface); color: color-mix(in srgb, #004578 55%, #f5f5f7);" | <code>list</code>
| style="text-align: left;" | Shows what is installed and which items have updates
|-
! style="background-color: #fff; color: #004578;" darkstyle="background-color: var(--wiki-surface); color: color-mix(in srgb, #004578 55%, #f5f5f7);" | <code>upgrade</code>
| style="text-align: left;" | Updates one package, or every package with <code>--all</code>
|-
! style="background-color: #fff; color: #004578;" darkstyle="background-color: var(--wiki-surface); color: color-mix(in srgb, #004578 55%, #f5f5f7);" | <code>uninstall</code>
| style="text-align: left;" | Removes an installed package
|-
! style="background-color: #fff; color: #004578;" darkstyle="background-color: var(--wiki-surface); color: color-mix(in srgb, #004578 55%, #f5f5f7);" | <code>download</code>
| style="text-align: left;" | Saves an installer without running it
|-
! style="background-color: #fff; color: #004578;" darkstyle="background-color: var(--wiki-surface); color: color-mix(in srgb, #004578 55%, #f5f5f7);" | <code>pin</code>
| style="text-align: left;" | Holds a package at its current version
|-
! style="background-color: #fff; color: #004578;" darkstyle="background-color: var(--wiki-surface); color: color-mix(in srgb, #004578 55%, #f5f5f7);" | <code>export</code>
| style="text-align: left;" | Writes the list of installed packages to a file
|-
! style="background-color: #fff; color: #004578;" darkstyle="background-color: var(--wiki-surface); color: color-mix(in srgb, #004578 55%, #f5f5f7);" | <code>import</code>
| style="text-align: left;" | Installs every package named in such a file
|-
! style="background-color: #fff; color: #004578;" darkstyle="background-color: var(--wiki-surface); color: color-mix(in srgb, #004578 55%, #f5f5f7);" | <code>configure</code>
| style="text-align: left;" | Brings the machine to the state a configuration file describes
|-
! style="background-color: #fff; color: #004578;" darkstyle="background-color: var(--wiki-surface); color: color-mix(in srgb, #004578 55%, #f5f5f7);" | <code>source</code>
| style="text-align: left;" | Adds, edits, removes, or refreshes package sources
|-
! style="background-color: #fff; color: #004578;" darkstyle="background-color: var(--wiki-surface); color: color-mix(in srgb, #004578 55%, #f5f5f7);" | <code>settings</code>
| style="text-align: left;" | Opens the client's own settings file for editing
|}
The pair of <code>export</code> and <code>import</code> covers the common case of rebuilding a machine. The export file lists installed packages, and running the import on a new computer reinstalls all of them in one pass.
= Configuration files =
A WinGet Configuration file goes further than a package list, using YAML to describe the state a machine should end up in. That state covers applications, developer tools, and Windows settings alike. Running <code>winget configure</code> against the file downloads whatever is needed and applies it through PowerShell Desired State Configuration.
The file is declarative rather than a sequence of steps, so it states the result instead of the route to it. Microsoft aims the feature at teams onboarding new developers, where a single file can replace a page of setup instructions. The same file produces the same environment on every machine that runs it.
= Availability =
App Installer carries the client on desktop editions of Windows and updates it through the Microsoft Store, while Windows Server 2025 receives it through Windows Update. The command is unavailable until someone has signed in to the machine once, because registration happens in the background after first sign-in. Windows Sandbox includes neither App Installer nor the Store, so the client has to be added deliberately there.
Developers who want unreleased features can install a preview build from the project's releases page, or join the Canary or Dev channels of the Windows Insider Program. The Microsoft.WinGet.Client module on the PowerShell Gallery offers the same operations as PowerShell commands, and a COM interface lets other programs drive the client directly.
= See also =
* [[winget]]
* [[Package manager]]
* [[Microsoft Store]]
* [[PowerShell]]
* [[Windows Terminal]]
* [[MSIX]]
* [[YAML]]