Windows Package Manager 1.29.250
- 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
- Added logging.fileNameStrategy user setting to control installer log file naming with options: manifest, timestamp, guid, and shortguid
- Added --sort flag to winget list command with support for multiple sort fields and --ascending/--descending direction flags
- Added output.sortOrder persistent setting for winget list sorting
- 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:
- Match quality (how well a valid field matches the search request)
- Match field (which field was matched against the search request)
- 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-packagesnow accepts anupgradeableparameter (default:false). When set totrue, it lists only installed packages that have available upgrades — equivalent towinget upgrade. Thequeryparameter 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-packagenow accepts anupgradeOnlyparameter (default:false). When set totrue, it only upgrades an already-installed package and returns a clear error if the package is not installed (pointing toinstall-winget-packagewithoutupgradeOnlyinstead). AI agents can use this to answer requests like "Update WinGetCreate" or, in combination withfind-winget-packageswithupgradeable=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.
| Setting | Description |
|---|---|
| manifest | Uses the name of the manifest and a timestamp. Has the same behavior as WinGet 1.28 |
| timestamp | The log name is just a timestamp |
| guid | The log name is a GUID |
| shortguid | The 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 exportnow works when the destination path is a hidden file- Fixed the
useLatestproperty in the DSC v3Microsoft.WinGet/Packageresource schema to emit a boolean default (false) instead of the incorrect string"false". SignFileinWinGetSourceCreatornow supports an optional RFC 3161 timestamp server via the newTimestampServerproperty on theSignaturemodel. When set,signtool.exeis 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.exeandmakeappx.exeare now quoted, fixing failures when paths contain spaces. - DSC export now correctly exports WinGet Admin Settings
winget validatenow performs case-insensitive comparison for file extensions where applicablewinget source resetnow properly resets default sources instead of removing them- DSC v3
Microsoft.WinGet/Packageresource now honors theinstallModeproperty to use silent or interactive installer switches as specified
What's Changed
- Make list details stable by @JohnMcPMS in https://github.com/microsoft/winget-cli/pull/6020
- Move to IReference rather than custom enum for optional bool by @JohnMcPMS in https://github.com/microsoft/winget-cli/pull/6022
- Apply latest loc patch by @florelis in https://github.com/microsoft/winget-cli/pull/6023
- Bump version to 1.29 by @florelis in https://github.com/microsoft/winget-cli/pull/6019
- Remove 'listDetails' from release notes for 1.29 by @florelis in https://github.com/microsoft/winget-cli/pull/6026
- Update doc as WinGet is not in preview by @Gijsreyn in https://github.com/microsoft/winget-cli/pull/5850
- Replaced "(C)" with "©" in the main menu. by @DandelionSprout in https://github.com/microsoft/winget-cli/pull/5845
- Source priority by @JohnMcPMS in https://github.com/microsoft/winget-cli/pull/6029
- Update json vcpkg by @JohnMcPMS in https://github.com/microsoft/winget-cli/pull/6039
- Coalesce comments from loc suggestions by @JohnMcPMS in https://github.com/microsoft/winget-cli/pull/6033
- Update Roadmap Milestones doc by @Kissaki in https://github.com/microsoft/winget-cli/pull/5824
- Add copilot instructions by @JohnMcPMS in https://github.com/microsoft/winget-cli/pull/6048
- Add --no-progress option by @JohnMcPMS in https://github.com/microsoft/winget-cli/pull/6049
- Remove Crescendo PowerShell by @JohnMcPMS in https://github.com/microsoft/winget-cli/pull/6056
- Fix casing of WinGet by @JohnMcPMS in https://github.com/microsoft/winget-cli/pull/6059
- Added more info for "Installer Types" values in Settings.md. by @DandelionSprout in https://github.com/microsoft/winget-cli/pull/6067
- Diagnostics update and stable DSC for tests by @JohnMcPMS in https://github.com/microsoft/winget-cli/pull/6084
- feat: authenticate GitHub API requests using GH_TOKEN/GITHUB_TOKEN by @wmmc88 in https://github.com/microsoft/winget-cli/pull/6071
- Tool to investigate SQLite compression by @JohnMcPMS in https://github.com/microsoft/winget-cli/pull/6074
- Add dependencies only option by @JohnMcPMS in https://github.com/microsoft/winget-cli/pull/6069
- docs: fix multiple documentation issues (#5296, #5921, #5108, #4372, #5867) by @GrantMeStrength in https://github.com/microsoft/winget-cli/pull/6110
- Revert help link in DscCommand by @JohnMcPMS in https://github.com/microsoft/winget-cli/pull/6111
- Update Moq, curl, and c-ares by @Trenly in https://github.com/microsoft/winget-cli/pull/6112
- Add Timeserver Support for SourceCreator and support spaces in paths and file names by @Trenly in https://github.com/microsoft/winget-cli/pull/6113
- Report skipped upgrades when install technology differs (upgrade --all) by @AMDphreak in https://github.com/microsoft/winget-cli/pull/6096
- [AI Generated] Ensure correct DSC export of admin settings by @Trenly in https://github.com/microsoft/winget-cli/pull/6109
- Update default for useLatest by @Trenly in https://github.com/microsoft/winget-cli/pull/6114
- Add Update commands for MCP by @Trenly in https://github.com/microsoft/winget-cli/pull/6117
- Preserve overrides with export and import by @Trenly in https://github.com/microsoft/winget-cli/pull/6118
- Quote winget server path before calling CreateProcess by @yao-msft in https://github.com/microsoft/winget-cli/pull/6122
- Update to spell check v26 by @Trenly in https://github.com/microsoft/winget-cli/pull/6128
- Add issue types to issue templates by @denelon in https://github.com/microsoft/winget-cli/pull/6139
- Improve MOTW error handling in download flow by @Trenly in https://github.com/microsoft/winget-cli/pull/6127
- Allow exporting to hidden files by @Trenly in https://github.com/microsoft/winget-cli/pull/5795
- Add thread globals for downloader thread by @Trenly in https://github.com/microsoft/winget-cli/pull/6141
- Dynamically select drive for test by @Trenly in https://github.com/microsoft/winget-cli/pull/6129
- Change how Truncation works by @Trenly in https://github.com/microsoft/winget-cli/pull/6142
- Admin setting and group policy for configuration processor path argument by @JohnMcPMS in https://github.com/microsoft/winget-cli/pull/6119
- Add comments to loc strings by @florelis in https://github.com/microsoft/winget-cli/pull/6150
- Move XML ref ahead by @JohnMcPMS in https://github.com/microsoft/winget-cli/pull/6154
- Add policy for notifying authors of Localization Restriction by @Trenly in https://github.com/microsoft/winget-cli/pull/6156
- Dont log failures to get font title info by @dkbennett in https://github.com/microsoft/winget-cli/pull/6163
- [ListCommand] Fix --source filter not restricting list output to specified source by @Madhusudhan-MSFT in https://github.com/microsoft/winget-cli/pull/6159
- Improved manifest validations for MSI and Windows Feature names by @JohnMcPMS in https://github.com/microsoft/winget-cli/pull/6170
- Mitigate packaged preindexed source open lock convoy by @mamoreau-devolutions in https://github.com/microsoft/winget-cli/pull/6172
- Optimize packaged temp ACL handling without weakening ACL repairs by @mamoreau-devolutions in https://github.com/microsoft/winget-cli/pull/6171
- Add telemetry event for index updates by @JohnMcPMS in https://github.com/microsoft/winget-cli/pull/6175
- Make extension comparison case insensitive by @Trenly in https://github.com/microsoft/winget-cli/pull/6182
- [Settings, ListCommand] Add sort types, settings infrastructure, and CLI arguments for output ordering by @Madhusudhan-MSFT in https://github.com/microsoft/winget-cli/pull/6177
- Add setting for installer log file names by @Trenly in https://github.com/microsoft/winget-cli/pull/5802
- Add JSON validation output and interop presentation model by @JohnMcPMS in https://github.com/microsoft/winget-cli/pull/6183
- Add default installer precedence if not defined by user by @Trenly in https://github.com/microsoft/winget-cli/pull/6123
- Standardize PR template with emoji sections and issue types by @denelon in https://github.com/microsoft/winget-cli/pull/6207
- Add Copilot instructions for writing specifications by @denelon in https://github.com/microsoft/winget-cli/pull/6205
- Fix policy bot bugs and expand label coverage by @denelon in https://github.com/microsoft/winget-cli/pull/6202
- Report DSC execution diagnostics on a timer by @JohnMcPMS in https://github.com/microsoft/winget-cli/pull/6196
- Store provisioning mitigation by @JohnMcPMS in https://github.com/microsoft/winget-cli/pull/6194
- Add execution level to telemetry summary and logs by @JohnMcPMS in https://github.com/microsoft/winget-cli/pull/6195
- Implement sort logic for winget list output by @Madhusudhan-MSFT in https://github.com/microsoft/winget-cli/pull/6191
- VS Code WinGet log viewer tool by @JohnMcPMS in https://github.com/microsoft/winget-cli/pull/6149
- Bump fast-uri from 3.1.0 to 3.1.2 in /tools/WinGetLogViewer by @dependabot[bot] in https://github.com/microsoft/winget-cli/pull/6223
- Update
configure export --allfor recent DSC changes by @JohnMcPMS in https://github.com/microsoft/winget-cli/pull/6222 - Mitigate stack overflow issue by @JohnMcPMS in https://github.com/microsoft/winget-cli/pull/6224
- Reset default sources without dropping them by @Trenly in https://github.com/microsoft/winget-cli/pull/6187
- Enable transitive pinning for central package management by @florelis in https://github.com/microsoft/winget-cli/pull/6225
- Configuration processor auditing improvements by @JohnMcPMS in https://github.com/microsoft/winget-cli/pull/6193
- Update rest source and wingetutil interop to include 1.28 manifest by @yao-msft in https://github.com/microsoft/winget-cli/pull/6234
- Move pre-check errors to post-check by @JohnMcPMS in https://github.com/microsoft/winget-cli/pull/6236
- In-proc certificate pinning validation override by @JohnMcPMS in https://github.com/microsoft/winget-cli/pull/6233
- Change symlink verification to avoid redirection guard policy by @JohnMcPMS in https://github.com/microsoft/winget-cli/pull/6239
- Bump uuid and @azure/msal-node in /tools/WinGetLogViewer by @dependabot[bot] in https://github.com/microsoft/winget-cli/pull/6241
- Bump qs from 6.15.1 to 6.15.2 in /tools/WinGetLogViewer by @dependabot[bot] in https://github.com/microsoft/winget-cli/pull/6246
- Ensure portable command alias does not escape directory by @florelis in https://github.com/microsoft/winget-cli/pull/6251
- Make sfs-client a vcpkg port by @florelis in https://github.com/microsoft/winget-cli/pull/6243
- Bump tmp from 0.2.5 to 0.2.7 in /tools/WinGetLogViewer by @dependabot[bot] in https://github.com/microsoft/winget-cli/pull/6252
- Honor DSCv3 package installMode for silent and interactive by @Trenly in https://github.com/microsoft/winget-cli/pull/6249
- Fix triage label getting removed by @Trenly in https://github.com/microsoft/winget-cli/pull/6254
- lowercase ARM64 for vcpkg by @JohnMcPMS in https://github.com/microsoft/winget-cli/pull/6256
- Apply latest loc patch by @florelis in https://github.com/microsoft/winget-cli/pull/6262
New Contributors
- @DandelionSprout made their first contribution in https://github.com/microsoft/winget-cli/pull/5845
- @Kissaki made their first contribution in https://github.com/microsoft/winget-cli/pull/5824
- @wmmc88 made their first contribution in https://github.com/microsoft/winget-cli/pull/6071
- @GrantMeStrength made their first contribution in https://github.com/microsoft/winget-cli/pull/6110
- @AMDphreak made their first contribution in https://github.com/microsoft/winget-cli/pull/6096
- @mamoreau-devolutions made their first contribution in https://github.com/microsoft/winget-cli/pull/6172
Full Changelog: https://github.com/microsoft/winget-cli/compare/v1.28.240...v1.29.250