exe程序推送更新

Windows 下程序运行时,exe 和这些 dll 文件被锁住,没法自己覆盖自己。所以"推送更新"本质都要拆成三步:

  1. 检查 —— 程序去网上拉一个版本清单,和本地版本号比对
  2. 下载 —— 下载新版
  3. 替换重启 —— 这一步必须由主程序之外的另一个东西(一个小 bat 脚本或独立的 updater.exe)来做:等主程序退出 → 覆盖文件 → 重新启动

使用托管的方式

  • 网上放一个 update.json(版本号 + 下载地址 + 更新说明)和打好的完整 zip 包
  • 程序启动时(或菜单「检查更新」)拉 update.json,比对版本号
  • 有新版 → 下载 zip → 启动一个独立的 updater(bat 或小 exe)→ 主程序退出 → updater 解压覆盖 → 重启

优点:和 PyInstaller 完全兼容、可靠、流程标准;

缺点:每次下载完整包(几十 MB,内网/国内一般无所谓)。第一次配好以后,你的更新流程就是:改版本号 → 打包 → 上传 zip + 改 update.json → 用户端自动收到。


操作步骤

  1. version.py__version__ = "1.1.0"
  2. 将更新的程序压缩
  3. 在 Gitee 建 v1.1.0 Release 传 zip
  4. update.json的 version/url → push 到 main 分支

自动更新原理

  1. 程序启动 2 秒后(或手动点按钮)从 Gitee 拉取仓库根目录的 update.json,比对版本号。
  2. 有新版本 → 下载 zip 到 %TEMP% → 生成 update.bat 并 detached 启动 → 主程序退出。
  3. update.bat 等主程序退出后,解压 zip 覆盖程序目录,再启动新版本。
  4. 运行日志:%TEMP%\jlcan_update.log

添加新评论