Skip to content

Bug in 4.95.0 installer: VirtualMachinePlatform check hard-blocks functional Per-User updates/installations on Windows 11 #757

Open

Description

@SwankyLynx

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

  1. Have a Windows 11 (Pro) machine with Hardware Virtualization enabled in BIOS.
  2. Deploy and manage WSL 2 natively via wsl --install (where legacy Windows Optional Features checkboxes remain unchecked/disabled).
  3. Confirm that Docker Desktop version 4.94.0 and WSL 2 run perfectly fine.
  4. Try to update to Docker Desktop 4.95.0 using the built-in self-update tool. It fails with a generic error.
  5. 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: iptables

Diagnostics ID

No response

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions