Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

[IMPROVEMENT] Do not show WinGet updates that WinGet itself cannot install (example: MSYS2)

未关闭
#5,597 0 条评论 1 个 reaction 已指派 0 人 在 GitHub 查看

维护者通常 1 天内回复

还没有人认领这个 Issue。

评估

难度
4/5
预计耗时
3-5 天
新手友好度
52/100
Issue 类型
缺陷
描述清晰度
描述清楚
活跃度
活跃
技术栈
csharp
领域
desktop, devtools

调研方向

Start with the named entry points: NativeWinGetHelper.GetAvailableUpdates_UnSafe(), WinGetCliHelper.ParseAvailableUpdates(), and WinGetPkgOperationHelper; read related issue #882 and the Miniconda case in #2296. Check how WinGet distinguishes its normal upgrade table from the explicit-targeting table, then compare the two helper paths and the handling of error 0x8A150114. Done means explicit-targeting-only packages are not presented as installable normal updates, with the expected error explanation or ignore option handled consistently.

由索引模型根据 Issue 内容生成。

描述

enhancement winget
Please confirm these before moving forward.
  • I have searched for my feature proposal and have not found a work-in-progress/duplicate/resolved/discarded issue.
  • This improvement refers to an existing feature. If you want to suggest a new feature, please use this template.
  • This improvement is not a bug. If you want to report a bug, please use this template.
Describe the improvement
Summary

UniGetUI shows an update for MSYS2. The update always fails.
WinGet marks this package as "explicit upgrade only". UniGetUI does not use this mark.

What happens
  1. UniGetUI shows "MSYS2 Installer 20260611 -> 20260927" in Software Updates.
  2. I start the update. WinGet stops with this message:
    "The package cannot be upgraded using WinGet. Please use the method
    provided by the publisher for upgrading this package." (0x8A150114)
  3. I change the scope to "user" and set the install location. The update fails again.

MSYS2 updates itself with its own package manager (pacman).
WinGet cannot install this update. It does not matter which options I set.

What WinGet does

WinGet knows about this. The command winget upgrade does not show MSYS2
in the list of normal updates. WinGet shows MSYS2 in a separate list:
"The following packages have an upgrade available, but require explicit
targeting for upgrade."

What I expect

UniGetUI does the same as WinGet:

  • UniGetUI does not show these packages as normal updates.
  • Or: UniGetUI shows them with a clear note, for example
    "This package updates itself".
  • If WinGet returns 0x8A150114, UniGetUI tells the user why the update failed.
    UniGetUI then offers "Ignore updates for this package".
Workaround

I ignore updates for this package manually.

Where this happens in the code (current main)
  • NativeWinGetHelper.GetAvailableUpdates_UnSafe() adds each package that has
    IsUpdateAvailable = true. It does not check for "explicit upgrade only".
  • WinGetCliHelper.ParseAvailableUpdates() reads all tables from
    winget update. It also reads the "require explicit targeting" table
    as normal updates.
  • WinGetPkgOperationHelper handles the error code 0x8A150014.
    It does not handle 0x8A150114.

Related issues: #882 (explicit-targeting table), #2296 (same problem with Miniconda).

Environment
  • UniGetUI 2026.3.2
  • WinGet v1.29.380
  • Windows 11 Pro, build 26300
  • MSYS2 installed for the current user only
Describe how this improvement could help users

Users see an update that can never succeed. They try it, it fails, and they
do not know why. Then they try other options and it fails again.

With this improvement, UniGetUI shows only updates that WinGet can install.
For packages that update themselves (MSYS2, Miniconda, and others), users
get a clear note and know which tool to use. This saves time and avoids
confusing error messages.

主要语言
C#
星标
26.7k
派生
955
平均合并
17 小时
30 天内合并 PR
95

环境准备

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

Devolutions/UniGetUI 的其他 Issue

查看 Devolutions/UniGetUI 的全部 Issue

相似的 Issue

更多 C# Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。