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

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

软件升级过程:

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

将要更新的版本信息发布至云

这个步骤采用一些在线自定义参数平台来作为我版本信息发布的平台,经过最近的资料搜集,发现ROLL提供的API非常好用(免费的,不是做广告)在线自定义参数 Api详情 - MXNZP.COM 穆仙念,人到中年

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

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

在这里插入图片描述

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

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

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

本地运行程序从云上获取版本信息和当前版本信息进行比对

  1. 云上最新版本设置

在这里插入图片描述

  1. 本地版本配置

在这里插入图片描述

  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窗口
  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

锡城筱凯

你的鼓励是我创造的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值