[WinGetUtil] ValidateManifestInstallers fails for zip installers with appx/msix NestedInstallerType
Nobody has claimed this yet.
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 72/100
Research direction
Start in ManifestValidation.cpp around line 497 and compare the installer-type handling with EffectiveInstallerType() in ManifestInstaller.h around line 50. Reproduce with the Microsoft.VCLibs.Desktop.14 manifest by calling WinGetValidateManifestV3 with InstallerValidation. Done means zip installers with NestedInstallerType: appx pass without InstallerFailedToProcess errors while direct MSIX validation still works.
Written by the indexing model from the issue text.
Description
Summary
ValidateManifestInstallers() in ManifestValidation.cpp incorrectly attempts MSIX validation on zip installers that contain nested appx/msix packages. The function uses installer.EffectiveInstallerType() to determine whether to run MsixManifestValidation::Validate(), but for zip installers EffectiveInstallerType() returns the NestedInstallerType (appx → InstallerTypeEnum::Msix), causing it to try opening the raw zip URL as an MSIX package.
Expected Behavior
Manifests with InstallerType: zip and NestedInstallerType: appx should pass ValidateManifestInstallers() without error. The MSIX validation should not attempt to open a zip archive URL as an MSIX package.
Actual Behavior
MsixManifestValidation::Validate() calls GetMsixInfo(installer.Url) on the zip URL. Since the URL points to a .zip archive (not an .appx/.msix file), GetMsixInfo() returns nullptr, and the error InstallerFailedToProcess is emitted for every installer entry:
Failed to process installer. [InstallerUrl] Value: https://github.com/microsoft/winget-cli/releases/download/v1.9.25180/DesktopAppInstaller_Dependencies.zip
The error repeats once per architecture (e.g., 4 times for x64/x86/arm/arm64).
Steps to Reproduce
- Use a manifest with
InstallerType: zipandNestedInstallerType: appx(e.g.,Microsoft.VCLibs.Desktop.14v14.0.33728.0 frommicrosoft/winget-pkgs) - Call
WinGetValidateManifestV3withWinGetValidateManifestOptionV2::InstallerValidation - Observe
InstallerValidationFailureresult with "Failed to process installer" messages
Environment
- Manifests:
Microsoft.VCLibs.Desktop.14v14.0.33728.0,Microsoft.VCLibs.14v14.0.33519.0 - These manifests exist in production
microsoft/winget-pkgs
Additional Context
The issue is in ManifestValidation.cpp line ~497:
if (installer.EffectiveInstallerType() == InstallerTypeEnum::Msix)
{
auto installerErrors = msixManifestValidation.Validate(manifest, installer);
}
EffectiveInstallerType() returns NestedInstallerType for archive types (ManifestInstaller.h line ~50). This check should also verify !IsArchiveType(installer.BaseInstallerType) before running MSIX validation.
🏴☠️ This report was assembled by the Straw Hat crew's AI navigator. While we've sailed these waters carefully, the seas are unpredictable — details should be verified by the maintainers.
- Dominant language
- C++
- Stars
- 26.4k
- Forks
- 1.8k
- Avg merge
- 2d 12h
- Merged PRs (30d)
- 21
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from microsoft/winget-cli
-
Issue-Docs Possible-Duplicate
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
microsoft/winget-cli#6493 · 1 comment ·
-
Issue-Feature
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
microsoft/winget-cli#6427 ·
-
Issue-Docs msstore
Difficulty 2/5 1-3 hours Newbie friendliness 64/100
microsoft/winget-cli#6331 · 1 comment ·
-
Command-Source Issue-Bug
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
microsoft/winget-cli#6148 ·
-
Issue-Feature
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
microsoft/winget-cli#6391 · 1 comment · 1 reaction ·
All issues in microsoft/winget-cli
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
flutter-webrtc/flutter-webrtc#2206 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
google-ai-edge/LiteRT-LM#3739 ·
-
Component: GLib
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
brave/brave-browser#59300 ·
-
Mute ydb/tests/functional/dstool/test_canonical_requests.py.Test.test_group_take_snapshot in main Openai_reviewed
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
ydb-platform/ydb#53974 · 3 comments ·