microsoft / winget-cli

WinGet is the Windows Package Manager. This project includes a CLI (Command Line Interface), PowerShell modules, and a COM (Component Object Model) API (Application Programming Interface).
https://learn.microsoft.com/windows/package-manager/
MIT License
23.35k stars 1.45k forks source link

add an option to list only packages with versions that cannot be determined #4836

Open ak1dd opened 1 month ago

ak1dd commented 1 month ago

Description of the new feature / enhancement

When you run "winget update --all" and have packages with versions that cannot be determined you are recommended to "Use --include-unknown to see all results" IMO this is very vague and using --include-unknown simply seems to remove the recommendation message when you use it and further execution of "winget update --all" again shows the recommendation with no direction or explanation. It doesn't seem to "...see all results" in any way I understand.

Proposed technical implementation details

I have a lot of installed applications. I'd like to be able to do something like "winget list --unknown-only" and show just the packages with versions that cannot be determined and not have to sort through a huge list or parse it with something else. I could just pin them or find versions winget can determine. I'd like the recommendation to read something like "Use "winget list --unknown-only to see unknown results"

similar-issues-ai[bot] commented 1 month ago

We've found some similar issues:

If any of the above are duplicates, please consider closing this issue out and adding additional context in the original issue.

Note: You can give me feedback by 👍 or 👎 this comment.

mdanish-kh commented 1 month ago

While this doesn't directly address your request of having it in the CLI, you may find WinGet's PowerShell module to be useful here as an immediate workaround

After installing the module, you can use Get-WinGetPackage (winget list equivalent cmdlet) and do:

Get-WinGetPackage | Where InstalledVersion -eq "Unknown"

This will list all packages with unknown versions. If you even want to automate the pinning process you can do something like

Get-WinGetPackage | Where InstalledVersion -eq "Unknown" | Select -ExpandProperty Id | ForEach-Object { winget pin add $_ }

This gets all installed versions with value "Unknown", gets their ID and calls winget pin on each of them

[comment]: <[Policy] Command-List>