Files
order_system/packaging/win7/README_WIN7.md
T

6.9 KiB
Raw Blame History

Windows 7 服务器离线打包说明

本包用于在你的 Windows 7 服务电脑上,从 v4 源码生成 EXE。包括 Python 3.8.10 官方完整安装程序、32 位与 64 位离线依赖、构建脚本、环境与业务自检,以及现有 16 页使用升级手册。

2026-09-17 排版更新:采购专用章直径增加 30%,固定在右侧需方签章空位;供方和需方签章区之间留出 20 毫米间隔。采购单与委外订单均已调整,示例见 samples/。本次 PDF 模板版本为 po-v4。

升级后新审批生成的正式 PDF 使用新排版。已审批归档的 PDF 保留原版;需要采用新版的订单,请通过系统的“变更重审”流程重新审批。使用本包重新解压、安装环境并生成 EXE 后,按下文备份和替换服务程序。

1. 先确认系统

  • 在“计算机”上点右键 → “属性”,确认是 Windows 7 Service Pack 1,并查看系统类型是 32 位还是 64 位。脚本会自动按系统类型选择对应安装程序和依赖。
  • Python 3.8 需要 Windows 7 的 KB2533623 或替代更新(如 KB3063858)所提供的 DLL 加载支持,以及 Universal C Runtime。安装 Python 时若提示系统补丁、运行库或重启,请先按提示补齐。补丁可能需要网管从微软获取,本包不自动更改系统补丁或防火墙。
  • 建议把整个压缩包解压到较短的固定路径,例如 C:\PO_Win7Build。不要在压缩软件内直接运行脚本,也不要放到正在保存正式订单的目录中。
  • 本包按 Win7 兼容依赖制作,当前电脑上的验证不等同于真实 Win7 验收;在目标服务器打包和自检通过后再投入使用。Win7 与 Python 3.8 已结束官方维护,按公司局域网范围部署。

2. 两步生成 EXE

  1. 双击 01_install_env.cmd。
    • 使用包内 Python 3.8.10 安装程序;安装到包内 .python38,不把它加入系统 PATH,也不替换其他 Python 版本。
    • 从本包 wheels/x64 或 wheels/x86 离线安装到 .buildenv,不连接 pip 源、不临时升级依赖。
    • 自动检查密码哈希、中文 PDF、制单审批、部分/全部付款交货、Excel 台账和 HTTP 服务。自检仅使用临时数据库,通知不开启。
    • 看到 SETUP COMPLETE 后关闭窗口。失败时保留报错内容。
  2. 双击 02_build_exe.cmd。
    • 再次核对文件校验值、Python 与依赖版本,然后构建单文件程序。
    • 打包期间可能数分钟没有新输出;详细日志在 build/时间-位数/build.log。
    • 生成后自动在隔离目录启动一次 EXE,检查登录与初始化入口,并关闭该测试进程。
    • 看到 BUILD COMPLETE 后,在 dist/时间-位数/ 取出 PO_Server_Win7.exe。同目录还有 BUILD_INFO.json 和使用说明。

32 位 Windows 生成 32 位 EXE,64 位 Windows 生成 64 位 EXE。每次构建写到新的日期目录,不覆盖已有程序或业务数据。请保持本包原始源码及依赖不变,才能通过校验;需要修改源码时由维护人员重新制作本包。

3. 在服务器上使用

把生成的 EXE 放入固定服务目录,例如 D:\PO_Server,双击运行,按窗口显示的端口访问。首次部署时在此目录的 instance/setup.token 查看初始化口令。原系统升级时,先停机并完整备份,再替换程序,保留原 instance、uploads、exports;设置过 PO_DATA_DIR 的继续指向原数据目录。

同局域网的员工电脑和手机继续用浏览器访问服务电脑的内网 IP 与实际端口,例如 http://192.168.1.100:8080。建议在员工的较新电脑或手机上操作页面;服务电脑只负责运行 EXE,Win7 自带的 IE 不是本项目已验收浏览器。

首次正式使用前,至少用两个不同账号完成:创建测试订单 → 提交 → 审批盖章 → 下载中文 PDF → 登记部分和全部付款/交货 → 重启程序确认数据仍在。企业微信另按手册第 10-12 页配置并在真实公司 Wi-Fi 下验证。测试完成前,不删除旧程序和原数据备份。

4. 常见问题

现象 处理
Python 安装提示需要 SP1、更新或重启 先检查 Windows 7 SP1、DLL 加载更新及 UCRT。完成更新并重启,再运行第一个脚本
缺少 api-ms-win-crt、VCRUNTIME140、找不到程序入口点 检查系统运行库和更新;若自检提示具体 DLL,保留完整名称及错误信息。不要从陌生网站下载单个 DLL 覆盖系统目录
文件校验失败 重新完整解压本包;确认杀毒软件没有隔离文件、源码和 wheels 未被修改
路径过长、权限不足 重新解压到较短、可写的本地路径。不要移动已经建立的 .buildenv,在新目录重跑第一个脚本
自检密码或 PDF 失败 保留完整错误及依赖信息,暂不部署。包内检查包括新版账号 scrypt 哈希及本机中文字体加载
打包失败 查看新建的 build/时间-位数/build.log;不要改用普通 requirements-build.txt,它用于较新的 Windows/Python
EXE 自检失败 不替换正式服务;检查错误内容、系统补丁和杀毒隔离记录
本机可用,手机打不开 按手册核对实际 IP、端口、公司 Wi-Fi 和防火墙。通知配置中的地址也要同步

5. 兼容依赖与维护说明

本包使用主线 v4 业务源码,并包含上述 PDF 排版更新。兼容依赖完全固定,使用 Python 3.8.10、PyInstaller 5.13.2、Flask 3.0.3、Werkzeug 3.0.6、SQLAlchemy 2.0.44、ReportLab 4.2.5、Pillow 10.4.0 等。完整列表在 win7/requirements-win7.txt。

Waitress 使用本项目的 3.0.2+win7.1 兼容 wheel。HTTP 服务及安全修复代码与官方 3.0.2 保持逐字节一致,仅为命令行入口的名称解析增加 Python 3.8 回退,并修改版本元数据、重算 wheel 校验记录;原许可证保留。这样保留 3.0.1/3.0.2 的修复,没有降到旧的 3.0.0。上游官方支持范围仍为 Python 3.9+,这是本项目单独测试维护的兼容组合,不代表上游承诺 Win7 支持。原始 wheel 和重打包脚本随包提供。

PACKAGE_INFO.json 记录源代码提交与验证范围;SHA256SUMS.json 记录本包文件校验值。构建输出的 BUILD_INFO.json 记录实际操作系统、Python、位数和 EXE SHA-256。最终以你的服务器上的自检和现场流程验收为准。

官方参考

现有 PDF 手册描述 v4 常规 Windows 64 位版本的操作流程。Win7 安装及打包环境以本文件为准,无需按通用手册安装 Python 3.11 或 PyInstaller 6。