大家好,本文将围绕python自动升级更新客户端展开说明,python自动更新客户端是一个很多人都想弄明白的事情,想搞清楚升级python到指定版本需要先了解以下几个事情。
如何零成本实现软件更新方案[Python]
文章目录
- 如何零成本实现软件更新方案[Python]
- 软件升级过程:
- 将要更新的版本信息发布至云
- 将更新包挂载至蓝奏云平台上
- 本地运行程序从云上获取版本信息和当前版本信息进行比对
- 实现更新
软件升级过程:
- 将要更新的版本信息发布至云
- 将更新包挂载至蓝奏云平台上
- 本地运行程序从云上获取版本信息和当前版本信息进行比对
- 实现更新
- 创建应用
- 获取用户创建的应用列表
- 给指定应用设置在线参数
- 获取指定应用的在线参数
当我设置完在线参数后,获取到的数据如下所示
将更新包挂载至蓝奏云平台上
我将自己写的安装包挂载在蓝奏云平台上,更新速度嗖嗖的,但是想要获取软件的直链有两个方法1.冲会员2.自己解析,并不是能轻松获得。
我这边自己解析了,我会出一期针对解析蓝奏云的教学博客,网上也有不少,但是时间久远了不是直接能用的,需要自己再花点时间处理一下怎样用python画弧形花瓣。
本地运行程序从云上获取版本信息和当前版本信息进行比对
- 云上最新版本设置
- 本地版本配置
- 版本比对
当主程序运行时,首先运行更新程序,当云上的软件版本号大于本地版本号,执行更新程序,否则继续运行主程序。
实现更新
在更新上花了不少时间,我这边向大家推荐一种更新方法。
- 在软件目录下创建Temp中间文件夹
- 将安装包下载至Temp文件夹中,使用python库中的
zipfile module
解压安装包 - 解压完成后删除安装包
- 为了避免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窗口