鲲鹏恒控的跨平台交付 —— Windows 上组态,Linux 上运行

> 现场不都是 Windows。国产化替代、客户指定 Ubuntu、车间那台老工控机装的是 Linux...... 鲲鹏恒控现在**同一个工程,编译时选平台**:Windows 运行程序、Linux 运行程序各出一份。**编辑器还在 Windows 上,交付不再只有 Windows 一条路。**

【配图:编辑器"编译"对话框 ------ 平台选择(Windows 运行程序 / Linux 运行程序)+ 输出目录】


一、编译时选平台 ------ 一个工程,两份交付

在编辑器里点"编译"(F7),先选目标平台再编:

  • **选 Windows** → 出原来的 Windows 运行程序(`.exe`),配方一字未动。

  • **选 Linux** → 出 Linux 运行程序(原生可执行文件),和 Windows 包**同源、同工程、同画面**。

两个平台的产物目录带不同后缀、**互不覆盖** ------ 同一个工程,今天编个 Windows 版给 A 客户,明天编个 Linux 版给 B 客户,画面、点表、脚本、报警一律通用,**不用维护两份工程**。


二、Linux 上长什么样 ------ 全屏 kiosk,就是"现场上位机"的样子

Linux 版不是"开个浏览器输网址",那没有交付软件的样子。它是一个**独立的运行程序**:

  • 启动后自动以**全屏 kiosk** 拉起界面 ------ 无地址栏、无标签页、无浏览器痕迹,整屏只有你的监控画面,和 Windows 版的无边框全屏**同一口径**。

  • 画面由系统浏览器(Chromium / Firefox)渲染,数据走**本地回环**的 WebSocket 真桥 ------ 服务只绑定 `127.0.0.1`,端口被占自动顺延,**不对外开网络端口**。

  • 需要调试?加 `--windowed` 参数退回普通窗口;想指定浏览器?`--browser` 参数说了算。

现场操作员看到的就是一台"只会跑监控画面"的机器 ------ 按 `Alt+F4` 退出。

【配图:Linux 真机全屏运行画面 ------ 整屏监控界面,无地址栏/标签页】


三、目标机什么都不用装

Linux 交付包是**自包含**的:目标机器**无需安装 .NET、无需配运行环境**,拷过去就能跑。包里该有的都有:

| 内容 | 说明 |

|---|---|

| 运行程序(原生可执行) | 自包含,连运行时都带着 |

| `wwwroot\` | 画面资源,放在程序旁自动找到 |

| `start.sh` / `stop.sh` | 启动 / 停止脚本(文件名故意用 ASCII ------ 中文名经 U 盘、共享目录拷贝易乱码) |

| 双击启动图标 | `.desktop` 图标 + 一键安装脚本,**双击就能启动**,也能装进应用列表 |

| `使用说明-Linux.txt` | 给现场工程师的部署说明 |

解压 → 双击图标(或 `./start.sh`)→ 出画面。完事。

【配图:Linux 交付包目录结构 + 桌面双击图标】


四、为什么敢做 ------ 数据链路天然跨平台,老交付链一行没动

这不是"硬凑"出来的跨平台,是架构本来就走在了对的路上:

  • **采集、实时库、脚本、报警、历史、转发 ------ 整条数据链路零 Windows 专有调用**。组态软件最要紧的"数据跑得住",在 Linux 上就是原样能跑。

  • **前后端分离**早就做了:后端是无头内核,前端是 HTML/SVG。Linux 版只是把"渲染宿主"从 WebView2 换成系统浏览器,画面渲染逻辑一行没改。

  • **Windows 交付链零改动**:Windows 分支就是原来的发布函数,函数体一字未动;Linux 是**新增**的独立分支和打包脚本。老用户的东西,我们不碰。


五、不是"PPT 功能" ------ 实测过

跨平台最容易被做成"理论上支持"。我们拿 Linux 真环境跑过全链路(Ubuntu 22.04,2026-10-08):

| 验证项 | 结果 |

|---|---|

| Linux 原生运行程序 | ✅ 原生可执行文件直接运行(非模拟、非转译) |

| 采集 / 脚本 / 报警 | ✅ 液位温度持续变化,高位报警照常触发 |

| 浏览器渲染运行画面 | ✅ 登录 → 画面 → 数值实时跳动 |

| JS 控制台 | ✅ 零报错、零警告 |

| 全屏 kiosk | ✅ 实测 `fullscreen`,整屏无浏览器痕迹 |

| 编辑器内编 Linux 包 | ✅ 端到端回归测试真跑一次发布,产物数百文件、百余 MB,关键文件逐项自检 |

**并且把"编辑器编 Linux 包"钉进了自动化回归** ------ 每次发版都会真编一次 Linux 包、验产物形状,不会悄悄坏掉。


六、v0.4 补上:Linux 运行程序,和 Windows 一样能操作

跨平台交付一开始做到的是"Linux 上能看、能显示"。这一版把最后一段补齐了:

  • **运行态真下发**:运行窗口里的按钮、开关、滑块、输入框,在 Linux 上同样能把值**写到 PLC / 设备** ------ 和 Windows 版一致。

  • **登录门控**:要不要登录、谁能操作,同样由你摆不摆登录元件决定 ------ 两个平台同一套规则。

也就是说,同一个工程编译出的 Windows 版和 Linux 版,**能看、能操作、能控权限,能力完全对齐**。交出去,不用再想"这个功能 Linux 上有没有"。


七、如实交代(边界与建议)

我们习惯把话说全,不夸大:

  • **编辑器本身仍只在 Windows 上跑**(组态端用了 WPF + WebView2,这是有意的技术选型)。跨平台交付的是**运行程序**,"Windows 上组态、两平台运行"。

  • **现场浏览器建议装 Chromium**:Firefox 若已有实例在跑,kiosk 全屏会不生效(它会开个新标签页);snap 版 Firefox 还有更多坑。装个 Chromium,一切安好。

  • **Linux 上转发令牌 / 邮件密码存的是明文**(Windows 上有系统级加密,Linux 没有等价物)------ 适用于内网隔离场景,这条我们在持续改进。

  • **串口设备**需要目标机当前用户有串口权限(`dialout` 组),一行命令的事,说明里写了。

  • 已实测 x64(Ubuntu 22.04);arm64 / 其他发行版按需加。


八、一句话总结

**在 Windows 上把工程搭好,编译时选平台 ------ Windows 版、Linux 版各拿各的,目标机什么都不用装,双击图标就出全屏画面;两个平台能看、能操作,能力一致。** 现场是什么系统,你就交付什么系统。

相关推荐
涛声依旧-底层原理研究所10 小时前
可控执行系统:企业 Agent 从演示到生产的架构重构
人工智能·架构
Data-Miner10 小时前
不本地部署,大模型怎么安全用?
大数据·人工智能·安全
zwc321043205510 小时前
Day 5:threshold与inRange阈值分割
c++·图像处理·人工智能·opencv·算法·计算机视觉
johnsong10 小时前
AI前沿日报 · 2026-10-30 | 重构时刻——当基础设施开始重新洗牌
人工智能·重构
呆呆敲代码的小Y10 小时前
【实战精选面试题】Unity精选面试题详细解答,按模块整理汇总
人工智能·游戏·unity·游戏引擎
意图共鸣10 小时前
意图共鸣科技 · 时间胶囊(五)|认知中间层:设计思路与《认知律》
人工智能
深蓝AI13 小时前
10 万星投给了记忆:claude-mem 把编码 Agent 的断片压进 SQLite,值不值得装
人工智能·程序员
limuyang218 小时前
我在 2核2G 云主机上跑 OpenViking:一次关于云主机、模型选型与长期成本的真实复盘
人工智能·开源·ai编程
Shulex19 小时前
跨境电商 AI Agent 核心架构解析:从只读问答到自主执行的工程落地
人工智能·架构·智能客服·跨境电商