Skip to content

Commit 25a3c6f

Browse files
Merge pull request #6509 from MicrosoftDocs/main
Auto Publish – main to live - 2026-03-25 05:00 UTC
2 parents 5147e4c + 5202d39 commit 25a3c6f

8 files changed

Lines changed: 261 additions & 33 deletions

File tree

hub/package-manager/package/manifest.md

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
title: Create your package manifest
33
description: If you want to submit a software package to the Windows Package Manager repository, start by creating a package manifest.
4-
ms.date: 11/01/2023
4+
ms.date: 03/24/2026
55
ms.topic: how-to
66
ms.localizationpriority: medium
77
---
@@ -57,7 +57,7 @@ For a complete list and descriptions of items in a manifest, see the [manifest s
5757

5858
### Minimal required schema
5959

60-
As specified in the [singleton JSON schema](https://github.com/microsoft/winget-cli/blob/master/schemas/JSON/manifests/v1.6.0/manifest.singleton.1.6.0.json),
60+
As specified in the [singleton JSON schema](https://github.com/microsoft/winget-cli/blob/master/schemas/JSON/manifests/v1.12.0/manifest.singleton.1.12.0.json),
6161
only certain fields are required. The minimal supported YAML file would look like the example below. The singleton format is only valid for packages containing a single installer and a single locale. If more than one installer or locale is provided, the multiple YAML file format and schema must be used.
6262

6363
The partitioning scheme was added to help with GitHub's UX. Folders with thousands of children do not render well in the browser.
@@ -74,11 +74,11 @@ License: # The license of the application.
7474
ShortDescription: # The description of the application.
7575
Installers:
7676
- Architecture: # Enumeration of supported architectures.
77-
InstallerType: # Enumeration of supported installer types (exe, msi, msix, inno, wix, nullsoft, appx).
77+
InstallerType: # Enumeration of supported installer types (exe, msi, msix, inno, wix, nullsoft, appx, font).
7878
InstallerUrl: # Path to download installation file.
7979
InstallerSha256: # SHA256 calculated from installer.
8080
ManifestType: # The manifest file type
81-
ManifestVersion: 1.6.0
81+
ManifestVersion: 1.12.0
8282
```
8383
8484
#### [Example](#tab/minexample/)
@@ -100,7 +100,7 @@ Installers:
100100
InstallerSha256: 092aa89b1881e058d31b1a8d88f31bb298b5810afbba25c5cb341cfa4904d843
101101
SignatureSha256: e53f48473621390c8243ada6345826af7c713cf1f4bbbf0d030599d1e4c175ee
102102
ManifestType: singleton
103-
ManifestVersion: 1.6.0
103+
ManifestVersion: 1.12.0
104104
```
105105
106106
* * *
@@ -110,10 +110,10 @@ ManifestVersion: 1.6.0
110110
To provide the best user experience, manifests should contain as much meta-data as possible. In order to separate concerns for validating installers
111111
and providing localized metadata, manifests should be split into multiple files. The minimum number of YAML files for this kind of manifest is three. Additional locales should also be provided.
112112
113-
* A [version](https://github.com/microsoft/winget-pkgs/blob/master/doc/manifest/schema/1.6.0/version.md) ([JSON Schema](https://github.com/microsoft/winget-cli/blob/master/schemas/JSON/manifests/v1.6.0/manifest.version.1.6.0.json)) file.
114-
* The [default locale](https://github.com/microsoft/winget-pkgs/blob/master/doc/manifest/schema/1.6.0/defaultLocale.md) ([JSON Schema](https://github.com/microsoft/winget-cli/blob/master/schemas/JSON/manifests/v1.6.0/manifest.defaultLocale.1.6.0.json)) file.
115-
* An [installer](https://github.com/microsoft/winget-pkgs/blob/master/doc/manifest/schema/1.6.0/installer.md) ([JSON Schema](https://github.com/microsoft/winget-cli/blob/master/schemas/JSON/manifests/v1.6.0/manifest.installer.1.6.0.json)) file.
116-
* Additional [locale](https://github.com/microsoft/winget-pkgs/blob/master/doc/manifest/schema/1.6.0/locale.md) ([JSON Schema](https://github.com/microsoft/winget-cli/blob/master/schemas/JSON/manifests/v1.6.0/manifest.locale.1.6.0.json)) files.
113+
* A [version](https://github.com/microsoft/winget-pkgs/blob/master/doc/manifest/schema/1.12.0/version.md) ([JSON Schema](https://github.com/microsoft/winget-cli/blob/master/schemas/JSON/manifests/v1.12.0/manifest.version.1.12.0.json)) file.
114+
* The [default locale](https://github.com/microsoft/winget-pkgs/blob/master/doc/manifest/schema/1.12.0/defaultLocale.md) ([JSON Schema](https://github.com/microsoft/winget-cli/blob/master/schemas/JSON/manifests/v1.12.0/manifest.defaultLocale.1.12.0.json)) file.
115+
* An [installer](https://github.com/microsoft/winget-pkgs/blob/master/doc/manifest/schema/1.12.0/installer.md) ([JSON Schema](https://github.com/microsoft/winget-cli/blob/master/schemas/JSON/manifests/v1.12.0/manifest.installer.1.12.0.json)) file.
116+
* Additional [locale](https://github.com/microsoft/winget-pkgs/blob/master/doc/manifest/schema/1.12.0/locale.md) ([JSON Schema](https://github.com/microsoft/winget-cli/blob/master/schemas/JSON/manifests/v1.12.0/manifest.locale.1.12.0.json)) files.
117117
118118
The example below shows many optional metadata fields and multiple locales. Note the default locale has more requirements than additional locales. In the [show command](../winget/show.md), any required fields that aren't provided for additional locales will display fields from the default locale.
119119
@@ -126,7 +126,7 @@ PackageIdentifier: "Microsoft.WindowsTerminal"
126126
PackageVersion: "1.6.10571.0"
127127
DefaultLocale: "en-US"
128128
ManifestType: "version"
129-
ManifestVersion: "1.6.0"
129+
ManifestVersion: "1.12.0"
130130
```
131131
132132
#### [Default locale file example](#tab/default-locale-example/)
@@ -159,7 +159,7 @@ Tags:
159159
- "ps"
160160
- "terminal"
161161
ManifestType: "defaultLocale"
162-
ManifestVersion: "1.6.0"
162+
ManifestVersion: "1.12.0"
163163
```
164164
165165
#### [Additional locale file example](#tab/additional-locale-example/)
@@ -173,7 +173,7 @@ PackageLocale: "fr-FR"
173173
Publisher: "Microsoft"
174174
ShortDescription: "Le nouveau terminal Windows, une expérience de ligne de commande à onglets pour Windows."
175175
ManifestType: "locale"
176-
ManifestVersion: "1.6.0"
176+
ManifestVersion: "1.12.0"
177177
```
178178
179179
#### [Installer file example](#tab/installer-example/)
@@ -204,7 +204,7 @@ Installers:
204204
InstallerSha256: 092aa89b1881e058d31b1a8d88f31bb298b5810afbba25c5cb341cfa4904d843
205205
SignatureSha256: e53f48473621390c8243ada6345826af7c713cf1f4bbbf0d030599d1e4c175ee
206206
ManifestType: "installer"
207-
ManifestVersion: "1.6.0"
207+
ManifestVersion: "1.12.0"
208208
```
209209
210210
* * *

hub/package-manager/winget/index.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
title: Use WinGet to install and manage applications
33
description: The WinGet command line tool enables developers to discover, install, upgrade, remove and configure applications on Windows computers.
4-
ms.date: 09/15/2025
4+
ms.date: 03/24/2026
55
ms.topic: overview
66
---
77

@@ -69,13 +69,13 @@ Some users have reported [issues](https://github.com/microsoft/winget-cli/issues
6969

7070
### Commands
7171

72-
The current preview of the **WinGet** tool supports the following commands.
72+
The current version of the **WinGet** tool supports the following commands.
7373

7474
| Command | Description |
7575
|---------|-------------|
7676
| [install](install.md) | Installs the specified application. |
7777
| [show](show.md) | Displays details for the specified application. |
78-
| [source](source.md) | Adds, removes, and updates the Windows Package Manager repositories accessed by **WinGet**. |
78+
| [source](source.md) | Adds, edits, removes, and updates the Windows Package Manager repositories accessed by **WinGet**. |
7979
| [search](search.md) | Searches for an application. |
8080
| [list](list.md) | Display installed packages. |
8181
| [upgrade](upgrade.md) | Upgrades the given specified application. |
@@ -123,6 +123,7 @@ The **WinGet** tool supports the following options.
123123
* MSIX
124124
* BURN
125125
* PORTABLE
126+
* FONT
126127

127128
## Scripting WinGet
128129

hub/package-manager/winget/list.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
title: list Command
33
description: Displays the list of listed apps and if an update is available.
4-
ms.date: 07/15/2025
4+
ms.date: 03/24/2026
55
ms.topic: overview
66
---
77

@@ -60,6 +60,7 @@ The options allow you to customize the list experience to meet your needs.
6060
| **--upgrade-available** | Lists only packages which have an upgrade available. |
6161
| **-u, --unknown, --include-unknown** | Lists packages even if their current version cannot be determined. |
6262
| **--pinned, --include-pinned** | Lists packages even if they have a pin that prevents upgrades by WinGet. |
63+
| **--details** | Displays detailed, `show`-like output for each matched package instead of a table view. |
6364
| **-?, --help** | Get additional help on this command. |
6465
| **--wait** | Prompts the user to press any key before exiting. |
6566
| **--logs,--open-logs** | Open the default logs location. |

hub/package-manager/winget/mcp-server.md

Lines changed: 94 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
title: Using Windows Package Manager with Model Context Protocol (MCP) Server
33
description: The Windows Package Manager includes a Model Context Protocol (MCP) server that enables AI agents and tools to discover and install packages through a standardized interface, enhancing the authoring experience in supported editors like VS Code.
4-
ms.date: 10/30/2025
4+
ms.date: 03/24/2026
55
ms.topic: overview
66
---
77

@@ -129,14 +129,102 @@ To start using the Windows Package Manager (WinGet) MCP Server in Visual Studio
129129
1. Verify that the WinGet MCP server tools are available, with a checkmark next to the entry.
130130
1. Begin asking questions or requesting assistance with package management tasks. The AI agent automatically uses the WinGet MCP tools when appropriate to provide accurate, context-aware help.
131131

132+
## Use WinGet MCP with GitHub Copilot CLI
133+
134+
[GitHub Copilot CLI](https://docs.github.com/copilot/concepts/agents/about-copilot-cli) brings AI-powered assistance directly to your terminal. After registering the WinGet MCP server with Copilot CLI, you can search for and install packages using natural language prompts — without leaving the command line.
135+
136+
### Prerequisites
137+
138+
- [GitHub Copilot CLI installed](https://docs.github.com/copilot/how-tos/set-up/install-copilot-cli) and authenticated
139+
- The WinGet MCP server executable path (see [Find the WinGet MCP server executable path](#find-the-winget-mcp-server-executable-path))
140+
141+
### Add the WinGet MCP server to Copilot CLI
142+
143+
#### Option 1: Use the interactive `/mcp add` command (recommended)
144+
145+
1. Start Copilot CLI in your terminal:
146+
147+
```powershell
148+
copilot
149+
```
150+
151+
1. At the prompt, enter the `/mcp add` slash command:
152+
153+
```
154+
/mcp add
155+
```
156+
157+
1. Fill in the MCP server details in the interactive form. Use **Tab** to move between fields:
158+
159+
| Field | Value |
160+
|---|---|
161+
| Name | `winget-mcp` |
162+
| Type | `stdio` |
163+
| Command | Full path to `WindowsPackageManagerMCPServer.exe` |
164+
165+
1. Press **Ctrl+S** to save. Copilot CLI writes the configuration to `~/.copilot/mcp-config.json`.
166+
167+
#### Option 2: Edit `mcp-config.json` directly
168+
169+
Open (or create) `~/.copilot/mcp-config.json` and add the following entry, replacing `<username>` with your Windows username:
170+
171+
```json
172+
{
173+
"mcpServers": {
174+
"winget-mcp": {
175+
"type": "stdio",
176+
"command": "C:\\Users\\<username>\\AppData\\Local\\Microsoft\\WindowsApps\\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\\WindowsPackageManagerMCPServer.exe",
177+
"args": [],
178+
"tools": ["*"]
179+
}
180+
}
181+
}
182+
```
183+
184+
> [!NOTE]
185+
> If `mcp-config.json` already exists and contains other servers, add the `winget-mcp` entry inside the existing `mcpServers` object rather than replacing the file.
186+
187+
### Verify the server is registered
188+
189+
After adding the server, confirm it is loaded:
190+
191+
1. Start or restart Copilot CLI:
192+
193+
```powershell
194+
copilot
195+
```
196+
197+
1. At the prompt, enter:
198+
199+
```
200+
/mcp
201+
```
202+
203+
The output lists all configured MCP servers. Verify that **winget-mcp** appears and shows a connected status.
204+
205+
### Use WinGet MCP in Copilot CLI prompts
206+
207+
Once the server is registered, Copilot CLI automatically calls WinGet MCP tools when your prompt involves package management. After each search or install request, Copilot asks for your approval before running any command. For example prompts and prompting tips, see [Example prompts for WinGet MCP](#example-prompts-for-winget-mcp).
208+
132209
## Example prompts for WinGet MCP
133210

134-
Example prompts that work well with WinGet MCP integration:
211+
The following prompts work well with both GitHub Copilot (VS Code) and GitHub Copilot CLI when the WinGet MCP server is configured:
212+
213+
| Goal | Example prompt |
214+
|---|---|
215+
| Search for a package | `"Search WinGet for a PDF reader"` |
216+
| Install by name | `"Install the latest version of Git"` |
217+
| Install a specific version | `"Install Node.js 20 LTS from WinGet"` |
218+
| Find packages for a task | `"What WinGet packages are available for container development?"` |
219+
| Find packages for Python development | `"What packages are available for Python development?"` |
220+
| Install a common tool | `"Help me install Visual Studio Code"` |
221+
| Find platform-specific packages | `"Find packages for Docker on Windows"` |
222+
223+
### Tips for effective prompting
224+
225+
To help Copilot reliably invoke the WinGet MCP tools, use language that clearly indicates a package management intent. If Copilot does not use the WinGet MCP tools automatically, add explicit keywords such as **"using WinGet"**, **"from WinGet"**, or **"search WinGet"** to your prompt.
135226

136-
- "What packages are available for Python development?"
137-
- "Help me install Visual Studio Code"
138-
- "Find packages for Docker on Windows"
139-
- "Install the latest version of Git"
227+
When using VS Code, also verify that Agent Mode is still enabled and that **winget-mcp** is checked in the tools panel. When using Copilot CLI, use `/mcp` to confirm the server is connected.
140228

141229
## Available WinGet MCP commands
142230

hub/package-manager/winget/settings.md

Lines changed: 87 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
title: settings command
33
description: Provides customizations for the Windows Package Manager.
4-
ms.date: 07/08/2025
4+
ms.date: 03/24/2026
55
ms.topic: article
66
---
77

@@ -73,7 +73,7 @@ We have also defined a schema for the settings file. This allows you to use TAB
7373

7474
## Updating settings
7575

76-
The following settings are available for the 1.11 release of the Windows Package Manager.
76+
The following settings are available for the 1.28 release of the Windows Package Manager.
7777

7878
### source settings
7979

@@ -119,7 +119,7 @@ Color of the progress bar that WinGet displays when not specified by arguments.
119119

120120
Replaces some known folder paths with their respective environment variables.
121121

122-
#### enableSizels
122+
#### enableSixels
123123

124124
Enables output of sixel images in certain contexts.
125125

@@ -144,6 +144,39 @@ The following logging levels are available. Defaults to `info` if the value is n
144144
- error
145145
- critical
146146

147+
#### channels
148+
149+
The `channels` setting restricts logging output to specific log channels. Special values `default` (the default set of channels) and `all` (all channels) are also accepted. Invalid values are ignored.
150+
151+
```json
152+
"logging": {
153+
"channels": ["default"]
154+
}
155+
```
156+
157+
#### file
158+
159+
The `file` settings control automatic cleanup of log files in the default log directory. Cleanup runs at the start of each WinGet process and applies only to the default log location.
160+
161+
| Setting | Description | Default |
162+
|---------|-------------|---------|
163+
| `ageLimitInDays` | Maximum age in days of files in the log directory; older files are deleted. Set to `0` to disable. | 7 |
164+
| `totalSizeLimitInMB` | Maximum total size in megabytes of all files in the log directory; the oldest files are deleted first. Set to `0` to disable. | 128 |
165+
| `countLimit` | Maximum number of files in the log directory; the oldest files are deleted first. Set to `0` to disable. | 0 (disabled) |
166+
| `individualSizeLimitInMB` | Maximum size in megabytes of a single log file. If a file would exceed this limit, logs wrap. Set to `0` to disable. | 16 |
167+
168+
```json
169+
"logging": {
170+
"level": "verbose",
171+
"file": {
172+
"ageLimitInDays": 7,
173+
"totalSizeLimitInMB": 128,
174+
"countLimit": 0,
175+
"individualSizeLimitInMB": 16
176+
}
177+
}
178+
```
179+
147180
### preferences and requirements settings
148181

149182
Some of the settings are duplicated under `preferences` and `requirements`.
@@ -336,3 +369,54 @@ The `Interactivity` setting controls whether interactive prompts are shown by th
336369
### Enabling experimental features
337370

338371
To discover which experimental features are available, go to [https://aka.ms/winget-settings](https://aka.ms/winget-settings) where you can see the experimental features available to you.
372+
373+
The `experimentalFeatures` settings involve the configuration of these "experimental" features. Individual features can be enabled under this node:
374+
375+
```json
376+
"experimentalFeatures": {
377+
"directMSI": true,
378+
"resume": true
379+
}
380+
```
381+
382+
#### directMSI
383+
384+
This feature enables the Windows Package Manager to directly install MSI packages with the MSI APIs rather than through msiexec. Note that when silent installation is used this is already in effect, as MSI packages that require elevation will fail in that scenario without it.
385+
386+
```json
387+
"experimentalFeatures": {
388+
"directMSI": true
389+
}
390+
```
391+
392+
#### resume
393+
394+
This feature enables support for some commands to resume after a reboot.
395+
396+
```json
397+
"experimentalFeatures": {
398+
"resume": true
399+
}
400+
```
401+
402+
#### fonts
403+
404+
This feature enables support for fonts via `winget settings`. The `winget font list` command will list installed font families and the number of installed font faces.
405+
406+
```json
407+
"experimentalFeatures": {
408+
"fonts": true
409+
}
410+
```
411+
412+
#### sourcePriority
413+
414+
This feature enables sources to have a priority value assigned. Sources with a higher priority will appear earlier in search results and will be selected for installing new packages when multiple sources have a matching package.
415+
416+
Note that search result ordering is dependent on several factors, and source priority is the lowest field currently (match quality and field are more important).
417+
418+
```json
419+
"experimentalFeatures": {
420+
"sourcePriority": true
421+
}
422+
```

0 commit comments

Comments
 (0)