microsoft / microsoft/winget-cli
`winget upgrade` offers older versions of already installed packages with non-standard versioning schemes
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 26.4k
- Forks
- 1.8k
- Avg merge
- 1d 11h
- Merged PRs (30d)
- 15
Description
Brief description of your issue
For some packages winget upgrade offers older versions of packages.

In this case, it is offering
- for
CrystalDiskMarkit is offering8.0.4which is older than the already installed8.0.4a - for
Stardock.Fencesit is offering4.07.02which is older than the already installed4.1.0.6
I'm not sure how CrystalDiskMark was upgraded to 8.0.4a (probably manually by CrystalDiskMark installer by me), Fences was upgraded to 4.1.0.6 by its own built-in upgrade mechanism
- For
Fencesthere is no4.1.0.6available yet in https://github.com/microsoft/winget-pkgs yet so the only problem is that it thinks4.07.02is newer than4.1.0.6already installed - for
CrystalDiskMarkthough there is already a newer8.0.4cavailable in https://github.com/microsoft/winget-pkgs/blob/master/manifests/c/CrystalDewWorld/CrystalDiskMark/8.0.4c/CrystalDewWorld.CrystalDiskMark.yaml so I thinkwinget upgradeshould be offering8.0.4cinstead of8.0.4besides the fact it thinks8.0.4is newer than8.0.4a
I know that those applications have non-standard versioning schemes (a suffix for CrystalDiskMark and 0 prefix in the minor version number for Fences) and I don't know if this is really a bug and if that should be handled in the package manifests somehow but I'm reporting it just in case there is some space for winget version matching improvement (not sure whether this relates to Matching logic needs to be updated #2995
)
Steps to reproduce
run winget upgrade | grep -E "CrystalDiskMark|Fences" with the latest versions of CrystalDiskMark / Fences installed
Expected behavior
winget upgrade shouldn't be offering older versions of already installed packages
Actual behavior
winget upgrade is offering older versions of already installed packages with non-standard versioning schemes
Environment
@pavel λ winget --info
Windows Package Manager (Preview) v1.5.441-preview
Copyright (c) Microsoft Corporation. All rights reserved.
Windows: Windows.Desktop v10.0.22621.1413
System Architecture: X64
Package: Microsoft.DesktopAppInstaller v1.20.441.0
Logs: %LOCALAPPDATA%\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\LocalState\DiagOutputDir
User Settings: %LOCALAPPDATA%\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\LocalState\settings.json
Links
---------------------------------------------------------------------------
Privacy Statement https://aka.ms/winget-privacy
License Agreement https://aka.ms/winget-license
Third Party Notices https://aka.ms/winget-3rdPartyNotice
Homepage https://aka.ms/winget
Windows Store Terms https://www.microsoft.com/en-us/storedocs/terms-of-sale
Admin Setting State
--------------------------------------------------
LocalManifestFiles Disabled
BypassCertificatePinningForMicrosoftStore Disabled
InstallerHashOverride Disabled
LocalArchiveMalwareScanOverride Disabled
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
Reproduce the report with winget upgrade | grep -E "CrystalDiskMark|Fences" using the versions and environment described, then inspect the upgrade version-matching path and the referenced package manifests. Done means winget upgrade no longer offers a version older than the installed package and selects the available newer CrystalDiskMark version when appropriate.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- cli
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Clearly specified
- Newbie friendliness
- 42/100