You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Windows Docker容器中启用开发者模式以构建Flutter Windows应用

问题

尝试在Windows主机的Windows Docker容器(mcr.microsoft.com/windows/servercore:ltsc2019)中构建Flutter Windows应用,执行flutter build windows时报错:

Building with plugins requires symlink support.

Please enable Developer Mode in your system settings. Run
start ms-settings:developers
to open settings.

已尝试通过修改注册表项HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\AppModelUnlock\AllowDevelopmentWithoutDevLicense和AllowAllTrustedApps启用开发者模式,但无效。当前Dockerfile内容如下:

FROM mcr.microsoft.com/windows/servercore:ltsc2019

# Use admin
USER ContainerAdministrator

# Download the Build Tools bootstrapper.
ADD https://aka.ms/vs/17/release/vs_buildtools.exe vs_buildtools.exe
# Install Build Tools with the Microsoft.VisualStudio.Workload.VCTools workload
RUN (start /w vs_buildtools.exe --quiet --wait --norestart --nocache \
    --installPath "%ProgramFiles(x86)%\Microsoft Visual Studio\2022\BuildTools" \
    --add Microsoft.VisualStudio.Workload.VCTools \
    --add Microsoft.VisualStudio.Component.VC.CMake.Project \
    --add Microsoft.VisualStudio.Component.VC.Tools.x86.x64 \
    --add Microsoft.VisualStudio.Component.Windows11SDK.22621 \
    --add Microsoft.VisualStudio.Component.Windows10SDK.20348 \
    || IF "%ERRORLEVEL%"=="3010" EXIT 0)
# Cleanup
RUN del /q vs_buildtools.exe

# Install ninja-Build
ADD https://github.com/ninja-build/ninja/releases/download/v1.11.1/ninja-win.zip ninja.zip
RUN powershell Expand-Archive C:\ninja.zip -DestinationPath C:\ninja; \
    && setx path "%path%;C:\ninja" \
    && del /q ninja.zip

# Install mariadb-connector-c
ADD https://dlm.mariadb.com/2862619/Connectors/c/connector-c-3.3.4/mariadb-connector-c-3.3.4-win64.msi mariadb-connector-c.msi
RUN msiexec.exe /i "mariadb-connector-c.msi" /qn /norestart \
    && del /q mariadb-connector-c.msi

# Install git
ADD https://github.com/git-for-windows/git/releases/download/v2.40.1.windows.1/MinGit-2.40.1-64-bit.zip MinGit.zip
RUN powershell Expand-Archive C:\MinGit.zip -DestinationPath C:\MinGit; \
    && setx /m PATH "%PATH%;C:\MinGit\cmd" \
    && del /q MinGit.zip
# Fix flutter "Error: Unable to find git in your PATH."
RUN git config --system --add safe.directory "*" \
    && git config --system http.sslcainfo 'C:\MinGit\mingw64\etc\ssl\certs\ca-bundle.crt' \
# RUN git config --system http.sslcainfo 'C:\MinGit\mingw64\ssl\certs\ca-bundle.crt'
    && git config --system http.sslverify false

# Install Google Root R1 cert so pub.dartlang.org stays working
ADD https://pki.goog/repo/certs/gtsr1.pem C:/TEMP/gtsr1.pem
RUN powershell.exe -Command \
        Import-Certificate -FilePath C:\TEMP\gtsr1.pem -CertStoreLocation Cert:\LocalMachine\Root

# Install Flutter
ADD https://storage.googleapis.com/flutter_infra_release/releases/stable/windows/flutter_windows_3.10.0-stable.zip flutter.zip
RUN powershell Expand-Archive C:\flutter.zip -DestinationPath C:\; \
    && setx /m path "%PATH%;C:\flutter\bin;C:\flutter\bin\cache\dart-sdk\bin;" \
    && del /q flutter.zip

# Restore default user
USER ContainerUser

# Enable developer mode
RUN REG ADD "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\AppModelUnlock" /t REG_DWORD /f /v "AllowDevelopmentWithoutDevLicense" /d "1"
RUN REG ADD "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\AppModelUnlock" /t REG_DWORD /f /v "AllowAllTrustedApps" /d "1"

# Setup flutter
RUN flutter config --no-analytics
RUN flutter --disable-telemetry
RUN dart --disable-analytics
RUN flutter config --enable-windows-desktop
RUN flutter doctor

ENTRYPOINT [ "cmd" ]
CMD [ "cmd" ]
解决方案

问题根源在于Windows容器默认不支持创建符号链接,仅修改注册表无法解决,需从以下几个方面调整:

  • 调整注册表修改时机与权限
    将修改注册表的操作提前到切换回ContainerUser之前,用ContainerAdministrator权限执行,确保注册表项修改生效。同时添加启用符号链接支持的关键注册表项:

    RUN REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\FileSystem" /t REG_DWORD /f /v "EnableLinkedConnections" /d "1"
    RUN REG ADD "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\AppModelUnlock" /t REG_DWORD /f /v "AllowDevelopmentWithoutDevLicense" /d "1"
    RUN REG ADD "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\AppModelUnlock" /t REG_DWORD /f /v "AllowAllTrustedApps" /d "1"
    
  • 启动容器时添加符号链接权限
    运行容器时必须添加--privileged参数,确保容器拥有足够权限创建符号链接:

    docker run --privileged -it <你的镜像名称>
    
  • 临时跳过符号链接检查(可选)
    如果上述配置仍有问题,可临时用以下命令跳过符号链接检查(不推荐长期使用):

    flutter build windows --no-symlink
    
  • 更新容器镜像
    确保使用的servercore:ltsc2019镜像为最新版本,避免因系统组件缺失导致的符号链接支持问题。

内容的提问来源于stack exchange,提问作者enwi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 07:17:05