Open aetonsi opened 1 year ago
ps: i saw the ticket #1886 but --version
doesn't seem to be the problem here
uninstall
requires that a single match be found, which is why it is failing on all your attempts. --name mpc-hc
still matches both versions, --version
is broken, and -q
finds the same results as --name mpc-hc
.
Try using the full name - winget uninstall 'MPC-HC 1.9.24'
@Trenly hi, yes, in the end as i wrote in the first post, i made it work with that exact command.
But then, if that's the problem, the message No installed package found matching input criteria.
is extremely misleading, as the problem is actually the complete opposite of what it says.
Also, why doesn't winget uninstall --id clsid2.mpc-hc --version 1.9.24
work? i only have 1 app with that id and version.
Apparently --id
has the same problem as --name
, and if so, the --version
parameter should make the command work, but it doesn't, because apparently it's only applied after --name
/--id
triggers the problem in question.
If you or anyone else can confirm that's the case, i'll open 2 different issues (one for the misleading message, one for --version
filtering too late) and close this one.
Also, why doesn't winget uninstall --id clsid2.mpc-hc --version 1.9.24 work? i only have 1 app with that id and version.
Because of #1886 - The --version
switch for uninstall is entirely broken.
After looking in more depth, I think this gets back to the fact that SearchForSingle
(used by upgrade) has different matching rules than SearchForMany
(used by list)
I added a logging statement into the code to log the number of search results in the EnsureMatchesFromSearchResult
and ran both list and upgrade commands. list
found 7 results whereas upgrade
found 0. This better explains this comment -
But then, if that's the problem, the message No installed package found matching input criteria. is extremely misleading, as the problem is actually the complete opposite of what it says.
wingetdev list '.NET Framework'.log wingetdev uninstall '.NET Framework'.log
The message is accurate, as it doesn't actually find the package. Similarly, when searching by the ID, there are also 0 results found. This seems to be due to an issue where multiple strong matches are found, which relates back to the initial implementation of package-version matching. @denelon can probably tag this with Area-Matching
Also, why doesn't winget uninstall --id clsid2.mpc-hc --version 1.9.24 work? i only have 1 app with that id and version.
Because of #1886 - The
--version
switch for uninstall is entirely broken.
Oh i see, i didn't think it was applicable to my situation too, as i couldn't uninstall any package, not even an incorrect one.
I simply thought that applying those 2 filters together, id and version, would work, overcoming the "problem" with the multiple matches for --name
/--id
returning 0 results.
wingetdev list '.NET Framework'.log wingetdev uninstall '.NET Framework'.log.log
(just FYI, the 2nd link is broken, it's missing an additional ".log" at the end of the URL)
I'm going to comment the other issues, you can close here if it's a dupe.
Thanks
Quick fix would be to change the error message to read "Multiple results found when single package query is required." This would cause your customers 😊.
Additionally, the help text should be
usage: winget uninstall [[-q] <query-single>...] [<options>]
as opposed to list --help:
usage: winget list [[-q] <query>] [<options>]
Brief description of your issue
Hi i was trying to update MPC-HC and i discovered that somehow i had 2 versions installed, 1.x and 2.0 (which is the last stable version).
winget reported that the 1.x version had an update available, to the already installed 2.0 version.
So i simply tried to remove the old version but i could not do it in any way.
There seems to be 2 different problems, one with
--name
, one with--id
. See sections below for details.I finally found a way by specifying the exact name with quotes:
Steps to reproduce
have those 2 versions installed then try to remove the old one
Expected behavior
the correct version is found via
--id
(and possibly--version
) or via--name
, and removedActual behavior
--id
it doesn't work at all, with or without
--version
:--name
winget uninstall --name XXX
doesn't work likewinget list --name XXX
. Why is that?Environment