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.93k stars 1.42k forks source link

Upgrade --all getting ignored / failing #1985

Open github-account1111 opened 2 years ago

github-account1111 commented 2 years ago

Brief description of your issue

Winget sees that there are upgrades but..

  1. ignores all but one upgrade when I run upgrade --all.
  2. the one package it does attempt to upgrade errors out with Installer hash does not match. Could be related to the recent Nvidia breach?
PS C:\Users\<username>\Desktop> winget upgrade --all --source winget
Name                Id                         Version     Available
----------------------------------------------------------------------
Brave               BraveSoftware.BraveBrowser 98.1.35.103 99.1.36.107
VeraCrypt           IDRIX.VeraCrypt            1.25.4      1.25.9
PowerToys (Preview) Microsoft.PowerToys        0.35.0      0.55.2
NVIDIA GeForce NOW  Nvidia.GeForceNow          2.0.37.138  2.0.37.148
4 upgrades available.
4 packages have version numbers that cannot be determined. Use "--include-unknown" to see all results.

(1/1) Found NVIDIA GeForce NOW [Nvidia.GeForceNow] Version 2.0.37.148
This application is licensed to you by its owner.
Microsoft is not responsible for, nor does it grant any licenses to, third-party packages.
Downloading https://download.nvidia.com/gfnpc/GeForceNOW-release.exe
  ██████████████████████████████   140 MB /  140 MB
Installer hash does not match; to override this check use --force

4 packages have version numbers that cannot be determined. Use "--include-unknown" to see all results.

Note: PowerToys isn't supposed to upgrade because they only support above 1809, and I'm on 1809, so that behavior is correct.

Steps to reproduce

Run winget upgrade --all --source winget.

Expected behavior

All packages are updated except for the unsupported ones by the system.

Actual behavior

Some packages are ignored, others fail.

Environment

Windows Package Manager (Preview) v1.3.431-preview
Windows: Windows.Desktop v10.0.17763.2628
Package: Microsoft.DesktopAppInstaller v1.18.431.0
Trenly commented 2 years ago

Can you run winget upgrade --all --verbose-logs and then attach the log files in your reply? I have a theory as to what the issue is, but the logs will help tremendously, as I'm not able to replicate this on my system.

github-account1111 commented 2 years ago

The log is 76k lines so I uploaded it here: https://gist.github.com/github-account1111/e5f6acc014d2791ebefae1c549a277af

github-account1111 commented 2 years ago

Decided to try running the command again today:

PS C:\Users\username> winget upgrade --all --source winget
Name                Id                        Version    Available
-------------------------------------------------------------------
Mozilla Thunderbird Mozilla.Thunderbird       91.6.1     91.7.0
VeraCrypt           IDRIX.VeraCrypt           1.25.4     1.25.9
iTunes              Apple.iTunes              12.12.2.2  12.12.3.5
PowerToys (Preview) Microsoft.PowerToys       0.35.0     0.56.2
NVIDIA GeForce NOW  Nvidia.GeForceNow         2.0.37.138 2.0.38.105
Tachidesk Server    Suwayomi.Tachidesk-Server 0.6.1      0.6.2
6 upgrades available.
4 packages have version numbers that cannot be determined. Use "--include-unknown" to see all results.

(1/4) Found Mozilla Thunderbird [Mozilla.Thunderbird] Version 91.7.0
This application is licensed to you by its owner.
Microsoft is not responsible for, nor does it grant any licenses to, third-party packages.
Downloading https://download-installer.cdn.mozilla.net/pub/thunderbird/releases/91.7.0/win64/en-US/Thunderbird%20Setup%2091.7.0.exe
  ██████████████████████████████  53.6 MB / 53.6 MB
Successfully verified installer hash
Starting package install...
Successfully installed

(2/4) Found iTunes [Apple.iTunes] Version 12.12.3.5
This application is licensed to you by its owner.
Microsoft is not responsible for, nor does it grant any licenses to, third-party packages.
Downloading https://secure-appldnld.apple.com/itunes12/002-35070-20220304-5521E72A-137B-4F09-9844-45BEBA5C3B40/iTunes64Setup.exe
  ██████████████████████████████   200 MB /  200 MB
Successfully verified installer hash
Starting package install...
Successfully installed

(3/4) Found NVIDIA GeForce NOW [Nvidia.GeForceNow] Version 2.0.38.105
This application is licensed to you by its owner.
Microsoft is not responsible for, nor does it grant any licenses to, third-party packages.
Downloading https://download.nvidia.com/gfnpc/GeForceNOW-release.exe
  ██████████████████████████████   140 MB /  140 MB
Successfully verified installer hash
Starting package install...
Successfully installed

(4/4) Found Tachidesk Server [Suwayomi.Tachidesk-Server] Version 0.6.2
This application is licensed to you by its owner.
Microsoft is not responsible for, nor does it grant any licenses to, third-party packages.
Downloading https://github.com/Suwayomi/Tachidesk-Server/releases/download/v0.6.2/Tachidesk-Server-v0.6.2-r1074-windows-x64.msi
  ██████████████████████████████   217 MB /  217 MB
Successfully verified installer hash
Starting package install...
Successfully installed

4 packages have version numbers that cannot be determined. Use "--include-unknown" to see all results.
PS C:\Users\username> winget upgrade --all --source winget
Name                Id                        Version Available
---------------------------------------------------------------
VeraCrypt           IDRIX.VeraCrypt           1.25.4  1.25.9
PowerToys (Preview) Microsoft.PowerToys       0.35.0  0.56.2
Tachidesk Server    Suwayomi.Tachidesk-Server 0.6.1   0.6.2
3 upgrades available.
4 packages have version numbers that cannot be determined. Use "--include-unknown" to see all results.

(1/1) Found Tachidesk Server [Suwayomi.Tachidesk-Server] Version 0.6.2
This application is licensed to you by its owner.
Microsoft is not responsible for, nor does it grant any licenses to, third-party packages.
Downloading https://github.com/Suwayomi/Tachidesk-Server/releases/download/v0.6.2/Tachidesk-Server-v0.6.2-r1074-windows-x64.msi
  ██████████████████████████████   217 MB /  217 MB
Successfully verified installer hash
Starting package install...
Successfully installed

4 packages have version numbers that cannot be determined. Use "--include-unknown" to see all results.
PS C:\Users\username> winget upgrade --source winget
Name                Id                        Version Available
---------------------------------------------------------------
VeraCrypt           IDRIX.VeraCrypt           1.25.4  1.25.9
PowerToys (Preview) Microsoft.PowerToys       0.35.0  0.56.2
Tachidesk Server    Suwayomi.Tachidesk-Server 0.6.1   0.6.2
3 upgrades available.
4 packages have version numbers that cannot be determined. Use "--include-unknown" to see all results.

As can be seen, one of the packages that previously refused to update (Geforce Now) went through this time. I ran the command multiple times prior to opening the issue, so something must've changed. The other package that was giving me trouble (VeraCrypt) is still not updating.

Of note is a new troublesome package (Tachidesk) which supposedly updates "successfully", but still shows up as outdated afterward. What's up with that?

I do not like how inconsistent things are.

denelon commented 2 years ago

This appears to be an issue with the installer. I'm wondering if installing Tachidesk Server 0.6.2 on a clean system reports the right version in Windows Apps & Features. If it does then the next question would be if having 0.6.1 and running 0.6.2 as an upgrade updates the entry, or if it installs a "new" version side by side. Running winget list Tachidesk would show if there are one or two entries.

Maybe there are switches we need to pass to get the string updated, or we need to change the upgrade behavior to "uninstallPrevious" in the manifest.

Trenly commented 2 years ago

Looks like it gets installed side by side image

denelon commented 2 years ago

Awesome community for the win!

Trenly commented 2 years ago

As can be seen, one of the packages that previously refused to update (Geforce Now) went through this time. I ran the command multiple times prior to opening the issue, so something must've changed.

I believe this may be an issue with GeForce Now reporting a successful install but not actually installing if the application is currently in use / running

The other package that was giving me trouble (VeraCrypt) is still not updating.

Your issue with VeraCrypt is that the installation currently on your machine was installed with the exe file, and the version in winget uses the MSI file. The easiest way to fix this is to uninstall your current version and re-install. I can replicate this using version 1.1 of the client. Using version 1.2 of the client I get this message -

PS> winget upgrade veracrypt --verbose-logs
A newer version was found, but the install technology is different from the current version installed. Please uninstall the package and install the newer version.
OfficialEsco commented 2 years ago

To answer your other questions:

If you find any other unresolved package issues you can report them here https://github.com/microsoft/winget-pkgs/issues/new/choose

Trenly commented 2 years ago

there is no 1.25.9 exe available

Slight correction - There is an exe available here . I just can't seem to find the secret combination of switches for a silent install

OfficialEsco commented 2 years ago

Ops, just looked up my previous comment on VeraCrypt

VeraCrypt: I can see that there is a exe install for this software, we don't have the exe version because its not Unattended.

Chocolatey uses AHK for the installation so there is probably a very low chance you'll find the magic switch

Edit: we could make a issue here? https://github.com/veracrypt/VeraCrypt/issues

Trenly commented 2 years ago

Edit: we could make a issue here? https://github.com/veracrypt/VeraCrypt/issues

https://github.com/veracrypt/VeraCrypt/issues/447

denelon commented 2 years ago

We need to be cautious about adding that switch to the manifest. It's better for them to either publish to the Microsoft Store or become a verified developer so we can include Agreements in the manifest to meet the "explicit" agreement requirements.

Trenly commented 2 years ago

We need to be cautious about adding that switch to the manifest. It's better for them to either publish to the Microsoft Store or become a verified developer so we can include Agreements in the manifest to meet the "explicit" agreement requirements.

So far as I can tell, it is just the EULA which that switch suppresses, which often happens with any installer which incorporates the EULA agreement into the install process. Its just that many publishers allow the eula to be suppressed with the default silent switch rather than requiring an additional switch

github-account1111 commented 2 years ago

Microsoft.PowerToys changed their installer from a weird bundled MSI to a EXE. (A reinstall/install will resolve the issue)

So PowerToys is not updating because of installer type change, not because it sees I'm on 1809 (an unsupported Windows build)? Wonder what would happen if it actually went through if that is the case.

Also is there a reason an exe can't "gracefully" be updated into an msi and visa versa? If there is one, might make sense to at least let the user know that that is the reason nothing is happening.

OfficialEsco commented 2 years ago

So PowerToys is not updating because of installer type change, not because it sees I'm on 1809 (an unsupported Windows build)? Wonder what would happen if it actually went through if that is the case.

The InstallerType changed in version 0.53.1, however winget upgrade did also not work before that because of the scuffed MSI bundle (if you have 0.53.1+ winget upgrade will work as expected) However i do not know if PowerToys dropped support for 1809 after version 0.35.0, you should probably try to run the installer manually

Also is there a reason an exe can't "gracefully" be updated into an msi and visa versa?

Most of the time the MSI and EXE can be installed side-by-side or work differently

If there is one, might make sense to at least let the user know that that is the reason nothing is happening.

if you do winget upgrade Microsoft.PowerToys you will get A newer version was found, but the install technology is different from the current version installed. Please uninstall the package and install the newer version.

In the future you will be asked if you want to force upgrade (will probably uninstall and install the new version)

github-account1111 commented 2 years ago

if you do winget upgrade Microsoft.PowerToys you will get A newer version was found, but the install technology is different from the current version installed. Please uninstall the package and install the newer version.

I see. I also get that message for VeraCrypt. Wouldn't it also make sense to show it when running upgrade --all for the packages that have that problem?