-
Notifications
You must be signed in to change notification settings - Fork 1.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Window Terminal version "1.12.10983.0" will appear in winget upgrade but can`t be installed (Win10) #2134
Comments
This looks like we need to add more metadata so we can check the Minimum OS Version in addition to the other installer metadata when we run the upgrade command. Edit: This is due to the installer requiring Windows 11 as the minimum OS version. Current workaround:
Install the previous version listed as it supports Windows 10 as the minimum OS version.
|
I suppose what I'm seeing is related to this. On W10 and seeing this in the upgrade available:
When trying to upgrade:
Even trying
|
|
@Trenly didn't you create a issue? 😬 |
No, this was the issue I was referencing, and after digging into the code more it seems that I was partially mistaken. There is a section of the code called the ManifestComparator which, from my understanding, is used when the CLI is selecting which installer to use from a manifest. The manifest comparator has various fields called “FilterFields” that narrow down which specific installers may be used. Specifically, there are filter fields for architecture, installer type, and in this case, there is also one for MinOSVersion. I originally thought the filter was broken, but I now belive I just misunderstood how it gets applied. As shown by the @JohnMcPMS seems to have a great understanding of what the issue I described above is, stating it in your initial pr. Although, I don’t know that all the details were fully explained. If a user is on v1.12.10732.0 they will see 1.12.10983.0 when they run an upgrade. But, the upgrade will actually install 1.12.10982.0 since it is the latest version with an applicable installer. If the user is already on 1.12.10982.0, then they will get no applicable update found. The installation flow does not have this fallback method as mentioned in the initial pr. Overall, it seems that the MinOsVersion is not considered at all when fetching results from the source, and is only considered when an upgrade or install is invoked. Based on this issue, I would suggest that this is the true bug, not that install doesn’t have a fallback. If a users system does not support a version, then it shouldn’t be listed as available in either search, install, or upgrade in my opinion. I know that @ryfu-msft implemented some logic to check that a system supports a portable app before installation. Perhaps the type of issue seen here is a more systemic one, since it brings to my mind the question - should portable apps even show up in Search/Install/Upgrade if a users system does not support them? However, that question is a topic for a different thread. I’m just asking it here to spark thought and consideration. |
The newest release of windows terminal includes a windows 10 and windows 11 version. It seems that winget has the windows 11 version. https://github.com/microsoft/terminal/releases/tag/v1.12.10982.0 |
We need to add support for filtering out updates by the OS on the client. That will resolve this issue. |
Winget has both versions. |
That won't resolve this particular issue, as I would expect that to be "if ALL versions of a package have a min OS higher than the current one, don't consider it as existing". However, if at least one version is applicable, we would consider it, and the user would want us to. The fallback on install is the right thing to do here and in general. The improved searching is still questionable in my mind; I would want to know that Foo exists, is in the repository of packages, but is not available for my current system. Pretending like it is not in the repository of packages will just lead to confusion in my mind. There is the consideration of filtering individual versions at the search layer to make some things a cleaner user experience, which could be a way to fix this issue. But it is by far more expensive than the simple fallback (which will work for ALL cases of inapplicability now and in the future). Edit: I only read the latest comments and thought this was about |
I think we need this for
So both show me info for a release that is not applicable to my OS version. This is confusing for the user, IMO. E.g. I might be wondering, why I the version shown here does not install (assuming that the
I agree w.r.t
I disagree w.r.t. |
I could see it both ways. As a user, if there is a version which is compatible with my setup, I would want to see only the versions which are applicable to the setup. If there are no versions conpatible with my setup, I would want to know that the package does exist but isn’t compatible. |
I agree conceptually that it would be best to filter out versions when they are not applicable and support the state of no applicable versions. We could output However, I think that with the current design this is complicated technologically. I wouldn't want to do this for just the OS version; it would be for all applicability concerns. So we would need to do applicability filtering for every version of every result in order to get the right answer for "latest" (and even then, should Now if we can only convince @denelon to let me spend a few weeks creating a whole new index schema, CDN cache structure, and associated code... |
I would say Yes
I think this is a great approach
Agreed - Reparse points, virtualization, unsupported OS Architectures, unsupported OS Versions, all if it is good @jedieaston @OfficialEsco - Would it make any difference if we were to split the packages like |
@JohnMcPMS does that include the changes for the publishing pipelines? How many bugs here at GitHub would that resolve? Applicable Installer Dimensions:
What did I miss? |
@Trenly I don't think splitting the manifests would be a good idea in this case. There would be multiple matches and it might end up being challenging similar to what we're currently facing with VC++. |
Makes Sense; I thought that if there were some way to differentiate them using ARP data, it might filter it down to a single match |
|
Yeah, I was thinking that we could possibly just do product code, but you're right, it would be the same issue we have with VC++ |
@onebitbrain FWIW I see |
It is indeed a very old issue which has nothing to do with this issue.
|
The .Net team will be managing all their manifests directly. They made an announcement about the upcoming breaking changes. We still have the versioning change feature to begin switching to the displayVersion rather than packageVersion for upgrade comparison to address the majority of the remaining issues. |
This affects more apps, like PowerShell installer.
This is the only package with "PowerShell" in name. These give the same error:
These commands show the current lates version 7.2.6:
|
If you |
Work in progress:
We're planning on having dependency support in WinGet 1.6. |
This was happening in this case because two versions of Terminal needing to be released to target separate versions of Windows had separate version numbers. WinGet didn't handle this situation correctly. WinGet now fully supports dependencies for package manifests, so the other thing that was happening is packages were in some cases getting their dependencies satisfied by virtue of WinGet being installed. When drift for versions happened, some of the earlier versions of packages would fail. I'm going to go ahead and close this bug related to Terminal since it's well beyond resolved. I believe there is already an issue to handle the different OS requirements based on different package versions. |
Brief description of your issue
Window Terminal version "1.12.10983.0" will appear in winget upgrade but can not be installed on Windows 10.
Steps to reproduce
precondition: winget installed.
installed the latest version (1.12.10982.0) for win10.
run "winget upgrade" in WindowsTerminal, you will see the avaiable "1.12.10983.0" for Microsoft.WindowsTerminal. But you cant upgrade to this version, seems its the only for Win11.
Expected behavior
Please dont display this upgrade on Win10 terminal, if it cant be installed. I always keep my "winget upgrade" clean. But this upgrade of unsupported is annoying.
Actual behavior
The un-supported version "1.12.10983.0" displayed when running "winget upgrade" in Win10 terminal.
Environment
The text was updated successfully, but these errors were encountered: