Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

[WinGetUtil] ValidateManifestInstallers fails for zip installers with appx/msix NestedInstallerType

Open Beginner friendly
#6,080 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
2/5
Estimated time
1-3 hours
Newbie friendliness
72/100
Issue type
Bug
Clarity
Clearly specified
Activity status
Stale
Tech stack
cpp
Domain
cli

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

Issue-Bug

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

  1. Use a manifest with InstallerType: zip and NestedInstallerType: appx (e.g., Microsoft.VCLibs.Desktop.14 v14.0.33728.0 from microsoft/winget-pkgs)
  2. Call WinGetValidateManifestV3 with WinGetValidateManifestOptionV2::InstallerValidation
  3. Observe InstallerValidationFailure result with "Failed to process installer" messages

Environment

  • Manifests: Microsoft.VCLibs.Desktop.14 v14.0.33728.0, Microsoft.VCLibs.14 v14.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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from microsoft/winget-cli

All issues in microsoft/winget-cli

Similar issues

More C++ issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.