Windows Package Manager - winget

What is WIndows Package Manager - winget?


The Windows Package Manager (also known as winget) is a free and open-source package manager designed by Microsoft for Windows 10Windows 11, and Windows Server 2025. It consists of a command-line utility and a set of services for installing applications. Independent software vendors can use it as a distribution channel for their software packages.

History


Windows Package Manager was first announced at the Microsoft Build developer conference in May 2020. Before deciding to develop Windows Package Manager, the team behind it explored ChocolateyScoopNinite, AppGet, Npackd and the PowerShell-based OneGet. After the announcement of winget, the developer of AppGet, Keivan Beigi, claimed that Microsoft interviewed him in December 2019 under the pretense of employment and acquiring AppGet. After talking with Beigi, Microsoft allegedly ceased communication with him until confirming one day before the launch of winget that they would not be hiring him. Beigi was dismayed at Microsoft’s lack of attribution of AppGet. The release of winget led Beigi to announce that AppGet would be discontinued in August 2020. Microsoft responded with a blog post crediting a number of winget’s features to AppGet.

Microsoft released version 1.0 of Windows Package Manager on May 27, 2021. The Microsoft Community Repository included over 1,400 packages at that date. By May 2025 it had reached 9,000 packages.

Overview


The winget tool supports installers based on EXEMSIX, and MSI. The public Windows Package Manager Community repository hosts manifest files for supported applications in YAML format. In September 2020, Microsoft added the ability to install applications from the Microsoft Store and a command auto-completion feature.

To reduce the likelihood of non-Microsoft-approved software, including malicious software, making its way into the repository and onto the target machine, Windows Package Manager uses Microsoft SmartScreenstatic analysisSHA256 hash validation and other processes.

Various limitations apply to which packages that are added to the winget manifest repository. Among them as of 1.10 is that the software must support silent installations (unless it is a fully portable software), cannot be a .tar.gz.7z, or .rar compressed folder, cannot wholly require hardwares (e.g. NVIDIA drivers), cannot be a self-extracting archive, cannot solely support ARM and/or ARM64, and the software host cannot return HTTP 403 or time out when downloading through winget.

The winget client source code and the community manifest repository are licensed under MIT License and hosted on GitHub.

It does not support automatic package updates on timed schedules. Various third-party tools like Winget-AutoUpdate are designed to fill those gaps. Winget also does not support building from programs’ source codes.

Commands

NameDescription
configureConfigures the system into a desired state
exportExports a list of the installed applications
featuresShow status of experimental features
hashHash installer files
importInstall all the applications in a file
installInstall the given application
listDisplay installed applications
pinManage package upgrade pins
showShow information about the given application
searchSearch and show basic information of applications
settingsOpen winget configuration settings
sourceManage application sources
upgradeUpgrades the given application
uninstallUninstall the given application
validateValidate a manifest file

Examples


Search for and installs variable $PKG_ID:

winget install --id=$PKG_ID -e

List all installed packages:

winget list

Update all packages:

winget upgrade --all

Search for all available packages:

winget search .

Package ID examples