Open apcsb opened 1 year ago
You can already do this with the PowerShell cmdlets for winget, for example:
Get-WinGetPackage -Id Git.Git -Source winget | Where-Object Version -like '2.32.*'
doing a comparison like 1.2.6<>1.3.9a
is trickier because not all version numbers are purely numeric. In the simple cases you can do:
Get-WinGetPackage -Id Git.Git -Source winget | Where-Object {
[Version]$_.Version -gt '2.30' -and [Version]$_.Version -lt '2.40'
}
[Policy] Command-List
I think the other useful scenario here is to help clarify when the current installed version is "Unknown".
Description of the new feature / enhancement
1155
Hi.
I often need to check if a specific package version is installed, or what version of a specific package is installed. Currently I have to parse text output, which is not fun, given the variable column names/widths etc.
Proposal: Add a --version argument to the list command similar to search / install / uninstall. Only show matches to that version. Optionally --version-min and -- version-max and differentiation between "not installed" and "wrong version"
Thanks!
Proposed technical implementation details
winget list <query> [--version <string>]
Only return packages if matching the versionOptional:
winget list <query> [--version-min <string1>] [--version-max <string2>]
Only show if installed version >= min version and/or <= max-version (should support one argument or both together) Alphanumeric Dot-Version string comparison Not compatible with --version. Alternatively, make --version support '>', '<', '>=', '<=' and some character for "in between" that is not usually used in versions ('*','~', '<>' etc.) Ex:
--version '<=1.2.3a'
or--version '1.2.6<>1.3.9a'
Optional: different messages / exit codes for "no package" vs "different version is present"