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
22.55k stars 1.4k forks source link

winget upgrade-available reports multiple CUDA updates, even if using latest version #4415

Open eabase opened 2 months ago

eabase commented 2 months ago

Brief description of your issue

I installed the latest Nvidia.CUDA package/drivers and now winget reports multiple updates available for the same package.

# winget list --upgrade-available

Name                     Id          Version  Available Source
--------------------------------------------------------------
NVIDIA CUDA Toolkit      Nvidia.CUDA 12.4     12.4.1    winget
NVIDIA CUDA Toolkit 12.3 Nvidia.CUDA 12.3.2   12.4.1    winget
NVIDIA CUDA Toolkit 12.4 Nvidia.CUDA > 12.3.2 12.4.1    winget

3 upgrades available.

Steps to reproduce

Install old version, unless you already have one. Then install the latest version.

Expected behavior

That the package is reported as up-to-date / latest, and not shown when using the --upgrade-available

Actual behavior

Showing multiple available versions for the same package id, even if already at latest.

Environment

winget --info

Windows Package Manager v1.7.11132
Copyright (c) Microsoft Corporation. All rights reserved.

Windows: Windows.Desktop v10.0.22631.3447
System Architecture: X64
Package: Microsoft.DesktopAppInstaller v1.22.11132.0

Winget Directories
-------------------------------------------------------------------------------------------------------------------------------
Logs                               %LOCALAPPDATA%\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\LocalState\DiagOutputDir
User Settings                      %LOCALAPPDATA%\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\LocalState\settings.json
Portable Links Directory (User)    %LOCALAPPDATA%\Microsoft\WinGet\Links
Portable Links Directory (Machine) C:\Program Files\WinGet\Links
Portable Package Root (User)       %LOCALAPPDATA%\Microsoft\WinGet\Packages
Portable Package Root              C:\Program Files\WinGet\Packages
Portable Package Root (x86)        C:\Program Files (x86)\WinGet\Packages
Installer Downloads                %USERPROFILE%\Downloads

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
github-actions[bot] commented 2 months ago

Hi I'm an AI powered bot that finds similar issues based off the issue title.

Please view the issues below to see if they solve your problem, and if the issue describes your problem please consider closing this one and thumbs upping the other issue to help us prioritize it. Thank you!

Open similar issues:

Closed similar issues:

Note: You can give me feedback by thumbs upping or thumbs downing this comment.

eabase commented 2 months ago

Your AI have correctly identified several similar issues dating back ~3 years, so why haven't this annoyance been fixed?

Masamune3210 commented 2 months ago

....just because an issue is old and known doesn't make it easy to fix

denelon commented 2 months ago

We've started working on these "side-by-side" types of issues. The latest WinGet 1.8-preview has an experimental feature which can be enabled and may improve the experience here.

eabase commented 2 months ago

We've started working on these "side-by-side" types of issues. The latest WinGet 1.8-preview has an experimental feature which can be enabled and may improve the experience here.

Great! How can I test the new preview?

(Sorry, I can't recall how to install the different version.)

denelon commented 2 months ago

You can install the preview versions here at GitHub in the releases section. The release notes also cover which experimental features are available. You can run winget settings -? in the client to see the help and get a link to the settings available for the client.

davidldennison commented 2 months ago

We've started working on these "side-by-side" types of issues. The latest WinGet 1.8-preview has an experimental feature which can be enabled and may improve the experience here.

Having this exact issue with Cuda versioning, however sideBySide only slightly helps:

C:>winget upgrade Name Id Version Available Source

NVIDIA CUDA Toolkit 12.4 Nvidia.CUDA > 12.3.2 12.4.1 winget

Can't install with sideBySide enabled as it gives a GetVariant Error (see https://github.com/microsoft/winget-cli/issues/4425)

eabase commented 2 months ago

Yes, I tried by installing the 1.8-preview.

Indeed the issues with multiple CUDA versions were gone, and also the Microsoft.DotNet.DesktopRuntime.6 issue.

To Install winget preview, do this:

# 0. Check winget features
winget features

# 1. Download "-preview" from:
https://github.com/microsoft/winget-cli/releases

# 2. Run (as admin):
Add-AppxPackage -Path '.\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle'

# 3. Change feature settings:
winget settings

# 4. Add:
"experimentalFeatures": {
        "sideBySide": true
    }

# Check
winget --info

# To Revert, download & run (the non-preview version):
Add-AppxPackage -Path '.\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.1.7.11132.msixbundle' -ForceUpdateFromAnyVersion

However, I had to revert because the output formatting of winget list was awful, where all the Ids had been replaced with MSIX/.... something.

eabase commented 2 months ago

OT Warning!

This brings up another (OT) issue.
Why can't we install whatever version we like using the id and Version/Available strings? That would make much more sense, than having to run Add-AppxPackage.

One would expect something like the following to work:

winget install -i -e "Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle" -v '1.7.11132`
fehrin1 commented 2 months ago

I have the same problem or to state it clear: I have only CUDA 12.4.1 installed and get with winget update (upgrade) NVIDIA CUDA Toolkit 12.4 Nvidia.CUDA > 12.3.2 12.4.1 winget So there is a flaw in detecting the installed version, is this corrected in some winget version resp. will it be fixed in future versions?

fehrin1 commented 1 month ago

As of today winget correctly detects the installed 12.4.1 version, consequently no update is suggested anymore (no multiple / side-by-side installation present).

eabase commented 1 month ago

@fehrin1

As of today winget correctly detects...

What do you mean? The latest release was 2 weeks ago, with 1.7.11261, so what are you using? (Not fixed for this version.)

fehrin1 commented 1 month ago

@fehrin1

As of today winget correctly detects...

What do you mean? The latest release was 2 weeks ago, with 1.7.11261, so what are you using? (Not fixed for this version.)

I have this version too and for me CUDA 12.4.1 is correctly detected. The multi version (side by side) issue is most probably still present. Just guessing probably the version info downloaded by "winget (source) update" got updated.