Replies: 3 comments 7 replies
-
for package I mean to say that winget can run a loop and check for available versions in the repository. If it finds multiple versions with a major version, it should go a level deep (minor version) and check again. If it still finds multiple versions, it should go more deep (patch version) and this continues till it finds different versions. |
Beta Was this translation helpful? Give feedback.
-
This is not a solution, but just wanted to put this here as prior art: https://docs.npmjs.com/about-semantic-versioning#using-semantic-versioning-to-specify-update-types-your-package-can-accept. NPM forces semantic versioning, and allows the user of the package to say whether they want to accept all updates, only patch (so the third number), or minor and patch updates. I wonder if there’s some way we could do math or a survey on the repo to determine how many apps use semver and therefore would work if the client implemented something like this. Python, .NET, and Node all do I know. Also, it’s worth nothing that the multiple minor versions of Python issue was fixed in Debian/RHEL (and their derivatives) by having separate packages for every minor release (python3.7, python3.8, python3.9) with a pointer package (python3) that pointed to the newest minor version. If you installed python3, you opt in to minor version updates, whereas with the other packages you only get patches. I know that pointer packages are being resisted, but that’s how they solved it. |
Beta Was this translation helpful? Give feedback.
-
@denelon The core logic that this script uses to check the version to be updated, I was thinking of a similar logic to be implemented in winget. |
Beta Was this translation helpful? Give feedback.
-
Several packages support side by side installation. This presents challenges with the upgrade scenario. As of the 1.0 builds, the Windows Package Manager attempts to upgrade any lower version to the latest (or specified version).
Assume package foo supports side by side installation for all major versions.
Assume the user has version 1.0 and version 2.0 installed.
If the latest version in the repository is 2.1, when the user performs
winget upgrade foo
, the expected behavior would be for version 2.0 to be upgraded to version 2.1, and version 1.0 is left alone.At this point, the user would have:
Two versions of food installed; foo version 1.0 and foo version 2.1.
If a new version 1.1 of foo is released, the user would wish to see this when they run
winget upgrade
.If they were to run
winget upgrade foo
, they would expect version 1.0 to be upgraded to version 1.1.This discussion is intended to support proposals for how this could be accomplished.
Related PR:
#16070 (comment)
Beta Was this translation helpful? Give feedback.
All reactions