ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

Linux 运行 Windows 应用,靠一条 40 多行的脚本完成 Windows 服务自动化部署

Linux 运行 Windows 应用,靠一条 40 多行的脚本完成 Windows 服务自动化部署 Linux 运行 Windows 应用靠一条 40 多行的脚本完成 Windows 服务自动化部署【免费下载链接】winboatRun Windows apps on Linux with ✨ seamless integration项目地址: https://gitcode.com/GitHub_Trending/wi/winboatWinboat 让你在 Linux 桌面里像打开原生窗口一样运行 Windows 应用Windows 侧的全部组件由一条 40 多行的批处理脚本装好。这篇文章拆解开自动化部署的四步流程以及 nssm 注册服务的几个关键配置。场景切入手动装这套东西有多麻烦假设你刚重装了一台 Windows 来宾系统想让 Winboat 的 Linux 端连上它要装WinBoatGuestServer和WinBoatGuestServerUpdater两个服务每个都要单独指定工作目录、启动方式和运行账户手工敲sc命令配服务少敲一个参数就不启动而且错误提示基本等于没有Windows 默认防火墙拦截所有入站连接7148 端口不通Linux 侧等到的只有超时换个机器、或者重装系统上面全部重来一遍这些活没有一处值得靠脑子记。Winboat 把它们全部写进了 install.bat。Windows 服务一键部署脚本按顺序做了四件事第一步统一路径先把目录移出杀毒扫描脚本开头把所有路径收敛成变量比如安装目录固定为C:\Program Files\WinBoat。建好目录后它顺手把这个路径加进 Windows Defender 的排除列表——因为接下来要写入大量来宾二进制文件实时扫描一边扫一边写既拖慢速度还可能误报卡住安装。第二步xcopy 一次性搬完全部依赖运行所需文件预先放在C:\OEM里。一条命令xcopy %OEM_DIR%\* %WB_DIR%\ /Y /E把它们连同 server\、updater\ 这些子目录整体复制到安装目录/Y保证重复运行时不弹确认框全程无人值守。第三步用 nssm 注册两个 Windows 服务这是整个脚本的核心。nssm 能把普通 exe 包装成标准 Windows 服务服务机制自带依赖配置、崩溃自动拉起和开机自启这些是任务计划做不到的。Winboat 注册了两个服务WinBoatGuestServerAPI 服务监听 7148 端口WinBoatGuestServerUpdater自更新服务监听 7150 端口每个服务依次设置自动启动SERVICE_AUTO_START、工作目录AppDirectory、描述和运行账户四步之内全部就位。第四步放行端口、启动并挂上开机任务两条netsh命令分别放行 TCP 7148 和 7150随后nssm start直接拉起两个服务。最后schtasks创建 TimeSyncTask开机时以 SYSTEM 身份执行 time-sync.bat保持两侧时钟同步。关键配置拆解三个为什么值得停下看为什么用 xcopy /E 而不是 copycopy只处理当前层级的散文件子目录会整个丢。来宾服务依赖 server\ 和 updater\ 两套子目录结构/E是必须的下面这行就是全部依赖部署动作xcopy %OEM_DIR%\* %WB_DIR%\ /Y /E复制完成、覆盖静默装完就能跑。为什么运行账户选 NT AUTHORITY\SYSTEM普通用户账户有两个坑密码一改或者账户被禁用服务立刻启动失败权限也常不足以访问系统资源。SYSTEM 是内置账户不随任何用户密码变化权限足够适合需要长期静默运行的场景nssm set WinBoatGuestServer ObjectName NT AUTHORITY\SYSTEM为什么防火墙只放行两个端口不显式放行Linux 侧永远连不上 Windows 侧。但放行也不是越宽越好——Winboat 只开了它实际在用的 7148 和 7150 两条规则其余端口维持 Windows 默认拦截状态这是最小权限原则最省事的落法。 故障自查清单三类常见现象怎么查现象先跑什么往哪查nssm 安装服务失败对比 guest_server/nssm.sha1.txt 里的校验值和本地 nssm.exe 哈希再执行nssm.exe version可执行文件损坏或被替换Linux 端一直连不上netstat -ano \| findstr 7148看端口被谁占着端口被别的程序占用或防火墙规则没生效服务装上了但无响应nssm status WinBoatGuestServer再看winboat_guest_server.log工作目录指错位置、依赖文件缺失如果你是自己改过端口记得同步 src/renderer/lib/constants.ts 里的GUEST_API_PORT、防火墙规则和服务描述三处不一致时排查成本翻倍。 进阶定制两个实用小改动改安装路径要同步三处install.bat 里的WB_DIR变量、nssm 的AppDirectory、防火墙规则里的可执行文件路径。只改第一处服务能启动但找不到文件报错很难看。日志集中管理企业环境可以单独定义LOG_DIR再用nssm set WinBoatGuestServer AppStdout %LOG_DIR%\stdout.log把服务输出重定向到文件方便接集中监控。Go 写的来宾端源码都在 guest_server/ 目录里updater 带健康检查和自动回滚逻辑值得顺带一读。这条 40 多行的脚本给所有需要在 Windows 侧静默部署服务的场景提供了一个通用范式路径收敛为变量、标准工具批量复制、nssm 统一注册服务、端口按需放行。下次做类似集成时这套思路可以直接搬走。【免费下载链接】winboatRun Windows apps on Linux with ✨ seamless integration项目地址: https://gitcode.com/GitHub_Trending/wi/winboat创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表