通过蓝奏云与云端检测来实现软件自动更新

本文深入探讨了自动更新机制的核心原理,包括使用Python结合蓝奏云API实现软件版本检测与自动下载更新的过程。通过对比本地与远程版本号,实现智能化更新流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一.自动更新原理:

1.通过Python对蓝奏云api的获取分析检测用以下载

2.在通过本文的内容检测达到更新检测的目的

3.通过对版本号的对比进行自动更新检测​​​​​​​

二.更新检测区块:



一.自动更新原理:

1.通过Python对蓝奏云api的获取分析检测用以下载

2.在通过本文的内容检测达到更新检测的目的

  • 选取一个合适的网站或者服务器进行更新地址寄存(例:本文中的更新检测区块部分即是地址寄存区域)
  • 用Python的requests模块对链接进行获取
  • 用Python的模块BeautifulSoup模块对获取到的内容进行分析并查找提取关键内容
  • 将关键内容返回到蓝奏云api进行下载链接获取并下载

3.通过对版本号的对比进行自动更新检测

  • 在代码段或配置文件中写入软件版本号
  • 进入软件或在检测更新时与云端的软件版本号进行对比如果版本号有偏差则执行升级程序如果版本号没有偏差则正常进入程序

注:以上内容仅作者自身观点见解,如有错误欢迎各位大佬指出,我将积极接受各位大佬的意见并予以改正,也对每一位能够耐心看完这篇文章的读者表示感谢,您的支持是我进步的动力!

二.更新检测区块:

注:因为学生党没钱只能用这种方法达到自动更新的目的:

—通知|新版本为测试版,软件内容并未制作完全,可能存在大量bug,请用户见谅,并将在正式版给予修复,感谢理解。

-深渊启动器|3.1.0|iVWu5sszm9c|详细请看更新公告|13.66MB|0

-股票模拟软件|4.0.7|iMm8hfkawwj|新增了单股刷新模式|11.25MB|5.5

-计算练习器|1.9.9|i3g1pf2rykd|新增了货币系统有利于更好计算|6.5MB|0

-哔哩哔哩数据获取|1.2.0|i9ROjf6bacj|更新了提醒功能使软件更人性化|9.82MB|2.5

-RStudioPortable|2.2.0|i3utkfkawsf|能恢复电脑数据的软件(非自编)|63.3MB|6999.9

-激活工具|1.0.0|ig4jJf6bp3a|激活软件(非自编)|0.92MB|50.5

-测试|0.0.2|ic3Toebvdxc|测试软件的性能|5.5MB|10.3

-自动截图软件|1.1|i37Qtgrrs6j|1:修复了无法显示坐标的bug|24.9MB|99.9—

-测试|test|i37Qtgrrs6j|1:修复了无法显示坐标的bug|24.9MB|99.9—

自动更新代码:

from bs4 import BeautifulSoup
import requests
import time
import tkinter as tk
import tkinter.messagebox
import os
import subprocess
import time
import shutil
import sys

#更新文件
if not os.path.exists("更新目录"):
    os.mkdir("更新目录")

提醒 = tk.Tk()
提醒.withdraw()

#更新检测模块
头部 = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0',
    'Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',}

字典 = {}
def 检测模块(版本号):
    检测地址 = "https://blog.csdn.net/max_tebie/article/details/107435252" 
    获取 = requests.get(检测地址,headers = 头部)                            #获取检测地址
    获得 = BeautifulSoup(获取.text,'html.parser')                          #处理检测地址
    内容 = 获得.find_all(class_='htmledit_views')                          #提取检测地址
    分割 = str(内容).split("-")[1].split("|")                              #分割检测信息
    列表 = ["其他","名称","版本","地址","公告","大小"]
    for 列表1,区域 in zip(列表,分割):                                       #检测信息转字典                                        
        字典[列表1] = 区域
    if 版本号 != 字典["版本"]:                                              #处理
        更新 = tkinter.messagebox.askokcancel("更新提示","版本:"+字典["版本"] +
 "\n" + "公告:"+字典["公告"] +
                                         "\n" + "大小:" + 字典["大小"] + "\n是否选择下载")
        if 更新:
            下载模块(字典["地址"],字典["名称"])
            更新模块(字典["名称"])
        else:
            提醒.destroy()
    else:
        提醒.destroy()
    

def 下载模块(地址,名称):
    下载地址 = "https://api.vvhan.com/api/lz?url=https://mtsy.lanzous.com/" + 地址
    解析 =  requests.get(下载地址).json()
    获取 = 解析["download"]                                                #获取下载地址
    获取 = 获取.replace("\\","")
    头部内容 = requests.head(获取, headers=头部)
    解密地址 = 头部内容.headers['Location']
    文件 = requests.get(解密地址)                                          #下载文件
    下载 = open("更新目录/" + 名称 + ".exe",'wb')
    下载.write(文件.content)
    下载.close()

def 更新模块(名称):                                                        #外部安装
    路径 = os.getcwd()
    脚本 = open("更新脚本.bat",'w')
    脚本.write("@echo off\n" +                                            #新建脚本
             "taskkill /f /im " + 名称 + ".exe" +  
             "\nsleep 3\n" +
             "del " + 名称 + ".exe\n"  +
             "copy /y " + 路径 + "\\更新目录\\" + 名称 + ".exe " + 路径 +
             "\nstart " + 名称 + ".exe")
    脚本.close()
    subprocess.Popen("更新脚本.bat")                                      #执行脚本
    提醒.destroy()

有兴趣的同学也可以下载软件试一下,地址:

https://mtsy.lanzoui.com/iVWu5sszm9c

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

特别存在╮无可取代゜

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值