---
title: Explore the Windows Package Manager tool
kind: note
description: Link Introduction winget is an open source tool to install/uninstall software from the Windows command line Targeting B2C and B2B Supports Windows 10, 11, and Server Explain the purpose of Windows…
words: 559
readingMinutes: 3
created: '2025-07-28T00:00:00.000Z'
updated: '2025-07-28T21:25:57+02:00'
website: https://learn.microsoft.com/en-us/training/modules/explore-windows-package-manager-tool/
---
## Link

<https://learn.microsoft.com/en-us/training/modules/explore-windows-package-manager-tool/>

# [Introduction](https://learn.microsoft.com/en-us/training/modules/explore-windows-package-manager-tool/1-introduction)
- [winget](/notes/winget) is an [open source](/notes/open-source) tool to install/uninstall [software](/notes/software) from the [Windows](/notes/microsoft-windows) command line
- Targeting <span class="dead-link">B2C</span> and <span class="dead-link">B2B</span>
- Supports [Windows](/notes/microsoft-windows) 10, 11, and Server
# [Explain the purpose of Windows Package Manager](https://learn.microsoft.com/en-us/training/modules/explore-windows-package-manager-tool/2-explain-purpose-of)
- A package represents an application
- A manifest is a (set of) metadata file(s) that instruct [winget](/notes/winget) on how to (un)install a package
- A source is a repository containing manifests
- Sources that are enabled by default (but can be disabled through group policy):
	- `msstore` - apps (without age restriction) from the [Microsoft](/notes/microsoft) Store
	- `winget` - a community repository curated by volunteers and secured by [Microsoft](/notes/microsoft) (similar to the AUR for [Arch Linux](/notes/arch-linux))
- Organizations can host their own sources, which are based on a <span class="dead-link">REST</span> <span class="dead-link">API</span>
# [Install and uninstall software with Windows Package Manager](https://learn.microsoft.com/en-us/training/modules/explore-windows-package-manager-tool/3-install-uninstall-software)
- Search for a package:
	```powershell
	winget search SEARCH_TERM
	```
- Install a package:
	```powershell
	winget install PACKAGE_ID
	```
- [CLI](/notes/cli) flags can be used to install from a local manifest, force installation by ID only, only search the name, specify a specific version to install, install quietly, and more.
- Uninstall a package:
	```powershell
	winget uninstall PACKAGE_ID
	```
# [Update software with Windows Package Manager](https://learn.microsoft.com/en-us/training/modules/explore-windows-package-manager-tool/4-update-software)
- List available updates:
	```powershell
	winget upgrade
	```
- Upgrade one package:
	```powershell
	winget upgrade PACKAGE_ID
	```
- Upgrade all packages with updates:
	```powershell
	winget upgrade --all
	```
# [Discuss the Windows Package Manager repository](https://learn.microsoft.com/en-us/training/modules/explore-windows-package-manager-tool/5-discuss-repository)
- The [Windows Package Manager Community Repository](https://github.com/microsoft/winget-pkgs) is a source that everyone can contribute to.
- Manifests are in [YAML](/notes/yaml) format.
- A source has the following directory structure:
  `manifests / m / Microsoft / PowerShell / 7.1.4.0`
	Where:
	- `manifests` is always the same static name for the top level directory
	- `m` is the lower-cased first letter of the publisher name
	- `Microsoft` is the publisher
	- `PowerShell` is the application
	- `7.1.4.0` is the version
- The publisher, application and version directories each store relevant metadata.
# [Contribute to the Windows Package Manager repository](https://learn.microsoft.com/en-us/training/modules/explore-windows-package-manager-tool/6-contribute-to-repository)
- Requirements for contributing packages:
	- A [GitHub](/notes/github) account
	- The installer needs to be in <span class="dead-link">MSIX</span>, <span class="dead-link">MSI</span> or <span class="dead-link">EXE</span> format
	- Not a duplicate
- [microsoft/winget-create](https://github.com/microsoft/winget-create) - Windows Package Manager Manifest Creator [CLI](/notes/cli)
	- Create a new package:
		```powershell
		wingetcreate new INSTALLER_URL_1 INSTALLER_URL_2 ...
		```
		- Only one URL is required, but there could be multiple, e.g. for different architectures (x64 vs. arm64, etc.)
	- The schema supports "singleton" manifests (all metadata in one file), but `wingetcreate` creates multi-file manifests, and those are the only ones accepted by the community repository
- The `PACKAGE_ID.installer.yaml` supports specifying `InstallerSwitches`, e.g. for silent installation
- Packages can be "tagged" to be discoverable using miscellaneous search terms
- Validate a manifest:
	```powershell
	winget validate -manifest MANIFEST_PATH
	```
- Test-install a manifest:
	```powershell
	winget install -manifest MANIFEST_PATH
	```
- "[Windows](/notes/microsoft-windows) Sandbox" is a disposable <span class="dead-link">VM</span> in [Windows](/notes/microsoft-windows) 11 Pro and higher editions that can simplify testing installers
- Store a [GitHub](/notes/github) token to allow `wingetcreate` to open pull requests for package contributions:
	```powershell
	wingetcreate -store GITHUB_PAT_TOKEN
	```
- Open a pull request from `wingetcreate` (this automatically forks the community repository in the user's [GitHub](/notes/github) account):
	```powershell
	wingetcreate submit MANIFEST_PATH
	```
# [Host your own Windows Package Manager repository](https://learn.microsoft.com/en-us/training/modules/explore-windows-package-manager-tool/7-host-your-own-repository)
- [microsoft/winget-cli-restsource](https://github.com/microsoft/winget-cli-restsource) - a reference implementation of a <span class="dead-link">REST</span> based package source for the winget client
- Use group policy to configure installer source repositories available to enterprise users
# [Control Windows Package Manager with Group Policy](https://learn.microsoft.com/en-us/training/modules/explore-windows-package-manager-tool/8-control-group-policy)
- A group policy template in the ADMX/ADML format can be downloaded [here](https://www.microsoft.com/download/details.aspx?id=103034).
- Users can see the applied policies using:
	```powershell
	winget --info
	```
- Using group policy, enterprise administrators can configure:
	- Whether Windows Package Manager is enabled
	- If users may change their settings
	- Whether hashes can be overridden
	- The ability to enable experimental features
	- Local manifest installation
	- The auto update interval for sources
	- The default source (the community repository)
	- The Microsoft Store source
	- Whether users can add sources
	- Which sources users can enable/disable, if any
# Summary
## Resources
- [Microsoft Learn](https://learn.microsoft.com/en-us/windows/package-manager/winget/)
- [Windows Package Manager can help you export and import a collection of software!](https://techcommunity.microsoft.com/t5/itops-talk-blog/windows-package-manager-can-help-you-export-and-import-a/ba-p/2515328)
- [microsoft/winget-pkgs](https://github.com/microsoft/winget-pkgs) - The [Microsoft](/notes/microsoft) community [Windows Package Manager](/notes/winget) manifest repository
- [Contribute to Windows Package Manager](https://techcommunity.microsoft.com/t5/itops-talk-blog/contribute-to-windows-package-manager/ba-p/2439406)
