Files
order_system/packaging/win7/README_WIN7.md
T

11 KiB
Raw Blame History

Windows 7 服务器离线打包说明

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

2026-10-14 工单更新:供应商可按名称、简称和编号搜索;订单编辑及物料库可按物料代码、规格搜索。订单列表可按物料搜索历史订单,匹配明细显示在订单下方,已完成订单也会出现在搜索结果中;可从列表复制旧订单,新交期需重新填写。订单审批通过时将有代码且可明确匹配的物料单价更新到物料库,精度保留四位小数;管理员可在物料库手动“同步历史审批价”,用旧的已审批订单补录价格。选物料时先参考同供应商、当前账号可见的最近审批价。工作台增加“未交付”“已交付已收票待付款”“已完成”三类入口,未收票或待核对的订单在“其他待跟进”。这些改动不增加数据库结构版本;原 PDF 使用手册页面截图可能与新入口位置不同,以新版界面及本段说明为准。

安装脚本修复:新版解压到另一文件夹时,先检查本包及系统登记的 Python 3.8.10,确认位数和运行正常后复用;不再仅因新目录没有 .python38 就重复安装。只有找不到可用环境时才运行官方安装器。安装器错误码、依赖安装及自检输出会保存在 logs/。

2026-09-17 工作台更新:突出“需预付款”“已收票待付款”“已付款未交齐”“变更后待核对”。待跟进订单先按处理类别排列,同类较早订单优先;付款、交货、收票均完成后默认收起,仍可通过筛选查看。付款和交货分别显示三档状态;“未登记”和变更前待核对记录单独提示,不换算虚假的完成百分比。

在工作台或订单列表点击“登记收票 / 交货”“登记付款”,可直接在弹窗中保存,无需进入订单详情。制单员登记自己的采购跟进,审批员登记付款,管理员可登记两者。弹窗保存后保留当前筛选;如果其他人已更新订单,会提示重新读取并核对状态,避免覆盖。订单详情顶部显示最近经办人、时间和备注。手机端订单自动排成卡片。本次不增加业务字段,不改变已有审批或 PDF 归档;原 PDF 手册中工作台截图为旧布局,操作以本段说明及新版页面为准。

2026-09-17 文件名更新:在“供应商管理”的新增或编辑窗口填写“公司简称”,PDF 文件名即为“采购单_订单号_简称.pdf”(委外单使用对应类型名称);未填写简称时使用供应商全名。已审批订单重新下载也使用新文件名,归档 PDF 内容不变,无需重新审批。Excel 模板新增末列“公司简称”,旧表缺少该列时保留原简称。本次启动会先备份数据库,再升级到数据库结构版本 5,新增简称字段。

2026-09-17 排版更新:公司抬头从 12.5 磅加大到 20 磅,保持黑体居中。采购专用章直径增加 30%,固定在右侧需方签章空位;供方和需方签章区之间留出 20 毫米间隔。采购单与委外订单均已调整,示例见 samples/。本次 PDF 模板版本为 po-v5。

升级后新审批生成的正式 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,请保留该文件夹,以便后续打包;生成的 EXE 运行不依赖该 Python 环境。
    • 从本包 wheels/x64 或 wheels/x86 离线安装到 .buildenv,不连接 pip 源、不临时升级依赖。
    • 自动检查密码哈希、中文 PDF、制单审批、部分/全部付款交货、Excel 台账和 HTTP 服务。自检仅使用临时数据库,通知不开启。
    • 看到 SETUP COMPLETE 后关闭窗口。失败时查看并保留 logs/setup-时间.log;运行过安装器时还会有 logs/python-installer-时间.log 及其子日志。返回码 3010 或 1641 表示需要先重启电脑。
  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. 常见问题

现象 处理
旧包可以安装,新包刚开始就提示 SETUP FAILED 使用这个修复包,保留原来可用的 Python 所在文件夹。先运行 00_check_environment.cmd 可查看识别到的 Python 路径;这个检查不安装依赖
Python 已装好但自动没有找到 在包根目录新建 python_path.txt,仅填一行完整路径,例如 D:\旧打包包\.python38\python.exe,再运行第一个脚本。会检查是否为匹配位数的 Python 3.8.10,不需要复制旧的 .buildenv
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。最终以你的服务器上的自检和现场流程验收为准。00_check_environment.cmd 只检查系统、可复用的 Python 并保存诊断日志,不安装软件或改系统设置。

官方参考

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