
在 Linux 上运行 Windows 应用Winboat 4 个关键组件与 5 步安装指南【免费下载链接】winboatRun Windows apps on Linux with ✨ seamless integration项目地址: https://gitcode.com/GitHub_Trending/wi/winboat在 Linux 桌面上双击应用列表里的“计算器”一个 Windows 计算器窗口弹出来你能把它拖到任意位置——而你的 Linux 主机甚至感觉不到虚拟机的存在。WinBoat 就像一艘趴在水面下的潜艇Windows 整个跑在 Docker 容器里只有应用窗口探出水面出现在你的 Linux 桌面上。 原理拆解组成 WinBoat 的 4 个关键组件它的运行逻辑很直接Windows 作为虚拟机跑在 Docker/Podman 容器内Linux 端界面通过一组固定端口与客端通信。看懂下面 4 个组件就懂了整套东西。服务注册脚本 install.batinstall.bat 在 Windows 客端首次启动后自动执行用 nssm.exe 把WinBoatGuestServer和WinBoatGuestServerUpdater两个程序注册为系统服务并用 netsh 放行入站端口。为什么要注册成服务而不是普通进程服务以 SYSTEM 身份运行、崩溃自动拉起Linux 端随时都有 API 可调。%NSSM% install WinBoatGuestServer %WB_DIR%\server\winboat_guest_server.exe %NSSM% set WinBoatGuestServer Start SERVICE_AUTO_START netsh advfirewall firewall add rule nameAllow WinBoat API 7148 dirin actionallow protocolTCP localport7148客端 API winboat_guest_servermain.go 是一个监听:7148的 HTTP 服务暴露/apps、/metrics、/health、/rdp/status四个端点。Linux 没法直接摸到虚拟机里的进程WinBoat 就把 PowerShell 脚本如 apps.ps1包成 REST 接口Windows 里装了什么应用以 JSON 形式端给界面渲染。端口映射 constants.tsconstants.ts 定义了宿主机与客端的全部端口对应关系且全部只映射到127.0.0.1——容器里的 Windows 不会把端口直接暴露到局域网。宿主机一侧占用的是 WinBoat 预留的 47270–47279 区段。export const GUEST_API_PORT 7148; export const HOST_API_PORT 47271; // API宿主机 47271 - 客端 7148 export const HOST_RDP_PORT 47273; // RDP宿主机 47273 - 客端 3389更新入口 updaterupdater 监听:7150接收不超过 100 MiB 的 ZIP 包来替换WinBoatGuestServer失败自动回滚。它校验请求必须来自回环地址、且头里带着安装时生成的共享密钥guest_token见 auth.go。updater 自身是“永不被更新”的独立服务——主服务出了坏版本也总有通道修它。️ 动手实操从零到跑起 Windows 应用的 5 个步骤第 1 步核对前提条件。BIOS/UEFI 开启 KVM内存至少 4 GB、CPU 至少 2 核、磁盘留 32 GB装 DockerDocker Desktop 不受支持或 Podman 4.x 及对应 compose 工具FreeRDP 需 3.x 版本且带声音支持。第 2 步装好主程序。可直接取 AppImage/.deb/.rpm 包也可以从源码构建git clone https://gitcode.com/GitHub_Trending/wi/winboat cd winboat bun i bun run build:linux-gs做完后你应该看到dist目录下出现 AppImage 和linux-unpacked/winboat可执行文件。第 3 步向导里选版本。版本列表来自 constants.ts 的WINDOWS_VERSIONSWindows 11 Pro / LTSC 2024 / Enterprise、Windows 10 Pro / LTSC 2021 / Enterprise或自定义 ISO同时设置内存最低 2 GB、建议 4 GB、核心数与磁盘≥32 GB。做完后你应该看到进度条依次经过“Creating Compose File → Starting Container → Installing Windows”。第 4 步等客端服务起来。Windows 开机后 install.bat 自动执行注册两个服务并放行 7148/7150。做完后你应该看到主界面应用列表不再是空的——这份列表正是从客端/apps端点拉取的。第 5 步启动 Windows 应用。双击任一应用FreeRDP 通过127.0.0.1:47273连到客端建立 RemoteApp 会话窗口被合成为 Linux 原生窗口。做完后你应该看到程序没有 RDP 外框可以和 Chrome、VS Code 一起摆在同一工作区。 进阶定制3 处可以改的地方install.bat改WB_DIRC:\Program Files\WinBoat为其他路径 → Windows 内整个客端安装目录跟着移动Defender 排除规则也随同变量变化。RDPApps.reg含 4 条注册表调整fDisabledAllowList1让所有应用都能经 RemoteApp 启动IgnoreRemoteKeyboardLayout1让会话使用服务端键盘布局 → 决定能拉起哪些程序、会话内键盘布局如何。constants.ts把HOST_API_PORT等47270–47279 区段改成其他空闲端口 → 只影响宿主机侧监听端口客端仍是 7148用于解决与本机其他服务的端口冲突。一句话总结Winboat 适合需要偶尔跑特定 Windows 软件、又不想装双系统的 Linux 用户项目处于 beta会遇到一些坑。细节请以仓库内 README 为准。【免费下载链接】winboatRun Windows apps on Linux with ✨ seamless integration项目地址: https://gitcode.com/GitHub_Trending/wi/winboat创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考