microsoft / microsoft/winget-pkgs
Docker.DockerDesktop: Custom installer switch disables Windows containers on every upgrade
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
## Summary
The Docker Desktop winget manifest (versions 4.74.0 through 4.87.0, possibly earlier) includes `--no-windows-containers` in the `Custom` installer switch, which **silently disables Windows containers** on every `winget install` or `winget upgrade` of Docker Desktop.
## Affected manifests
All recent versions use this pattern (checked 4.84.0, 4.85.0, 4.86.0, 4.87.0):
```yaml
InstallerSwitches:
Silent: install --quiet
SilentWithProgress: install --quiet
Interactive: install
Custom: --accept-license --backend=wsl-2 --no-windows-containers
```
Version 4.73.0 does **not** have this — the `Custom` and `Interactive` keys are absent entirely. The change was introduced when the manifest tooling switched from `wingetcreate` to `komac v2.16.0`.
## Impact
- The `--no-windows-containers` flag writes `"noWindowsContainers": true` into `C:\ProgramData\DockerDesktop\install-settings.json`
- This permanently disables Windows containers integration — the "Switch to Windows containers" tray menu item disappears, and `docker desktop engine use windows` returns `unable to set engine to "windows": engine is disabled`
- The flag is **sticky**: once set, it persists across subsequent upgrades (even ones that don't pass the flag) because the installer reads and preserves existing `install-settings.json` values
- There is no corresponding "enable" flag — the only fix is to manually edit `install-settings.json`
- This affects anyone using `winget upgrade` for Docker Desktop, including automated tools like topgrade
## Expected behavior
The `Custom` switch should not include `--no-windows-containers` by default. This flag is a security hardening option that should be opt-in, not forced on all winget users. Per Docker's own documentation:
> `--no-windows-containers`: Disables the Windows containers integration. This can improve security.
Users on Windows Pro/Enterprise who need Windows containers (a supported Docker Desktop feature on all-users installs) should not have this silently disabled on every upgrade.
## Suggested fix
Remove `--no-windows-containers` from the `Custom` switch in current and future manifests:
```yaml
InstallerSwitches:
Silent: install --quiet
SilentWithProgress: install --quiet
Interactive: install
Custom: --accept-license --backend=wsl-2
```
Or remove `Custom` entirely and let the installer use its own defaults (as 4.73.0 did).
## Reproduction
```powershell
# On Windows Pro/Enterprise with Hyper-V and Containers features enabled:
winget upgrade Docker.DockerDesktop --accept-source-agreements
# After upgrade completes:
docker desktop engine use windows
# Returns: unable to set engine to "windows": engine is disabled
# Verify:
Get-Content C:\ProgramData\DockerDesktop\install-settings.json
# Shows: "noWindowsContainers": true
```
## Environment
- Windows 11 Business (Pro), Build 26200 (25H2)
- Docker Desktop 4.87.0 (latest affected)
- winget v1.x (standard)
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
Search the winget-pkgs manifests for Docker.DockerDesktop and inspect the InstallerSwitches entries across the affected versions, comparing them with 4.73.0. Remove the forced --no-windows-containers option from current and future manifest data, then run the repository's manifest validation or installer checks to confirm the switches remain valid.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- docker
- Domain
- tooling
- Issue type
- Bug
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 72/100