From 795c64cc7259b8f7a1cf15eed352c1575516637f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ji=C5=99=C3=AD=20Pol=C3=A1=C5=A1ek?= Date: Thu, 12 Feb 2026 16:35:56 +0100 Subject: [PATCH] CmdPal: Manually iterate package metadata tags to prevent exceptions (#45502) ## Summary of the Pull Request This PR fixes an error that occurred when reading tags for the selected package in WinGet extensions when AOTed. The issue was caused by using LINQ over a WinRT proxy; this has been replaced with manual iteration over the collection to avoid the failure. The exception is now caught and logged as a warning by #44757. image ## PR Checklist - [x] Closes: #44487 - [x] Closes: #44486 - [ ] **Communication:** I've discussed this with core contributors already. If the work hasn't been agreed, this work might be rejected - [ ] **Tests:** Added/updated and all pass - [ ] **Localization:** All end-user-facing strings can be localized - [ ] **Dev docs:** Added/updated - [ ] **New binaries:** Added on the required places - [ ] [JSON for signing](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ESRPSigning_core.json) for new binaries - [ ] [WXS for installer](https://github.com/microsoft/PowerToys/blob/main/installer/PowerToysSetup/Product.wxs) for new binaries and localization folder - [ ] [YML for CI pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ci/templates/build-powertoys-steps.yml) for new test projects - [ ] [YML for signed pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/release.yml) - [ ] **Documentation updated:** If checked, please file a pull request on [our docs repo](https://github.com/MicrosoftDocs/windows-uwp/tree/docs/hub/powertoys) and link it here: #xxx ## Detailed Description of the Pull Request / Additional comments ## Validation Steps Performed --- .../Pages/InstallPackageListItem.cs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/modules/cmdpal/ext/Microsoft.CmdPal.Ext.WinGet/Pages/InstallPackageListItem.cs b/src/modules/cmdpal/ext/Microsoft.CmdPal.Ext.WinGet/Pages/InstallPackageListItem.cs index eda0d3fee3..dbf77b1f0a 100644 --- a/src/modules/cmdpal/ext/Microsoft.CmdPal.Ext.WinGet/Pages/InstallPackageListItem.cs +++ b/src/modules/cmdpal/ext/Microsoft.CmdPal.Ext.WinGet/Pages/InstallPackageListItem.cs @@ -171,17 +171,24 @@ public partial class InstallPackageListItem : ListItem { if (metadata.Tags.Count > 0) { + var tags = new ITag[metadata.Tags.Count]; + for (var i = 0; i < metadata.Tags.Count; i++) + { + var tag = new Tag(metadata.Tags[i]); + tags[i] = tag; + } + DetailsElement pair = new() { Key = "Tags", - Data = new DetailsTags() { Tags = metadata.Tags.Select(t => new Tag(t)).ToArray() }, + Data = new DetailsTags { Tags = tags }, }; detailsElements.Add(pair); } } catch (Exception ex) { - Logger.LogWarning($"Failed to retrieve tags from metadata: {ex.Message}"); + Logger.LogWarning($"Failed to retrieve tags from metadata: {ex}"); } return detailsElements;