microsoft / microsoft/winget-cli
winget should not list non-actionable upgrades when no compatible installer candidate exists
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 26.4k
- Forks
- 1.8k
- Avg merge
- 1d 11h
- Merged PRs (30d)
- 15
Description
Relevant area(s)
WinGet CLI
Description of the new feature / enhancement
winget upgrade and winget upgrade --all currently list some packages as having available updates even when no compatible installer candidate actually exists for the installed package.
This is misleading and confusing. From a user perspective, if a package is shown in the normal upgrade list, it implies that the upgrade is actionable.
However, in some cases winget later skips the package during installer selection, for example because:
- the installed package type is incompatible with the available installer type
- locale/applicability filtering leaves no usable installer candidate
As a result, winget presents packages as upgradeable even though they are not actually upgradeable in the current environment.
This should be improved so that the visible upgrade list better reflects what winget can really install.
Proposed technical implementation details
Before showing a package in the normal upgrade results, winget should validate that at least one installer candidate is actually applicable to the currently installed package and current machine context.
That validation should include the same checks that are later used during installer selection, including at least:
- installer type compatibility with the installed package
- locale filtering
- applicability / platform / architecture checks
- other selection rules that can fully eliminate all installer candidates
If no applicable installer candidate remains after those checks, winget should not present the package as a normal available upgrade.
Possible implementation options:
- Exclude such packages from the standard upgrade list entirely
- Show them in a separate category, for example:
- Updates available but not applicable
- No compatible installer candidate
- Keep them visible, but print an explicit reason in standard output explaining why they cannot be upgraded
Any of these approaches would be better than the current behavior, where packages appear as normal available upgrades but are silently skipped later.
The key point is that upgrade discovery output should align with actual upgrade feasibility, rather than listing upgrades that are known in advance to be non-actionable.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start at the winget upgrade and winget upgrade --all entry points, then trace how upgrade discovery differs from later installer selection. Compare the checks used for installer type, locale, applicability, and platform or architecture filtering. Done means non-actionable packages are excluded, separated, or given an explicit reason rather than silently skipped.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- cli
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100