大家好,本文将围绕python自动升级更新客户端展开说明,python自动更新客户端是一个很多人都想弄明白的事情,想搞清楚升级python到指定版本需要先了解以下几个事情。

python自动更新win补丁 python自动更新客户端_版本信息

如何零成本实现软件更新方案[Python]


文章目录
  • 如何零成本实现软件更新方案[Python]
  • 软件升级过程:
  • 将要更新的版本信息发布至云
  • 将更新包挂载至蓝奏云平台上
  • 本地运行程序从云上获取版本信息和当前版本信息进行比对
  • 实现更新


软件升级过程:

  1. 将要更新的版本信息发布至云
  2. 将更新包挂载至蓝奏云平台上
  3. 本地运行程序从云上获取版本信息和当前版本信息进行比对
  4. 实现更新

  1. 创建应用
  2. 获取用户创建的应用列表
  3. 给指定应用设置在线参数
  4. 获取指定应用的在线参数

当我设置完在线参数后,获取到的数据如下所示

python自动更新win补丁 python自动更新客户端_python_02

将更新包挂载至蓝奏云平台上

我将自己写的安装包挂载在蓝奏云平台上,更新速度嗖嗖的,但是想要获取软件的直链有两个方法1.冲会员2.自己解析,并不是能轻松获得。

我这边自己解析了,我会出一期针对解析蓝奏云的教学博客,网上也有不少,但是时间久远了不是直接能用的,需要自己再花点时间处理一下怎样用python画弧形花瓣

本地运行程序从云上获取版本信息和当前版本信息进行比对
  1. 云上最新版本设置

python自动更新win补丁 python自动更新客户端_python自动更新win补丁_03

  1. 本地版本配置

python自动更新win补丁 python自动更新客户端_云平台_04

  1. 版本比对

当主程序运行时,首先运行更新程序,当云上的软件版本号大于本地版本号,执行更新程序,否则继续运行主程序。

实现更新

在更新上花了不少时间,我这边向大家推荐一种更新方法。

  1. 在软件目录下创建Temp中间文件夹
  2. 将安装包下载至Temp文件夹中,使用python库中的zipfile module解压安装包
  3. 解压完成后删除安装包
  4. 为了避免windows下不能删除正在运行的软件这个定义,编写一个update.bat脚本执行删除旧程序、从temp中复制新程序到软件目录中、自动重启程序。

写一个update.bat脚本执行删除旧程序、从temp中复制新程序到软件目录中、自动重启程序。

def write_update(self) -> None:
        """
            编写软件更新程序
            Args:
                None
            Returns:
                None
        """
        # 设置绝对路径
        base_path = os.getcwd()
        with open("update.bat","w") as f:
            temp = "echo 正在更新至最新版本...\n"
            temp += "timeout /t 10 /nobreak\n"
            temp += "del main.exe\n" #删除旧程序
            temp += "xcopy " + base_path + "\\temp " + base_path + " /e/y\n" #复制新版本程序
            temp += "echo 更新完成,正在启动...\n"
            temp += "timeout /t 3 /nobreak\n"
            temp += "start " + base_path + "\\main.exe\n"   
            temp += "exit"
            f.write(temp)
        f.close()
        # 退出程序
        self.pbtn_cancel.click()
        # 打开更新脚本
        os.system('start update.bat')  #显示cmd窗口