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.3k stars 1.45k forks source link

It is difficult to get the app I want if they have the same / similar names. #301

Open KevinLaMS opened 4 years ago

KevinLaMS commented 4 years ago

This issue was raised on the docs. https://github.com/MicrosoftDocs/windows-uwp/issues/2474

Description of the new feature/enhancement

I am having problems installing applications where the name of a package is a subset of another package name. I get this problem when trying to install PowerShell from "winget.exe". The following is the command I entered for installing PowerShell. C:\Users\namehere>winget.exe install Microsoft.Powershell Multiple apps found matching input criteria. Please refine the input. Name Id Version

Powershell Microsoft.Powershell 7.0.1 PowerShell-Preview Microsoft.PowerShell-Preview 7.1.0-preview.3 I can not find any way to install Powershell (not PowerShell-Preview).

While we have the -e for exact, it is not intuitive.
winget install Microsoft.Powershell --exact --exact or -e for short

We should noodle on how to intuitively eliminate the "preview" Should this have been moved to the version so that is was a prerelease? Maybe it is just a bug in the version.

Antidote commented 4 years ago

I'd take a peak at linux package managers and see how they address it, they've been handling this exact problem from the beginning and it's been a non-issue.

AdilHindistan commented 4 years ago

Right, this's the same issue I reported

SubhamK108 commented 4 years ago

At the moment, when installing apps with multiple search results, the following nomenclature is working perfectly:

winget install --name <appName> -e

Note that the appName is Case Sensitive !

NLstn commented 4 years ago

I also ran into this issue, i think if there is an exact match, winget should take this package and install it

stevenbrix commented 3 years ago

not only is it hard to install, there is no help from winget at all. a very simple example is trying to install Java.

denelon commented 3 years ago

Java in particular is a tricky area for any package manager. There are many different providers for JREs and JDKs. If there was only one package with the name, tag, or moniker for Java the Windows Package Manager would be able to install it.

One example is winget install vscode. Only one package has that moniker so in that case, the correct package would be installed.

robross0606 commented 3 years ago

Here's another example for upgrade command:

C:\Users\me>winget upgrade -e Python.Python.3
Multiple installed packages found matching input criteria. Please refine the input.
Name                   Id
-------------------------------------------------------------
Python 3               Python.Python.3
Python 2.7.18 (64-bit) {A5F504DF-2ED9-4A2D-A2F3-9D2750DD42D6}

C:\Users\me>winget show -e Python.Python.3
Found Python 3 [Python.Python.3]
Version: 3.9.7150.0
Publisher: Python Software Foundation
Author: Python Software Foundation
Moniker: python3
Description: Python is a programming language that lets you work more quickly and integrate your systems more effectively.
Homepage: https://www.python.org
License: PSF LICENSE AGREEMENT FOR PYTHON
License Url: https://docs.python.org/3/license.html
Installer:
  Type: Burn
  Locale: en-US
  Download Url: https://www.python.org/ftp/python/3.9.7/python-3.9.7-amd64.exe
  SHA256: 3f63f4c77a6da13f9bae715eb6644a48bd5f900601e0f1f233862e8ca1a96dd8

C:\Users\me>winget upgrade --id Python.Python.3 -e
Multiple installed packages found matching input criteria. Please refine the input.
Name                   Id
-------------------------------------------------------------
Python 3               Python.Python.3
Python 2.7.18 (64-bit) {A5F504DF-2ED9-4A2D-A2F3-9D2750DD42D6}

Why on Earth is it even matching "Python 2" with "Python 3"?!

edgarchinchilla commented 3 years ago

Here is another example, only to add test-cases:

winget upgrade --Id Microsoft.ASPNetCore.5-x64 --exact --source winget --silent:
Se encontraron varios paquetes instalados que coinciden con los criterios de entrada. Por favor, vuelve a ajustar la búsqueda.
Nombre                                           Id
---------------------------------------------------------------------------------------
Microsoft ASP.NET Core - Shared Framework (x64)  Microsoft.ASPNetCore.5-x64
Microsoft ASP.NET Core 3.1.16 - Shared Framework {f316ce75-c233-4afb-a6e8-2dd7fe72cb8e}
derkrasseleo commented 3 years ago

I would like to choose between the packages winget finds by inputting a number, for example. yay handles this perfectly imo

image

unilock commented 3 years ago

Yet another example, in which --exact doesn't work.

image

EDIT: The ID can't be in quotation marks, apparently. Might be worthwhile to document that somewhere.

EDIT2: At least, that was the case for OpenJS.NodeJS.LTS. Doesn't help here, it seems.

Screenshot 2021-10-21 113628