> 现场不都是 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 版各拿各的,目标机什么都不用装,双击图标就出全屏画面;两个平台能看、能操作,能力一致。** 现场是什么系统,你就交付什么系统。