12MB的完整收银系统:从编译到部署的全链路

12MB的完整收银系统:从编译到部署的全链路

老张买了一台Windows电脑,想装收银系统。
技术员说:“你需要先装MySQL,再装Nginx,再配SSL证书……”
老张打断:“能不能就复制个文件,双击运行?”

01 从Mac到Windows:一条命令

./scripts/start.sh build-win

产物:longxunpos-server.exe(12MB)+ LongxunPOS.Client.exe(155MB)。目标电脑零依赖。

02 三个关键技术

go:embed 嵌入Web前端

React管理后台编译时嵌入服务端exe,浏览器访问 http://127.0.0.1:8080/admin/ 即可使用。

纯Go SQLite

glebarez/sqlite 零CGO依赖,交叉编译一条命令。WAL模式支持读写并发。

自包含发布

C#客户端打包.NET运行时,目标机器不需要安装任何运行时。

03 部署就是复制文件

C:\LongxunPOS\
├── Server\
│   ├── longxunpos-server.exe    ← 双击启动
│   └── data\longxunpos.db       ← 自动创建
└── Client\
    └── LongxunPOS.Client.exe    ← 双击启动

首次启动自动创建数据库、迁移表结构、初始化种子数据(默认账号admin/admin123)。

04 配置:三层优先级

.env > 配置文件 > 代码默认值。默认配置就能跑,支付密钥按需填入 .env

05 数据备份

SQLite数据库就是一个文件,备份就是复制文件。设置Windows任务计划每天自动备份。

06 开机自启

用NSSM注册为Windows服务,开机自动启动。

07 内网部署

所有支付和核销采用主动轮询模式,不需要回调URL、不需要公网IP、不需要端口映射。

08 总结

技术决策 效果
go:embed 单exe包含Web前端
纯Go SQLite 零CGO,交叉编译一条命令
自包含发布 目标机器零依赖
WAL模式 读写并发
种子数据 启动即用
.env优先级 默认能跑,密钥按需填
主动轮询 不需要公网IP

12MB的exe,从Mac一条命令编译,到Windows双击运行,3秒启动。

这就是"开箱即用"的工程实现。


系列完结。感谢阅读!