microsoft / microsoft/winget-pkgs
[Pipeline Bug]: Validation VM cannot enable Hyper-V / virtualization Windows Features declared as package dependencies
Nobody has claimed this yet.
- 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
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.
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