7.1 KiB
采购订单系统:Win7 服务器版本更新操作手册
适用版本:2026-10-14 工单更新包(源码提交 4aaa6c6)
适用场景:一台 Windows 7 SP1 电脑运行 PO_Server_Win7.exe,员工在公司局域网内用电脑或手机访问。
操作原则:先在独立目录打包并完成自检,再停旧服务、备份数据、替换 EXE。 整个公司只运行一个正式服务实例。
开始前:确认这三件事
- 确认正在运行的 EXE 所在目录,记为“正式服务目录”,例如
D:\PO_Server。记录员工实际访问的内网地址和端口、当前 EXE 文件名、是否通过快捷方式或开机任务启动。 - 确认数据目录。未设置
PO_DATA_DIR时,数据在正式 EXE 同目录的instance、uploads、exports;若设置过PO_DATA_DIR,数据在该变量指定的目录。最重要的数据库是instance\po.db。不要把新包中不存在的空数据目录当成旧数据。 - 安排维护时间,通知正在制单、审批的同事先保存并退出。更新期间所有电脑和手机都暂时无法访问系统。
本次工单更新不改数据库表结构,也不重新生成历史已审批 PDF。若从更早版本跨级升级,程序启动时仍可能执行旧版本所需的数据库迁移;因此备份步骤不能省略。
一、在服务器上生成新 EXE(旧服务保持运行)
-
把
PO_Win7_SourceBuild_v4_20261014_issue1.zip复制到服务器,完整解压到一个新目录,例如C:\PO_Win7Build_20261014。不要覆盖以前的打包目录,也不要解压到正式服务目录。压缩包的 SHA-256 为:77e199eb20a80313845d1729d867a98f73ca7c21172ab0a83357ddea260565dc -
如果上一个包已成功使用 Python 3.8.10,保留上一个包所在目录。新包会尝试复用可用的 Python。必要时在新包根目录新建
python_path.txt,只填旧python.exe的完整路径,例如C:\旧打包目录\.python38\python.exe。 -
在新包根目录双击
01_install_env.cmd,等待出现SETUP COMPLETE。失败时查看logs\setup-时间.log,不要继续替换正式程序。系统若要求重启,先重启后再运行。 -
双击
02_build_exe.cmd,等待出现BUILD COMPLETE。新程序位于新包的dist\日期-位数\PO_Server_Win7.exe;同目录BUILD_INFO.json记录打包机器、源码提交和 EXE 哈希。出现BUILD FAILED时保持旧服务运行,查看build\日期-位数\build.log。
打包脚本在隔离的临时目录自检,不使用正式订单数据库。生成 EXE 后才进入停机窗口。
二、停机、备份、替换
- 在服务器上关闭旧 EXE 的命令窗口或按原有服务管理方式停止,确认原内网地址暂时无法打开。不要让新旧 EXE 同时访问同一个
po.db。 - 在另一块硬盘或另一台受信任电脑上建立带日期时间的备份文件夹,例如备份介质上的
PO_Backup\20261014-1430。把正式服务目录完整复制进去,至少包含旧 EXE、instance、uploads、exports。若使用PO_DATA_DIR,还要把该变量指向的整个数据目录单独复制进去。备份后确认备份目录内能找到instance\po.db,并保留旧 EXE 与备份配套。 - 如果服务器另有完整项目源码及 Python,可再运行
python tools\backup_db.py --data-dir "实际数据目录"做一次 SQLite 一致性备份。离线打包包不包含该工具;停机后的完整目录副本是必需的回退备份,必须放在服务目录之外。 - 把新建的
PO_Server_Win7.exe复制到原正式服务目录。先把旧 EXE 改名为PO_Server_Win7_old_日期.exe,再把新 EXE 命名为原来启动方式指向的文件名。只替换 EXE,不替换、不删除instance、uploads、exports,也不要复制新包中的空目录过去。 - 如果原来设置了
PO_DATA_DIR、PO_HOST、启动端口参数或开机任务,继续使用原配置和同一个数据目录。按原方式启动新 EXE,查看窗口是否显示“已启动”和实际端口。默认端口是 8080;被占用时会尝试后续端口,因此必须核对窗口显示的端口。若端口意外改变,先检查旧进程是否仍在运行。
三、验收后恢复使用
- 用服务器本机浏览器打开
http://127.0.0.1:实际端口;再用一台员工电脑和一部连接公司 Wi-Fi 的手机打开原内网地址。确认能登录,且不出现首次初始化页面。若出现要求重新初始化,请立即停止新 EXE,检查数据目录是否指向旧instance\po.db,不要继续新建管理员。 - 核对最近订单的单号、供应商、审批记录、付款/交货状态,并下载一份已审批的历史 PDF;历史 PDF 内容应保持原样。
- 核对本次新功能:供应商搜索;新建订单选供应商;编辑订单搜索物料;订单列表按物料查历史订单、复制下单;工作台的“未交付”“已交付已收票待付款”“已完成”和“其他待跟进”。复制订单会清空旧交期,新单需重新填写并核对单价。
- 由管理员在“物料库”按业务需要点击一次“同步历史审批价”,把升级前已审批订单的物料单价补录到物料库。该操作会更新物料库默认价,不会修改历史订单或归档 PDF;执行前先确认已完成备份,完成后抽查几种常用物料。
- 如已启用企业微信通知,用一张明确标为测试的订单,在业务负责人知情下验证审批群消息和公司 Wi-Fi 内手机审批。不要把生产群通知当成打包自检的一部分。确认原内网地址、端口和通知配置仍正确。
- 验收通过后,通知同事恢复使用。保留旧 EXE、升级前数据备份和新包,至少到完成一轮正常业务核对后再按公司备份制度处理。
四、失败时回退
- **新 EXE 无法启动,且没有产生新业务数据:**停止新 EXE;把本次停机前备份的服务目录及独立数据目录恢复到原位置;用原启动方式运行旧 EXE,核对原订单和登录。不要只换回旧 EXE,却让它继续使用已被新版迁移的数据库。
- **新 EXE 已产生订单、审批、付款或通知:**先停止服务并保存当前目录的副本,记录新业务和已发送的通知,再由业务负责人决定如何迁移或补录。直接恢复旧数据库会丢失升级后的记录;恢复旧通知队列还可能造成重复推送。
- **出现首次初始化页面或订单为空:**这通常表示程序连接到了另一个数据目录。立即停止,检查
PO_DATA_DIR、EXE 所在目录和instance\po.db,不要在空库上继续操作。 - **新服务跑到 8081 等端口:**先核对旧进程是否完全退出,以及端口是否被其他程序占用。员工网址和企业微信通知中的内网地址应以最终实际端口为准。
本手册用于正式服务器版本替换。首次安装、Win7 环境故障和企业微信配置细节见同包 README_WIN7.txt 及现有使用升级手册。Win7 现场打包、局域网访问和真实企业微信发送仍需在目标服务器实际验收。