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

Logo

鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。

更多推荐