Repository navigation
Bug in 4.95.0 installer: VirtualMachinePlatform check hard-blocks functional Per-User updates/installations on Windows 11 #757
Description
Bug report
Environment
- Current Functional Version: Docker Desktop 4.94.0 (Engine: 29.8.2) — updated via self-update within per-user scope
- Target Upgrade Version: Docker Desktop 4.95.0
- OS: Windows 11 Pro (NOT LTSC)
- BIOS: Hardware Virtualization (SVM / Intel VT-x) is explicitly ENABLED
- WSL Status: Fully operational with active 'ubuntu' and 'docker-desktop' distros, while VirtualMachinePlatform feature is listed as Disabled (InstallState: 2) in WMI.
- Installation Type: Per-user installation (without admin privileges)
Description of the Bug
I am using a Per-user installation of Docker Desktop. When trying to upgrade to version 4.95.0, the built-in self-update mechanism simply fails with a generic error. When running the standalone installer manually, it immediately blocks the process on the first step with an error message stating that I must either switch to an "All-users" installation or run "wsl --install" to
enable the legacy "Virtual Machine Platform" feature, but running "wsl --install" does not enable it.
It seems that the fix introduced in this release actually breaks the installer for functional setups:
Fixed a per-user installation on Windows silently completing on machines where the Virtual Machine Platform feature is disabled, leaving Docker Desktop unable to start.
However, Docker Desktop and WSL 2 have been working perfectly fine for me since version 4.92.0 up to the current 4.94.0, even with this legacy Windows component disabled.
My current setup has hardware virtualization active, a running hypervisor, WSL 2 fully functional (wsl -l -v reports version 2), and existing docker-desktop / Ubuntu distros running perfectly. Yet, your new 4.95.0 installer blindly blocks the upgrade process based on a legacy host OS feature flag, completely ignoring that the actual environment is already up and running.
Steps to reproduce
- Have a Windows 11 (Pro) machine with Hardware Virtualization enabled in BIOS.
- Deploy and manage WSL 2 natively via
wsl --install(where legacy Windows Optional Features checkboxes remain unchecked/disabled). - Confirm that Docker Desktop version 4.94.0 and WSL 2 run perfectly fine.
- Try to update to Docker Desktop 4.95.0 using the built-in self-update tool. It fails with a generic error.
- Download the standalone Docker Desktop Installer.exe and run it. The installer blocks the upgrade process with a hard error regarding the disabled Virtual Machine Platform, preventing the user from proceeding with the per-user setup.
Expected behavior
The installer should not strictly block the installation based on a legacy feature status check when the actual WSL 2 backend is fully functional and running.
Please consider adjusting this pre-requisite block so that Per-user updates remain truly seamless as advertised in your documentation. Thank you!
Here is the exact output from install-log that proves the hardcoded failure during Phase 0: Pre-check:
[2026-10-19T00:06:57.161621100Z][Installer][I] Existing installation found: build=241994, version=4.94.0, basePath=C:\Users\MyUser\AppData\Local\Programs\DockerDesktop
[2026-10-19T00:06:57.361511600Z][PerUserInstallHandler][I] Running per user installation
[2026-10-19T00:06:57.782966500Z][InstallWorkflow][I] Using package: C:\Users\MyUser\AppData\Local\Temp\DockerDesktopInstallers\1792368414589986000\DockerDesktop.d4w
[2026-10-19T00:06:57.912835000Z][InstallWorkflow][I] Phase 0: Pre-check
[2026-10-19T00:06:58.087025100Z][InstallWorkflow][I] Checking prerequisites
[2026-10-19T00:06:58.551248000Z][WindowsFeaturePreRequisite][E] Required Windows features are not enabled: VirtualMachinePlatform
[2026-10-19T00:06:58.552753500Z][InstallWorkflow][E] Prerequisite failed: Docker Desktop requires the "Virtual Machine Platform" Windows feature, which is not enabled on this machine.
A per-user installation cannot enable it, because that requires administrator privileges. To continue, either:
• run "wsl --install" in an administrative PowerShell, restart your computer, and re-run this installer; or
• re-run this installer and choose "All-users installation", which enables the feature for you.
Platform
Windows
Version information
Client:
Version: 29.8.2
API version: 1.56
Go version: go1.26.8
Git commit: 7fc2dff
Built: Wed Sep 30 19:35:42 2026
OS/Arch: windows/amd64
Context: desktop-linux
Server: Docker Desktop 4.94.0 (241994)
Engine:
Version: 29.8.2
API version: 1.56 (minimum version 1.40)
Go version: go1.26.8
Git commit: 8af9fe3
Built: Wed Sep 30 19:32:25 2026
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: v2.3.6
GitCommit: ee2735368117d2eb259779949d5e75cdafec9761
runc:
Version: 1.5.1
GitCommit: v1.5.1-0-g8f2685a4
docker-init:
Version: 0.19.0
GitCommit: de40ad0
Client:
Version: 29.8.2
Context: desktop-linux
Debug Mode: false
Plugins:
agent: Docker AI Agent Runner (Docker Inc.)
Version: v1.144.0
Path: C:\Users\MyUser\.docker\cli-plugins\docker-agent.exe
ai: Docker AI Agent - Ask Gordon (Docker Inc.)
Version: v1.31.0
Path: C:\Users\MyUser\.docker\cli-plugins\docker-ai.exe
buildx: Docker Buildx (Docker Inc.)
Version: v0.37.2
Path: C:\Users\MyUser\.docker\cli-plugins\docker-buildx.exe
compose: Docker Compose (Docker Inc.)
Version: v5.5.1
Path: C:\Users\MyUser\.docker\cli-plugins\docker-compose.exe
debug: Get a shell into any image or container (Docker Inc.)
Version: 0.0.47
Path: C:\Users\MyUser\.docker\cli-plugins\docker-debug.exe
desktop: Docker Desktop commands (Docker Inc.)
Version: v0.4.4
Path: C:\Users\MyUser\.docker\cli-plugins\docker-desktop.exe
dhi: CLI for managing Docker Hardened Images (Docker Inc.)
Version: v0.0.7
Path: C:\Users\MyUser\.docker\cli-plugins\docker-dhi.exe
extension: Manages Docker extensions (Docker Inc.)
Version: v0.2.31
Path: C:\Users\MyUser\.docker\cli-plugins\docker-extension.exe
init: Creates Docker-related starter files for your project (Docker Inc.)
Version: v1.4.0
Path: C:\Users\MyUser\.docker\cli-plugins\docker-init.exe
mcp: Docker MCP Plugin (Docker Inc.)
Version: v0.44.1
Path: C:\Users\MyUser\.docker\cli-plugins\docker-mcp.exe
model: Docker Model Runner (Docker Inc.)
Version: v1.2.6
Path: C:\Users\MyUser\.docker\cli-plugins\docker-model.exe
offload: Docker Offload (Docker Inc.)
Version: v0.6.53
Path: C:\Users\MyUser\.docker\cli-plugins\docker-offload.exe
pass: Docker Pass Secrets Manager Plugin (beta) (Docker Inc.)
Version: v0.2.4
Path: C:\Users\MyUser\.docker\cli-plugins\docker-pass.exe
sandbox: "docker sandbox" is deprecated, use Docker Sandboxes instead (Docker Inc.)
Version: v0.13.0
Path: C:\Users\MyUser\.docker\cli-plugins\docker-sandbox.exe
scout: Docker Scout (Docker Inc.)
Version: v1.25.0
Path: C:\Users\MyUser\.docker\cli-plugins\docker-scout.exe
Server:
Containers: 2
Running: 2
Paused: 0
Stopped: 0
Images: 2
Server Version: 29.8.2
Storage Driver: overlayfs
driver-type: io.containerd.snapshotter.v1
Logging Driver: local
Cgroup Driver: cgroupfs
Cgroup Version: 2
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local splunk syslog
CDI spec directories:
/etc/cdi
/var/run/cdi
Discovered Devices:
cdi: docker.com/gpu=webgpu
Swarm: inactive
Runtimes: nvidia runc io.containerd.runc.v2
Default Runtime: runc
Init Binary: docker-init
containerd version: ee2735368117d2eb259779949d5e75cdafec9761
runc version: v1.5.1-0-g8f2685a4
init version: de40ad0
Security Options:
seccomp
Profile: builtin
cgroupns
Kernel Version: 6.18.33.2-microsoft-standard-WSL2
Operating System: Docker Desktop
OSType: linux
Architecture: x86_64
CPUs: 4
Total Memory: 7.713GiB
Name: docker-desktop
ID: c64d4ed7-47ef-4973-a894-d480e2549466
Docker Root Dir: /var/lib/docker
Debug Mode: false
HTTP Proxy: http.docker.internal:3128
HTTPS Proxy: http.docker.internal:3128
No Proxy: hubproxy.docker.internal
Labels:
com.docker.desktop.address=npipe://\\.\pipe\docker_cli
Experimental: false
Insecure Registries:
hubproxy.docker.internal:5555
127.0.0.0/8
::1/128
Live Restore Enabled: false
Firewall Backend: iptablesDiagnostics ID
No response
Activity