microsoft / microsoft/winget-pkgs

[Pipeline Bug]: Validation VM cannot enable Hyper-V / virtualization Windows Features declared as package dependencies

Open
#396,952 0 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

Area-Validation-Pipeline Issue-Bug
Dominant language
No language data
Stars
11.1k
Forks
9.7k
Avg merge
1h 32m
Merged PRs (30d)
616

Description

### Description of the new feature/enhancement

WinGet manifests can declare a dependency on Windows optional features via `Dependencies.WindowsFeatures`, and WinGet attempts to **enable** those features before installing the package. The automated validation pipeline cannot validate any package that declares a **virtualization** Windows Feature dependency (e.g. `Microsoft-Hyper-V`, `HypervisorPlatform`), because the validation sandbox is itself a VM without nested virtualization — enabling Hyper-V fails deterministically.

This is **not** a manifest defect. A correct manifest fails validation forever, surfacing as `Internal-Error-Dynamic-Scan` with the `Installation Validation` step failing.

**Symptom / detection signature** (from manual validation):
```
Install finished with exit code: -1978334960
Failed to enable Windows Feature [Microsoft-Hyper-V] with exit code: 50

| Hex | Dec | Symbol | Description |
| -------- | ----------- | ----------------------------------------- | ------------------------------------ |
| 00000032 | 50 | ERROR_NOT_SUPPORTED | The request is not supported. |
| 8A150110 | -1978334960 | APPINSTALLER_CLI_ERROR_INSTALL_DEPENDENCIES | Failed to install package dependencies. |
```

**Example:** microsoft/winget-pkgs#382520 (`Skywork.SkyworkDesktop.QEMU` 1.6.0). All other validation stages pass (InstallerScan, ManifestPolicy, URL, Catalog); only `InstallationVerification` returns `Error`. The manifest correctly declares:
```yaml
Dependencies:
WindowsFeatures:
- HypervisorPlatform
- Microsoft-Hyper-V
```

### Proposed technical implementation details (optional)

Options:
1. Route packages that declare virtualization `WindowsFeatures` dependencies to **nested-virtualization-capable or bare-metal validators** so the feature can actually be enabled.
2. Provide a **manual-validation waiver path** for packages whose *only* failure is an un-enableable declared `WindowsFeatures` dependency (moderator-verified), so a correct manifest is not blocked by an infra limitation.
3. Detect a declared `WindowsFeatures` dependency the VM cannot enable and **skip the enable/verify step with a documented waiver**, rather than failing the whole run as `Internal-Error-Dynamic-Scan`.

Automation-facing detection signature: `Failed to enable Windows Feature` + `ERROR_NOT_SUPPORTED` (50) + `APPINSTALLER_CLI_ERROR_INSTALL_DEPENDENCIES` (`0x8A150110`).

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.

Research direction

Start by reviewing the validation pipeline's Installation Validation or InstallationVerification handling for Dependencies.WindowsFeatures. Reproduce or trace the signature combining “Failed to enable Windows Feature,” ERROR_NOT_SUPPORTED (50), and APPINSTALLER_CLI_ERROR_INSTALL_DEPENDENCIES (0x8A150110), using microsoft/winget-pkgs#382520 as the example. Done means virtualization-dependent manifests are handled through an approved validator route, waiver, or documented skip instead of being incorrectly rejected.

Written by the indexing model from the issue text.

Assessment

Tech stack
yaml
Domain
ci-cd, devops, infrastructure
Issue type
Bug
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.