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.5k stars 1.39k forks source link

Incorrect Versioning of Multiple Packages - Upgrade Or Manual Install Has No Effect - .NET, CUDA, Others #4543

Open davidldennison opened 2 weeks ago

davidldennison commented 2 weeks ago

Brief description of your issue

The winget-cli tool fails to correctly version multiple packages after upgrade or manual installation. This issue is observed prominently in this feedback with .NET but happens for other packages such as CUDA, and potentially other packages. I have gone through the painstaking process of manually installing and uninstalling over 50 different .NET versions, tried using winget-cli, and even tried upgrading other packages for this feedback with the versioning issue still persisting.

Since this issue might span across winget-cli, package maintainers, and other MS Teams, during this arduous process I recorded it in Feedback Hub to aid the various teams involved with extensive logs on the install/uninstall process of winget-cli and package versions. I also included the direct logs that were generated over the package installs and uninstalls over the 2 hour period.

You can find the Feedback Hub for the logs and screenshots here: https://aka.ms/AAqqtaf

Additionally, this issue doesn't seem to be isolated, as it potentially mirrors the problems reported in the following GitHub issues:

GitHub Issue #3004 GitHub Issue #4415

  1. Logs from manual installations of .NET packages.
  2. Logs from running winget upgrade post manual installation.
  3. The final state of the system, highlighting discrepancies in versioning. Attached is a screenshot showing the .NET packages installed so far, along with all the captured logs for detailed reference.

Screenshot of some of the logs: image

Steps to reproduce

  1. winget source update
  2. winget upgrade
  3. winget upgrade
    Name                                             Id                                Version Available  Source
    ------------------------------------------------------------------------------------------------------------
    NETworkManager 2024.5.27.0                       BornToBeRoot.NETworkManager       24.5.27 2024.1.7.0 winget
    Microsoft Windows Desktop Runtime - 6.0.31 (x64) Microsoft.DotNet.DesktopRuntime.8 < 8.0.0 8.0.6      winget
    Microsoft .NET Runtime - 6.0.31 (x64)            Microsoft.DotNet.Runtime.7        < 7.0.0 7.0.20     winget
    Microsoft Windows Desktop Runtime - 8.0.5 (x86)  Microsoft.DotNet.DesktopRuntime.8 8.0.5   8.0.6      winget
    Microsoft .NET SDK 8.0.206 (x86)                 Microsoft.DotNet.SDK.8            8.0.206 8.0.301    winget
    Microsoft .NET Runtime - 6.0.31 (x86)            Microsoft.DotNet.Runtime.7        < 7.0.0 7.0.20     winget
    Microsoft .NET SDK 8.0.206 (x64)                 Microsoft.DotNet.SDK.8            8.0.206 8.0.301    winget
    Microsoft .NET SDK 8.0.106 (x64)                 Microsoft.DotNet.SDK.8            8.0.106 8.0.301    winget
    MSBuild Community Tasks 1.5                      LoreSoft.MSBuildCommunityTasks    1.5.0   1.5.0.235  winget
    Microsoft Windows Desktop Runtime - 6.0.31 (x86) Microsoft.DotNet.DesktopRuntime.8 < 8.0.0 8.0.6      winget
  4. winget upgrade
  5. Installation proceeds as normal
  6. Versioning does not change

Versions were also checked with dotnet sdk check and found to be differing from winget-cli.

Expected behavior

Package installations to succeed and winget-cli to recognize the new version.

Hope this helps!

Now let's hope Visual Studio isn't completely broken 😂

Actual behavior

An endless abyss of a Semver loops?

Also, I do have a winget config error with the different JSON versions, but this issue was present before and after so I believe it to be unrelated. Please let me know if there is another repo that should be tagged as well!

Environment

Unexpected error while loading settings. Please verify your settings by running the 'settings' command.
Windows Package Manager v1.8.1522
Copyright (c) Microsoft Corporation. All rights reserved.

Windows: Windows.Desktop v10.0.26227.5000
System Architecture: X64
Package: Microsoft.DesktopAppInstaller v1.23.1522.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

Group Policy                                                       State
--------------------------------------------------------------------------
Enable Windows Package Manager                                     Enabled
Enable Windows Package Manager Settings                            Enabled
Enable Windows App Installer Experimental Features                 Enabled
Enable Windows App Installer Local Manifest Files                  Enabled
Enable Windows App Installer Hash Override                         Enabled
Enable Windows App Installer Microsoft Store Source                Enabled
Enable Additional Windows App Installer Sources                    Enabled
Enable Windows Package Manager command line interfaces             Enabled
Enable Windows Package Manager Configuration                       Enabled
Enable Windows Package Manager proxy command line options          Enabled
Set Windows Package Manager Source Auto Update Interval In Minutes 60

Admin Setting                             State
--------------------------------------------------
LocalManifestFiles                        Enabled
BypassCertificatePinningForMicrosoftStore Disabled
InstallerHashOverride                     Enabled
LocalArchiveMalwareScanOverride           Disabled
ProxyCommandLineOptions                   Enabled
DefaultProxy                              Disabled
github-actions[bot] commented 2 weeks 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.

Trenly commented 2 weeks ago

The team is working on improving side-by-side behaviors, and the applications you mentioned (.NET, CUDA, Desktop Runtime, etc.) are all applications that install new versions side-by-side with older versions.

There is an experimental feature in preview versions that may provide a better experience.

You can run winget features to see which experimental features are available to test/try out. Features can be enabled using winget settings which will open the configuration file in your default .json editor.

davidldennison commented 2 weeks ago

@Trenly Hi! I've been using a custom configuration settings.json for winget-cli and have been using it as discussed in https://github.com/microsoft/winget-cli/issues/4425.

I mainly created this issue to provide a rather large (I'm assuming) data dump for the team in regards to what is happening. I'm in the Windows Insider Program on the Canary channel so I have full telemetry and diagnostics enabled. Additionally, I've enabled additional various tools, diagnostics, and logging capabilities that other users probably don't have.

Additionally, I've taken quite a keen interest in Winget-CLI as my first actual contribution on GitHub and the open source community. As such, I would love to help out further. Would you or the team have a list of applications that the team is working on that are experiencing these issues? Would be happy to go through the same motions here with those packages to with logs and recordings of each package for more insight for the team!

Also if the team is able to share, I would be happy to enable/install any additional diagnostics, logs, ETWs, WPA plug-ins, or debugging tools specifically for Winget to give as much data and feedback for the team.

Here is my current settings.json config (which currently has an error with the new(?) schema):

{
  "$id": "https://aka.ms/winget-settings.schema.json",
  "$schema": "https://json-schema.org/draft/2019-09/schema#",
  "title": "Microsoft's Windows Package Manager Settings Profile Schema",
  "definitions": {
    "Source": {
      "description": "Source repository settings",
      "type": "object",
      "properties": {
        "autoUpdateIntervalInMinutes": {
          "description": "Number of minutes before source update",
          "type": "integer",
          "default": 5,
          "minimum": 0,
          "maximum": 43200
        }
      }
    },
    "experimentalFeatures": {
        "experimentalCmd": true,
        "experimentalArg": true,
        "dependencies": true,
        "directMSI": true,
        "resume": true,
        "configuration03": true,
        "configureSelfElevate": true,
        "sideBySide": true
    },
    "visual": {
        "progressBar": "rainbow",
        "anonymizeDisplayedPaths": false
    },
    "source": {
        "autoUpdateIntervalInMinutes": 10
    },
    "installBehavior": {
        "disableInstallNotes": false,
        "skipDependencies": false,
        "includePreviewVersions": true,
        "portablePackageUserRoot": "C:\\Portable-Apps",
        "portablePackageMachineRoot": "C:\\Portable-Apps",
        "allowPrerelease": true,
        "allowExperimental": true,
        "preferences": {
            "locale": ["en-US"],
            "architectures": ["x64"],
            "installerTypes": ["msix", "msi", "exe", "msstore", "wix", "nullsoft", "zip", "inno", "burn", "portable"]
    },
    "uninstallBehavior": {
        "purgePortablePackage": true
    },
    "network": {
        "downloader": "wininet"
    },
    "telemetry": {
        "disable": false    
    },
    "logging": {
        "level": "verbose",
        "channels": ["all"]
    },
    "interactivity": {
        "disable": false
        }
    }
  ,
denelon commented 2 weeks ago

@davidldennison thanks for the offer to help!

In general, one of our challenges of current focus is dealing with instances where two versions (or both per user and per machine) of an application are installed. Most of these issues have the https://github.com/microsoft/winget-cli/labels/Side-by-Side label on them. I've put comments on most of those issues with information about the new experimental feature. I've been trying to see how many of them look like they are resolved with the new changes. I'd like to get those figured out as soon as possible. I'd also like to know if there are any other bugs related to the new experimental feature before we release it.

The sooner we have confidence in the quality of the feature, and which bugs it will resolve, the sooner we can make it the stable behavior.