WinGet

Developer Tools

The Windows Package Manager command-line tool.

Latest v1.29.280 · by MicrosoftWebsitemicrosoft/winget-cli

Release activity

Release activity — 10 releases across 10 days since Apr 16, 2026. Each cell is one day; darker means more releases that day. Nothing is recorded before Apr 16, 2026. Older weeks are hidden at this screen width.
MayJunJulAug
SundayNo releases on Apr 19, 2026No releases on Apr 26, 2026No releases on May 3, 2026No releases on May 10, 2026No releases on May 17, 2026No releases on May 24, 2026No releases on May 31, 2026No releases on Jun 7, 2026No releases on Jun 14, 2026No releases on Jun 21, 2026No releases on Jun 28, 2026No releases on Jul 5, 2026No releases on Jul 12, 2026No releases on Jul 19, 2026No releases on Jul 26, 2026No releases on Aug 2, 2026
MondayNo releases on Apr 20, 2026No releases on Apr 27, 2026No releases on May 4, 2026No releases on May 11, 2026No releases on May 18, 2026No releases on May 25, 2026No releases on Jun 1, 2026No releases on Jun 8, 2026No releases on Jun 15, 2026No releases on Jun 22, 2026No releases on Jun 29, 2026No releases on Jul 6, 2026No releases on Jul 13, 2026No releases on Jul 20, 2026No releases on Jul 27, 2026No releases on Aug 3, 2026
TuesdayNo releases on Apr 21, 2026No releases on Apr 28, 2026No releases on May 5, 2026No releases on May 12, 2026No releases on May 19, 2026No releases on May 26, 2026No releases on Jun 2, 2026No releases on Jun 9, 2026No releases on Jun 16, 2026No releases on Jun 23, 2026No releases on Jun 30, 2026No releases on Jul 7, 2026No releases on Jul 14, 2026No releases on Jul 21, 2026No releases on Jul 28, 2026No releases on Aug 4, 2026
WednesdayNo releases on Apr 22, 2026No releases on Apr 29, 2026No releases on May 6, 2026No releases on May 13, 2026No releases on May 20, 2026No releases on May 27, 2026No releases on Jun 3, 2026No releases on Jun 10, 2026No releases on Jun 17, 20261 release on Jun 24, 2026No releases on Jul 1, 2026No releases on Jul 8, 2026No releases on Jul 15, 20261 release on Jul 22, 20261 release on Jul 29, 2026No releases on Aug 5, 2026
ThursdayNo releases on Apr 23, 2026No releases on Apr 30, 20261 release on May 7, 2026No releases on May 14, 2026No releases on May 21, 2026No releases on May 28, 2026No releases on Jun 4, 2026No releases on Jun 11, 2026No releases on Jun 18, 2026No releases on Jun 25, 2026No releases on Jul 2, 2026No releases on Jul 9, 2026No releases on Jul 16, 2026No releases on Jul 23, 2026No releases on Jul 30, 20261 release on Aug 6, 2026
FridayNo releases on Apr 24, 20261 release on May 1, 2026No releases on May 8, 2026No releases on May 15, 2026No releases on May 22, 20261 release on May 29, 20261 release on Jun 5, 2026No releases on Jun 12, 2026No releases on Jun 19, 2026No releases on Jun 26, 2026No releases on Jul 3, 2026No releases on Jul 10, 20261 release on Jul 17, 2026No releases on Jul 24, 2026No releases on Jul 31, 2026No releases on Aug 7, 2026
SaturdayNo releases on Apr 25, 2026No releases on May 2, 2026No releases on May 9, 2026No releases on May 16, 2026No releases on May 23, 2026No releases on May 30, 2026No releases on Jun 6, 2026No releases on Jun 13, 2026No releases on Jun 20, 2026No releases on Jun 27, 2026No releases on Jul 4, 2026No releases on Jul 11, 2026No releases on Jul 18, 2026No releases on Jul 25, 2026No releases on Aug 1, 2026

10 releases since Apr 16, 2026

Changelog

v1.30.90-previewPre-release

Windows Package Manager 1.30.90-preview

Changed 2
  • Updated NUnit to v4
  • Block admin uninstall of user package
Fixed 2
  • Fixed a crash (0x8000ffff) when using --disable-interactivity with the Resume experimental feature enabled during install operations
  • Bubble up child process errors in IndexCreationTool

This is a preview build of WinGet for those interested in trying out upcoming features and fixes. While it has had some use and should be free of major issues, it may have bugs or usability problems. If you find any, please help us out by filing an issue.

New in v1.30

Nothing yet.

Bug Fixes
  • Updated NUnit to v4
  • Fixed a crash (0x8000ffff) when using --disable-interactivity with the Resume experimental feature enabled during install operations.
What's Changed

Full Changelog: https://github.com/microsoft/winget-cli/compare/v1.30.80-preview...v1.30.90-preview

View originalPermalink
How v1.30.90-preview went
v1.30.80-previewPre-release

Windows Package Manager 1.30.80-preview

Added 1
  • Optional telemetry event for Microsoft Store catalog installs (msstore source)
Changed 2
  • Updated NUnit to v4
  • Bump js-yaml from 4.1.1 to 4.3.0 in /tools/WinGetLogViewer
Fixed 1
  • Fixed a crash (0x8000ffff) when using --disable-interactivity with the Resume experimental feature enabled during install operations

This is a preview build of WinGet for those interested in trying out upcoming features and fixes. While it has had some use and should be free of major issues, it may have bugs or usability problems. If you find any, please help us out by filing an issue.

New in v1.30

Nothing yet.

Bug Fixes
  • Updated NUnit to v4
  • Fixed a crash (0x8000ffff) when using --disable-interactivity with the Resume experimental feature enabled during install operations.
What's Changed
New Contributors

Full Changelog: https://github.com/microsoft/winget-cli/compare/v1.30.50-preview...v1.30.80-preview

View originalPermalink
How v1.30.80-preview went
v1.30.70-previewPre-release

Windows Package Manager 1.30.70-preview

Fixed 4
  • Fixed a crash (0x8000ffff) when using --disable-interactivity with the Resume experimental feature enabled during install operations
  • Fixed configuration elevation validation for standard flow
  • Fixed punctuation in error messages
  • Fixed cpprest checked iterator build error

This is a preview build of WinGet for those interested in trying out upcoming features and fixes. While it has had some use and should be free of major issues, it may have bugs or usability problems. If you find any, please help us out by filing an issue.

New in v1.30

Nothing yet.

Bug Fixes
  • Fixed a crash (0x8000ffff) when using --disable-interactivity with the Resume experimental feature enabled during install operations.
What's Changed
New Contributors

Full Changelog: https://github.com/microsoft/winget-cli/compare/v1.29.240...v1.30.70-preview

View originalPermalink
How v1.30.70-preview went
v1.30.50-previewPre-release

Windows Package Manager 1.30.50-preview

Fixed 4
  • Fixed a crash (0x8000ffff) when using --disable-interactivity with the Resume experimental feature enabled during install operations
  • Fixed configuration elevation validation for standard flow
  • Fixed punctuation in error messages
  • Fixed cpprest checked iterator build error

This is a preview build of WinGet for those interested in trying out upcoming features and fixes. While it has had some use and should be free of major issues, it may have bugs or usability problems. If you find any, please help us out by filing an issue.

New in v1.30

Nothing yet.

Bug Fixes
  • Fixed a crash (0x8000ffff) when using --disable-interactivity with the Resume experimental feature enabled during install operations.
What's Changed
New Contributors

Full Changelog: https://github.com/microsoft/winget-cli/compare/v1.29.240...v1.30.50-preview

View originalPermalink
How v1.30.50-preview went
v1.29.280

Windows Package Manager 1.29.280

Added 7
  • Source Priority feature allows assigning numerical priority to sources, affecting result ordering and disambiguation in package selection
  • Preserve installer arguments across export and import, capturing --override and --custom arguments in export files and reapplying them during import
  • --no-progress flag disables all progress reporting and is universally available on all commands
  • MCP upgrade support with upgradeable parameter in find-winget-packages and upgradeOnly parameter in install-winget-package
  • Authenticated GitHub API requests in PowerShell module using GH_TOKEN or GITHUB_TOKEN environment variables
  • User setting logging.fileNameStrategy for controlling installer log file naming strategies: manifest, timestamp, guid, or shortguid
  • Sortable winget list output via --sort field flag with --ascending/--descending direction and persistent output.sortOrder setting
Changed 2
  • Installer type selection now follows default priority order of MSIX, MSI/Wix/Burn, Nullsoft/Inno/EXE, and Portable instead of manifest order
  • REST result match criteria now correctly set to prevent results from being sorted to the top automatically
Fixed 2
  • winget list no longer truncates output when stdout is redirected to a file or variable and computes column widths from full result set
  • Spinner and progress bar output are suppressed when no console is attached, keeping redirected output clean

This is the latest of Windows Package Manager v1.29. If you find any bugs or problems, please help us out by filing an issue.

New in v1.29

New Feature: Source Priority

[!NOTE] Experimental under sourcePriority; defaulted to disabled.

With this feature, one can assign a numerical priority to sources when added or later through the source edit command. Sources with higher priority are sorted first in the list of sources, which results in them getting put first in the results if other things are equal.

[!TIP] Search result ordering in winget is currently based on these values in this order:

  1. Match quality (how well a valid field matches the search request)
  2. Match field (which field was matched against the search request)
  3. Source order (was always relevant, but with priority you can more easily affect this)

Beyond the ability to slightly affect the result ordering, commands that primarily target available packages (largely install) will now prefer to use a single result from a source with higher priority rather than prompting for disambiguation from the user. Said another way, if multiple sources return results but only one of those sources has the highest priority value (and it returned only one result) then that package will be used rather than giving a "multiple packages were found" error. This has been applied to both winget CLI and PowerShell module commands.

REST result match criteria update

Along with the source priority change, the results from REST sources (like msstore) now attempt to correctly set the match criteria that factor into the result ordering. This will prevent them from being sorted to the top automatically.

Minor Features
Preserve installer arguments across export and import

winget export now captures the --override and --custom arguments that were used when a package was originally installed and saves them into the export file. When subsequently running winget import, those values are automatically re-applied during installation — --override replaces all installer arguments and --custom appends extra switches — so packages can be reinstalled with the same customizations without any manual intervention. Both fields are optional and independent of each other; packages without stored installer arguments are unaffected.

--no-progress flag

Added a new --no-progress command-line flag that disables all progress reporting (progress bars and spinners). This flag is universally available on all commands and takes precedence over the visual.progressBar setting. Useful for automation scenarios or when running WinGet in environments where progress output is undesirable.

MCP upgrade support

The WinGet MCP server's existing tools have been extended with new parameters to support upgrade scenarios:

  • find-winget-packages now accepts an upgradeable parameter (default: false). When set to true, it lists only installed packages that have available upgrades — equivalent to winget upgrade. The query parameter becomes optional in this mode, allowing it to filter results or be omitted to list all upgradeable packages. AI agents can use this to answer requests like "What apps can I update with WinGet?"
  • install-winget-package now accepts an upgradeOnly parameter (default: false). When set to true, it only upgrades an already-installed package and returns a clear error if the package is not installed (pointing to install-winget-package without upgradeOnly instead). AI agents can use this to answer requests like "Update WinGetCreate" or, in combination with find-winget-packages with upgradeable=true, "Update all my apps."
Authenticated GitHub API requests in PowerShell module

The PowerShell module now automatically uses GH_TOKEN or GITHUB_TOKEN environment variables to authenticate GitHub API requests. This significantly increases the GitHub API rate limit, preventing failures in CI/CD pipelines. Use -Verbose to see which token is being used.

Default priority of installer types

Installer type selection no longer depends on the order defined on the manifest. Instead, preference is given in this order:

  • MSIX
  • MSI / Wix / Burn
  • Nullsoft / Inno / EXE
  • Portable

When a user configures installer type requirements or preferences, the order in which they are listed is now respected during installer selection.

Improved list output when redirected
  • winget list (and similar table commands) no longer truncates output when stdout is redirected to a file or variable — column widths are now computed from the full result set.
  • Spinner and progress bar output are suppressed when no console is attached, keeping redirected output clean.
Log file naming strategy

Added a user setting (logging.fileNameStrategy) for controlling the default naming strategy for installer log files. Supported values are manifest (default), timestamp, guid, and shortguid. Only applies to logs generated by installers if the installer itself supports the logging switch / parameter.

SettingDescription
manifestUses the name of the manifest and a timestamp. Has the same behavior as WinGet 1.28
timestampThe log name is just a timestamp
guidThe log name is a GUID
shortguidThe log name is the first 8 characters of a GUID
Sortable list output

winget list now supports sorting results via --sort <field> (repeatable for multi-field sorting), --ascending/--descending direction flags, and a persistent output.sortOrder setting. Available sort fields: name, id, version, source, available, relevance. By default, results are sorted alphabetically by name when no query is present; use --sort relevance to preserve the previous source-determined ordering.

Bug Fixes
  • winget export now works when the destination path is a hidden file
  • Fixed the useLatest property in the DSC v3 Microsoft.WinGet/Package resource schema to emit a boolean default (false) instead of the incorrect string "false".
  • SignFile in WinGetSourceCreator now supports an optional RFC 3161 timestamp server via the new TimestampServer property on the Signature model. When set, signtool.exe is called with /tr <url> /td sha256, embedding a countersignature timestamp so that signed packages remain valid after the signing certificate expires.
  • File and directory paths passed to signtool.exe and makeappx.exe are now quoted, fixing failures when paths contain spaces.
  • DSC export now correctly exports WinGet Admin Settings
  • winget validate now performs case-insensitive comparison for file extensions where applicable
  • winget source reset now properly resets default sources instead of removing them
  • DSC v3 Microsoft.WinGet/Package resource now honors the installMode property to use silent or interactive installer switches as specified
  • Fixed a crash (0x8000ffff) when using --disable-interactivity with the Resume experimental feature enabled during install operations.
What's Changed

Full Changelog: https://github.com/microsoft/winget-cli/compare/v1.29.250...v1.29.280

View originalPermalink
How v1.29.280 went
v1.29.250Pre-release

Windows Package Manager 1.29.250

Added 9
  • Added source priority feature to assign numerical priority to sources, affecting search result ordering and package selection preference
  • Added --no-progress flag to disable all progress reporting across all commands
  • Added preservation of installer arguments (--override and --custom) across winget export and import operations
  • Added upgradeable parameter to MCP find-winget-packages tool to list only installed packages with available upgrades
  • Added upgradeOnly parameter to MCP install-winget-package tool to upgrade only already-installed packages
  • Added support for GH_TOKEN and GITHUB_TOKEN environment variables in PowerShell module for authenticated GitHub API requests
Changed 4
  • Changed REST source results to correctly set match criteria to prevent automatic sorting to the top of results
  • Changed installer type selection to prioritize MSIX, then MSI/Wix/Burn, then Nullsoft/Inno/EXE, then Portable regardless of manifest order
  • Changed winget list output to no longer truncate columns when stdout is redirected to a file or variable
  • Changed spinner and progress bar output to be suppressed when no console is attached for cleaner redirected output

This is a release candidate of Windows Package Manager v1.29. If you find any bugs or problems, please help us out by filing an issue.

New in v1.29

New Feature: Source Priority

[!NOTE] Experimental under sourcePriority; defaulted to disabled.

With this feature, one can assign a numerical priority to sources when added or later through the source edit command. Sources with higher priority are sorted first in the list of sources, which results in them getting put first in the results if other things are equal.

[!TIP] Search result ordering in winget is currently based on these values in this order:

  1. Match quality (how well a valid field matches the search request)
  2. Match field (which field was matched against the search request)
  3. Source order (was always relevant, but with priority you can more easily affect this)

Beyond the ability to slightly affect the result ordering, commands that primarily target available packages (largely install) will now prefer to use a single result from a source with higher priority rather than prompting for disambiguation from the user. Said another way, if multiple sources return results but only one of those sources has the highest priority value (and it returned only one result) then that package will be used rather than giving a "multiple packages were found" error. This has been applied to both winget CLI and PowerShell module commands.

REST result match criteria update

Along with the source priority change, the results from REST sources (like msstore) now attempt to correctly set the match criteria that factor into the result ordering. This will prevent them from being sorted to the top automatically.

Minor Features
Preserve installer arguments across export and import

winget export now captures the --override and --custom arguments that were used when a package was originally installed and saves them into the export file. When subsequently running winget import, those values are automatically re-applied during installation — --override replaces all installer arguments and --custom appends extra switches — so packages can be reinstalled with the same customizations without any manual intervention. Both fields are optional and independent of each other; packages without stored installer arguments are unaffected.

--no-progress flag

Added a new --no-progress command-line flag that disables all progress reporting (progress bars and spinners). This flag is universally available on all commands and takes precedence over the visual.progressBar setting. Useful for automation scenarios or when running WinGet in environments where progress output is undesirable.

MCP upgrade support

The WinGet MCP server's existing tools have been extended with new parameters to support upgrade scenarios:

  • find-winget-packages now accepts an upgradeable parameter (default: false). When set to true, it lists only installed packages that have available upgrades — equivalent to winget upgrade. The query parameter becomes optional in this mode, allowing it to filter results or be omitted to list all upgradeable packages. AI agents can use this to answer requests like "What apps can I update with WinGet?"
  • install-winget-package now accepts an upgradeOnly parameter (default: false). When set to true, it only upgrades an already-installed package and returns a clear error if the package is not installed (pointing to install-winget-package without upgradeOnly instead). AI agents can use this to answer requests like "Update WinGetCreate" or, in combination with find-winget-packages with upgradeable=true, "Update all my apps."
Authenticated GitHub API requests in PowerShell module

The PowerShell module now automatically uses GH_TOKEN or GITHUB_TOKEN environment variables to authenticate GitHub API requests. This significantly increases the GitHub API rate limit, preventing failures in CI/CD pipelines. Use -Verbose to see which token is being used.

Default priority of installer types

Installer type selection no longer depends on the order defined on the manifest. Instead, preference is given in this order:

  • MSIX
  • MSI / Wix / Burn
  • Nullsoft / Inno / EXE
  • Portable

When a user configures installer type requirements or preferences, the order in which they are listed is now respected during installer selection.

Improved list output when redirected
  • winget list (and similar table commands) no longer truncates output when stdout is redirected to a file or variable — column widths are now computed from the full result set.
  • Spinner and progress bar output are suppressed when no console is attached, keeping redirected output clean.
Log file naming strategy

Added a user setting (logging.fileNameStrategy) for controlling the default naming strategy for installer log files. Supported values are manifest (default), timestamp, guid, and shortguid. Only applies to logs generated by installers if the installer itself supports the logging switch / parameter.

SettingDescription
manifestUses the name of the manifest and a timestamp. Has the same behavior as WinGet 1.28
timestampThe log name is just a timestamp
guidThe log name is a GUID
shortguidThe log name is the first 8 characters of a GUID
Sortable list output

winget list now supports sorting results via --sort <field> (repeatable for multi-field sorting), --ascending/--descending direction flags, and a persistent output.sortOrder setting. Available sort fields: name, id, version, source, available, relevance. By default, results are sorted alphabetically by name when no query is present; use --sort relevance to preserve the previous source-determined ordering.

Bug Fixes
  • winget export now works when the destination path is a hidden file
  • Fixed the useLatest property in the DSC v3 Microsoft.WinGet/Package resource schema to emit a boolean default (false) instead of the incorrect string "false".
  • SignFile in WinGetSourceCreator now supports an optional RFC 3161 timestamp server via the new TimestampServer property on the Signature model. When set, signtool.exe is called with /tr <url> /td sha256, embedding a countersignature timestamp so that signed packages remain valid after the signing certificate expires.
  • File and directory paths passed to signtool.exe and makeappx.exe are now quoted, fixing failures when paths contain spaces.
  • DSC export now correctly exports WinGet Admin Settings
  • winget validate now performs case-insensitive comparison for file extensions where applicable
  • winget source reset now properly resets default sources instead of removing them
  • DSC v3 Microsoft.WinGet/Package resource now honors the installMode property to use silent or interactive installer switches as specified
What's Changed
New Contributors

Full Changelog: https://github.com/microsoft/winget-cli/compare/v1.28.240...v1.29.250

View originalPermalink
How v1.29.250 went
v1.29.240Pre-release

Windows Package Manager 1.29.240

Added 7
  • Source Priority feature (experimental) allows assigning numerical priority to sources, affecting search result ordering and package selection
  • winget export now captures --override and --custom installer arguments and winget import automatically re-applies them during reinstallation
  • --no-progress command-line flag disables all progress reporting and takes precedence over the visual.progressBar setting
  • MCP find-winget-packages tool now accepts upgradeable parameter to list only installed packages with available upgrades
  • MCP install-winget-package tool now accepts upgradeOnly parameter to upgrade only already-installed packages
  • PowerShell module now automatically uses GH_TOKEN or GITHUB_TOKEN environment variables to authenticate GitHub API requests
  • logging.fileNameStrategy user setting controls default naming strategy for installer log files with options manifest, timestamp, guid, or shortguid
Changed 3
  • Installer type selection now prefers MSIX, then MSI/Wix/Burn, then Nullsoft/Inno/EXE, then Portable, regardless of manifest order
  • winget list no longer truncates output when stdout is redirected to a file or variable
  • REST source results now correctly set match criteria to prevent automatic sorting to the top

This is a release candidate of Windows Package Manager v1.29. If you find any bugs or problems, please help us out by filing an issue.

Note: This version is not fully localized yet. Localized strings will be included in a future build before stable release.

New in v1.29

New Feature: Source Priority

[!NOTE] Experimental under sourcePriority; defaulted to disabled.

With this feature, one can assign a numerical priority to sources when added or later through the source edit command. Sources with higher priority are sorted first in the list of sources, which results in them getting put first in the results if other things are equal.

[!TIP] Search result ordering in winget is currently based on these values in this order:

  1. Match quality (how well a valid field matches the search request)
  2. Match field (which field was matched against the search request)
  3. Source order (was always relevant, but with priority you can more easily affect this)

Beyond the ability to slightly affect the result ordering, commands that primarily target available packages (largely install) will now prefer to use a single result from a source with higher priority rather than prompting for disambiguation from the user. Said another way, if multiple sources return results but only one of those sources has the highest priority value (and it returned only one result) then that package will be used rather than giving a "multiple packages were found" error. This has been applied to both winget CLI and PowerShell module commands.

REST result match criteria update

Along with the source priority change, the results from REST sources (like msstore) now attempt to correctly set the match criteria that factor into the result ordering. This will prevent them from being sorted to the top automatically.

Minor Features
Preserve installer arguments across export and import

winget export now captures the --override and --custom arguments that were used when a package was originally installed and saves them into the export file. When subsequently running winget import, those values are automatically re-applied during installation — --override replaces all installer arguments and --custom appends extra switches — so packages can be reinstalled with the same customizations without any manual intervention. Both fields are optional and independent of each other; packages without stored installer arguments are unaffected.

--no-progress flag

Added a new --no-progress command-line flag that disables all progress reporting (progress bars and spinners). This flag is universally available on all commands and takes precedence over the visual.progressBar setting. Useful for automation scenarios or when running WinGet in environments where progress output is undesirable.

MCP upgrade support

The WinGet MCP server's existing tools have been extended with new parameters to support upgrade scenarios:

  • find-winget-packages now accepts an upgradeable parameter (default: false). When set to true, it lists only installed packages that have available upgrades — equivalent to winget upgrade. The query parameter becomes optional in this mode, allowing it to filter results or be omitted to list all upgradeable packages. AI agents can use this to answer requests like "What apps can I update with WinGet?"
  • install-winget-package now accepts an upgradeOnly parameter (default: false). When set to true, it only upgrades an already-installed package and returns a clear error if the package is not installed (pointing to install-winget-package without upgradeOnly instead). AI agents can use this to answer requests like "Update WinGetCreate" or, in combination with find-winget-packages with upgradeable=true, "Update all my apps."
Authenticated GitHub API requests in PowerShell module

The PowerShell module now automatically uses GH_TOKEN or GITHUB_TOKEN environment variables to authenticate GitHub API requests. This significantly increases the GitHub API rate limit, preventing failures in CI/CD pipelines. Use -Verbose to see which token is being used.

Default priority of installer types

Installer type selection no longer depends on the order defined on the manifest. Instead, preference is given in this order:

  • MSIX
  • MSI / Wix / Burn
  • Nullsoft / Inno / EXE
  • Portable

When a user configures installer type requirements or preferences, the order in which they are listed is now respected during installer selection.

Improved list output when redirected
  • winget list (and similar table commands) no longer truncates output when stdout is redirected to a file or variable — column widths are now computed from the full result set.
  • Spinner and progress bar output are suppressed when no console is attached, keeping redirected output clean.
Log file naming strategy

Added a user setting (logging.fileNameStrategy) for controlling the default naming strategy for installer log files. Supported values are manifest (default), timestamp, guid, and shortguid. Only applies to logs generated by installers if the installer itself supports the logging switch / parameter.

SettingDescription
manifestUses the name of the manifest and a timestamp. Has the same behavior as WinGet 1.28
timestampThe log name is just a timestamp
guidThe log name is a GUID
shortguidThe log name is the first 8 characters of a GUID
Sortable list output

winget list now supports sorting results via --sort <field> (repeatable for multi-field sorting), --ascending/--descending direction flags, and a persistent output.sortOrder setting. Available sort fields: name, id, version, source, available, relevance. By default, results are sorted alphabetically by name when no query is present; use --sort relevance to preserve the previous source-determined ordering.

Bug Fixes
  • winget export now works when the destination path is a hidden file
  • Fixed the useLatest property in the DSC v3 Microsoft.WinGet/Package resource schema to emit a boolean default (false) instead of the incorrect string "false".
  • SignFile in WinGetSourceCreator now supports an optional RFC 3161 timestamp server via the new TimestampServer property on the Signature model. When set, signtool.exe is called with /tr <url> /td sha256, embedding a countersignature timestamp so that signed packages remain valid after the signing certificate expires.
  • File and directory paths passed to signtool.exe and makeappx.exe are now quoted, fixing failures when paths contain spaces.
  • DSC export now correctly exports WinGet Admin Settings
  • winget validate now performs case-insensitive comparison for file extensions where applicable
  • winget source reset now properly resets default sources instead of removing them
  • DSC v3 Microsoft.WinGet/Package resource now honors the installMode property to use silent or interactive installer switches as specified
What's Changed
New Contributors

Full Changelog: https://github.com/microsoft/winget-cli/compare/v1.28.240...v1.29.240

View originalPermalink
How v1.29.240 went
v1.29.170-previewPre-release

Windows Package Manager 1.29.170-preview

Added 6
  • Source Priority feature (experimental) to assign numerical priority to sources, affecting search result ordering and package selection preference
  • Preserve installer arguments across export and import using --override and --custom flags
  • --no-progress flag to disable all progress reporting universally across commands
  • MCP find-winget-packages tool now accepts upgradeable parameter to list only installed packages with available upgrades
  • MCP install-winget-package tool now accepts upgradeOnly parameter to upgrade only already-installed packages
  • PowerShell module now automatically uses GH_TOKEN or GITHUB_TOKEN environment variables to authenticate GitHub API requests
Changed 3
  • REST source results now correctly set match criteria to prevent automatic sorting to top of results
  • winget list and similar table commands no longer truncate output when stdout is redirected to file or variable
  • Spinner and progress bar output are suppressed when no console is attached
Fixed 5
  • winget export now works when the destination path is a hidden file
  • Fixed useLatest property in DSC v3 Microsoft.WinGet/Package resource schema to emit boolean false instead of string
  • SignFile in WinGetSourceCreator now supports optional RFC 3161 timestamp server via TimestampServer property
  • File and directory paths passed to signtool.exe and makeappx.exe are now quoted to fix failures with spaces in paths
  • DSC export now correctly exports WinGet Admin Settings

This is a preview build of WinGet for those interested in trying out upcoming features and fixes. While it has had some use and should be free of major issues, it may have bugs or usability problems. If you find any, please help us out by filing an issue.

New in v1.29

New Feature: Source Priority

[!NOTE] Experimental under sourcePriority; defaulted to disabled.

With this feature, one can assign a numerical priority to sources when added or later through the source edit command. Sources with higher priority are sorted first in the list of sources, which results in them getting put first in the results if other things are equal.

[!TIP] Search result ordering in winget is currently based on these values in this order:

  1. Match quality (how well a valid field matches the search request)
  2. Match field (which field was matched against the search request)
  3. Source order (was always relevant, but with priority you can more easily affect this)

Beyond the ability to slightly affect the result ordering, commands that primarily target available packages (largely install) will now prefer to use a single result from a source with higher priority rather than prompting for disambiguation from the user. Said another way, if multiple sources return results but only one of those sources has the highest priority value (and it returned only one result) then that package will be used rather than giving a "multiple packages were found" error. This has been applied to both winget CLI and PowerShell module commands.

REST result match criteria update

Along with the source priority change, the results from REST sources (like msstore) now attempt to correctly set the match criteria that factor into the result ordering. This will prevent them from being sorted to the top automatically.

Minor Features
Preserve installer arguments across export and import

winget export now captures the --override and --custom arguments that were used when a package was originally installed and saves them into the export file. When subsequently running winget import, those values are automatically re-applied during installation — --override replaces all installer arguments and --custom appends extra switches — so packages can be reinstalled with the same customizations without any manual intervention. Both fields are optional and independent of each other; packages without stored installer arguments are unaffected.

--no-progress flag

Added a new --no-progress command-line flag that disables all progress reporting (progress bars and spinners). This flag is universally available on all commands and takes precedence over the visual.progressBar setting. Useful for automation scenarios or when running WinGet in environments where progress output is undesirable.

MCP upgrade support

The WinGet MCP server's existing tools have been extended with new parameters to support upgrade scenarios:

  • find-winget-packages now accepts an upgradeable parameter (default: false). When set to true, it lists only installed packages that have available upgrades — equivalent to winget upgrade. The query parameter becomes optional in this mode, allowing it to filter results or be omitted to list all upgradeable packages. AI agents can use this to answer requests like "What apps can I update with WinGet?"
  • install-winget-package now accepts an upgradeOnly parameter (default: false). When set to true, it only upgrades an already-installed package and returns a clear error if the package is not installed (pointing to install-winget-package without upgradeOnly instead). AI agents can use this to answer requests like "Update WinGetCreate" or, in combination with find-winget-packages with upgradeable=true, "Update all my apps."
Authenticated GitHub API requests in PowerShell module

The PowerShell module now automatically uses GH_TOKEN or GITHUB_TOKEN environment variables to authenticate GitHub API requests. This significantly increases the GitHub API rate limit, preventing failures in CI/CD pipelines. Use -Verbose to see which token is being used.

Improved list output when redirected
  • winget list (and similar table commands) no longer truncates output when stdout is redirected to a file or variable — column widths are now computed from the full result set.
  • Spinner and progress bar output are suppressed when no console is attached, keeping redirected output clean.
Bug Fixes
  • winget export now works when the destination path is a hidden file
  • Fixed the useLatest property in the DSC v3 Microsoft.WinGet/Package resource schema to emit a boolean default (false) instead of the incorrect string "false".
  • SignFile in WinGetSourceCreator now supports an optional RFC 3161 timestamp server via the new TimestampServer property on the Signature model. When set, signtool.exe is called with /tr <url> /td sha256, embedding a countersignature timestamp so that signed packages remain valid after the signing certificate expires.
  • File and directory paths passed to signtool.exe and makeappx.exe are now quoted, fixing failures when paths contain spaces.
  • DSC export now correctly exports WinGet Admin Settings
What's Changed
New Contributors

Full Changelog: https://github.com/microsoft/winget-cli/compare/v1.29.160-preview...v1.29.170-preview

View originalPermalink
How v1.29.170-preview went
v1.29.160-previewPre-release

Windows Package Manager 1.29.160-preview

This is a preview build of WinGet for those interested in trying out upcoming features and fixes. While it has had some use and should be free of major issues, it may have bugs or usability problems. If you find any, please help us out by filing an issue.

New in v1.29

New Feature: Source Priority

[!NOTE] Experimental under sourcePriority; defaulted to disabled.

With this feature, one can assign a numerical priority to sources when added or later through the source edit command. Sources with higher priority are sorted first in the list of sources, which results in them getting put first in the results if other things are equal.

[!TIP] Search result ordering in winget is currently based on these values in this order:

  1. Match quality (how well a valid field matches the search request)
  2. Match field (which field was matched against the search request)
  3. Source order (was always relevant, but with priority you can more easily affect this)

Beyond the ability to slightly affect the result ordering, commands that primarily target available packages (largely install) will now prefer to use a single result from a source with higher priority rather than prompting for disambiguation from the user. Said another way, if multiple sources return results but only one of those sources has the highest priority value (and it returned only one result) then that package will be used rather than giving a "multiple packages were found" error. This has been applied to both winget CLI and PowerShell module commands.

REST result match criteria update

Along with the source priority change, the results from REST sources (like msstore) now attempt to correctly set the match criteria that factor into the result ordering. This will prevent them from being sorted to the top automatically.

Minor Features
Preserve installer arguments across export and import

winget export now captures the --override and --custom arguments that were used when a package was originally installed and saves them into the export file. When subsequently running winget import, those values are automatically re-applied during installation — --override replaces all installer arguments and --custom appends extra switches — so packages can be reinstalled with the same customizations without any manual intervention. Both fields are optional and independent of each other; packages without stored installer arguments are unaffected.

--no-progress flag

Added a new --no-progress command-line flag that disables all progress reporting (progress bars and spinners). This flag is universally available on all commands and takes precedence over the visual.progressBar setting. Useful for automation scenarios or when running WinGet in environments where progress output is undesirable.

MCP upgrade support

The WinGet MCP server's existing tools have been extended with new parameters to support upgrade scenarios:

  • find-winget-packages now accepts an upgradeable parameter (default: false). When set to true, it lists only installed packages that have available upgrades — equivalent to winget upgrade. The query parameter becomes optional in this mode, allowing it to filter results or be omitted to list all upgradeable packages. AI agents can use this to answer requests like "What apps can I update with WinGet?"
  • install-winget-package now accepts an upgradeOnly parameter (default: false). When set to true, it only upgrades an already-installed package and returns a clear error if the package is not installed (pointing to install-winget-package without upgradeOnly instead). AI agents can use this to answer requests like "Update WinGetCreate" or, in combination with find-winget-packages with upgradeable=true, "Update all my apps."
Authenticated GitHub API requests in PowerShell module

The PowerShell module now automatically uses GH_TOKEN or GITHUB_TOKEN environment variables to authenticate GitHub API requests. This significantly increases the GitHub API rate limit, preventing failures in CI/CD pipelines. Use -Verbose to see which token is being used.

Improved list output when redirected
  • winget list (and similar table commands) no longer truncates output when stdout is redirected to a file or variable — column widths are now computed from the full result set.
  • Spinner and progress bar output are suppressed when no console is attached, keeping redirected output clean.
Bug Fixes
  • winget export now works when the destination path is a hidden file
  • Fixed the useLatest property in the DSC v3 Microsoft.WinGet/Package resource schema to emit a boolean default (false) instead of the incorrect string "false".
  • SignFile in WinGetSourceCreator now supports an optional RFC 3161 timestamp server via the new TimestampServer property on the Signature model. When set, signtool.exe is called with /tr <url> /td sha256, embedding a countersignature timestamp so that signed packages remain valid after the signing certificate expires.
  • File and directory paths passed to signtool.exe and makeappx.exe are now quoted, fixing failures when paths contain spaces.
  • DSC export now correctly exports WinGet Admin Settings
What's Changed
New Contributors

Full Changelog: https://github.com/microsoft/winget-cli/compare/v1.29.140-preview...v1.29.160-preview

View originalPermalink
How v1.29.160-preview went
v1.29.140-previewPre-release

Windows Package Manager 1.29.140-preview

This is a preview build of WinGet for those interested in trying out upcoming features and fixes. While it has had some use and should be free of major issues, it may have bugs or usability problems. If you find any, please help us out by filing an issue.

New in v1.29

New Feature: Source Priority

[!NOTE] Experimental under sourcePriority; defaulted to disabled.

With this feature, one can assign a numerical priority to sources when added or later through the source edit command. Sources with higher priority are sorted first in the list of sources, which results in them getting put first in the results if other things are equal.

[!TIP] Search result ordering in winget is currently based on these values in this order:

  1. Match quality (how well a valid field matches the search request)
  2. Match field (which field was matched against the search request)
  3. Source order (was always relevant, but with priority you can more easily affect this)

Beyond the ability to slightly affect the result ordering, commands that primarily target available packages (largely install) will now prefer to use a single result from a source with higher priority rather than prompting for disambiguation from the user. Said another way, if multiple sources return results but only one of those sources has the highest priority value (and it returned only one result) then that package will be used rather than giving a "multiple packages were found" error. This has been applied to both winget CLI and PowerShell module commands.

REST result match criteria update

Along with the source priority change, the results from REST sources (like msstore) now attempt to correctly set the match criteria that factor into the result ordering. This will prevent them from being sorted to the top automatically.

Minor Features
--no-progress flag

Added a new --no-progress command-line flag that disables all progress reporting (progress bars and spinners). This flag is universally available on all commands and takes precedence over the visual.progressBar setting. Useful for automation scenarios or when running WinGet in environments where progress output is undesirable.

Authenticated GitHub API requests in PowerShell module

The PowerShell module now automatically uses GH_TOKEN or GITHUB_TOKEN environment variables to authenticate GitHub API requests. This significantly increases the GitHub API rate limit, preventing failures in CI/CD pipelines. Use -Verbose to see which token is being used.

Bug Fixes
  • SignFile in WinGetSourceCreator now supports an optional RFC 3161 timestamp server via the new TimestampServer property on the Signature model. When set, signtool.exe is called with /tr <url> /td sha256, embedding a countersignature timestamp so that signed packages remain valid after the signing certificate expires.
  • File and directory paths passed to signtool.exe and makeappx.exe are now quoted, fixing failures when paths contain spaces.
What's Changed
New Contributors

Full Changelog: https://github.com/microsoft/winget-cli/compare/v1.29.70-preview...v1.29.140-preview

View originalPermalink
How v1.29.140-preview went
View all

Discussion