PyQt程序:实现新版本的自动更新检测及下载(FTP服务器实现)

一、实现逻辑

本实例采用相对简单的逻辑实现,用户在客户端使用软件时点击“检测升级”按钮,连接至FTP服务器检索是否有新版本的·.exe,如果有,下载最新的.exe安装升级。

在这里插入图片描述
在这里插入图片描述

本实例服务端待下载.exe所在目录结构
在这里插入图片描述
本实例客户端待更新.exe所在目录结构
在这里插入图片描述

二、搭建服务器

可以参考我的这篇博客:《二、Cpolar 内网穿透 FileZilla :避开所有坑点》

三、程序实现

01.FTP连接相关程序

提供以下功能:
①FTP服务器的连接,需要输入FTP服务器的域名、端口号、用户名、密码。
②从FTP服务器获取规定用户可以访问的文件目录。
③从FTP服务器下载指定的文件。
④获取FTP服务器上指定文件的大小。
⑤获取FTP服务器/客户端 的软件版本号。

ftp_tools.py

import socket
from ftplib import FTP
import os
import globclass LinkFTP:"""连接 FTP 服务器"""def __init__(self, host: str, port: int, username: str, password: str):self.ftp = self.login_ftp(host,port,username,password)# 登录FTP服务器def login_ftp(self, host: str, port: int, username: str, password: str):timeout = 60socket.setdefaulttimeout(timeout)ftp = FTP()# 设置为被动模式,必须设置,不然即使连接到服务器也无法读取文件ftp.set_pasv(True)ftp.encoding = 'utf-8'  # 'gbk'ftp.connect(host, port)ftp.login(username, password)#打印欢迎信息,服务端设置print(ftp.welcome)return ftpdef path_list(self,path: str) -> list:# 切换路径self.ftp .cwd(path)# 显示目录下所有目录信息self.ftp .dir()# 获取目录下的文件夹dir_list: list = self.ftp.nlst()# 排序dir_list.sort()return dir_listdef Update_detection(self,remote_path: str, local_path: str):''':param remote_path: 远程服务器 .exe文件所在文件路径:param local_path: 本地 .exe文件所在路径:return:'''#本地文件夹if not os.path.exists(local_path):os.makedirs(local_path)# ftp切换到.exe所在的文件路径self.ftp.cwd(remote_path)# 获取exe所在的文件路径目录列表dir_list = self.ftp.nlst()# print(dir_list)symbol = 0'''symbol = 0:需要更新symbol = 1:已经是最新,不需要更新symbol = 2:版本号一致,但文件不完整(下载中断时),需要更新symbol = 3:远程服务器指定文件夹没有.exe文件,无需更新''

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2960295.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

openkylin系统通过网线连接ubuntukylin系统上网攻略

openkylin系统通过网线连接ubuntukylin系统上网攻略 主机1:x64 amd ,系统:ubuntukylin 22.04 ,状态:通过wifi连接热点进行上网,并共享网络。 主机2:x64 intel ,系统:ope…

Elasticsearch:下载、启动和账号密码登录

因为我的电脑是 window,以下都是以 window 环境举例。 一、下载 Elasticsearch 是使用 java 开发的,且 7.8 版本的 ES 需要 JDK 版本 1.8 以上,安装前注意java环境的准备。 官网地址:https://www.elastic.co/cn/ 下载地址&#xf…

WebStorm2024安装包(亲测可用)

目录 一、软件简介 二、软件下载 一、软件简介 WebStorm是一款由JetBrains公司开发的强大的集成开发环境(IDE),专门用于前端开发。它提供了丰富的功能和工具,包括代码编辑器、调试器、版本控制集成等,使开发人员能够更…

CTFHUB-技能树-Web前置技能-文件上传(前端验证—MIME绕过、00截断、00截断-双写后缀)

CTFHUB-技能树-Web前置技能-文件上传(前端验证—MIME绕过、00截断、00截断-双写后缀) 文章目录 CTFHUB-技能树-Web前置技能-文件上传(前端验证—MIME绕过、00截断、00截断-双写后缀)前端验证—MIME绕过有关MIMEMIME的作用 解题时有…

SpringBoot使用xxl-job分布式任务调度平台定时检测RabbitMQ的消息队列自动发出钉钉警告消息

文章目录 SpringBoot使用xxl-job分布式任务调度平台定时检测RabbitMQ的消息队列自动发出钉钉警告消息1、在pom.xml中导入xxl-job的maven依赖,可以看我这篇文章使用抽离出来的xxl-job的starter2、配置xxl-job的相关配置,若上一步使用了自己创建的starter则…

【python】flask操作数据库工具SQLAlchemy,详细用法和应用实战

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

操作系统—实现可变式分区分配算法

文章目录 实现可变式分区分配算法1.实验环境2.如何在xv6中实现分区分配算法?(1).xv6的内存管理机制(2).实现思路 3.最佳适应算法(1).基本思路(2).步骤(3).测试&Debug 总结参考资料 实现可变式分区分配算法 1.实验环境 因为这一次的实验仍然是在xv6中进行&#…

Adobe AE(After Effects)2021下载地址及安装教程

Adobe After Effects是一款专业级别的视觉效果和动态图形处理软件,由Adobe Systems开发。它被广泛用于电影、电视节目、广告和其他多媒体项目的制作。 After Effects提供了强大的合成和特效功能,可以让用户创建出令人惊艳的动态图形和视觉效果。用户可以…

vue的就地更新与v-for的key属性

vue的就地更新 Vue中的就地更新到底是怎么回事,为什么会存在就地更新的现象? 注意下面的例子,使用v-for指令时,没有绑定key值,才有就地更新的现象,因为Vue默认按照就地更新的策略来更新v-for渲染的元素列表…

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《基于用户生产场景辨识的电压暂降经济损失评估》

本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

十大远程控制软件排名

远程控制软件在现代计算环境中扮演着至关重要的角色,它们使得用户能够轻松地访问和管理远程计算机或设备。随着技术的不断进步,市场上涌现出许多优秀的远程控制工具。以下是对当前市场上十大远程控制软件的简要排名和介绍,以帮助您选择最适合…

Go Plugin:动态模块的加载与问题解析_go语言加载动态库的工具(1)

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7 深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞…

Linux环境如何端口映射?

在网络通信中,端口映射是一项重要的技术,在Linux系统中广泛应用。它的主要作用是实现不同网络设备之间的通信,使得远程访问成为可能。本文将介绍Linux端口映射的基本原理和应用场景,并重点介绍了一种名为【天联】的组网优势。 端口…

第47期 | GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区,集成了生成预训练Transformer(GPT)、人工智能生成内容(AIGC)以及大语言模型(LLM)等安全领域应用的知识。在这里,您可以找…

操作系统—GCC与编译全流程

文章目录 GCC与编译全流程1.GCC是什么?2.编译全流程(1).GCC到底做了哪些事情?(2).预处理I.预处理会做什么II.预处理器主要包含什么?III.宏的一些魔法 (3).编译I.基本流程II.编译优化III.一点例子 (4).汇编(5).链接(6).说到这里,为…

AIGC实战——VQ-GAN(Vector Quantized Generative Adversarial Network)

AIGC实战——VQ-GAN 0. 前言1. VQ-GAN2. ViT VQ-GAN小结系列链接 0. 前言 本节中,我们将介绍 VQ-GAN (Vector Quantized Generative Adversarial Network) 和 ViT VQ-GAN,它们融合了变分自编码器 (Variational Autoencoder, VAE)、Transformer 和生成对…

免费的 ChatGPT、GPTs、AI绘画(国内版)

🔥博客主页:白云如幻❤️感谢大家点赞👍收藏⭐评论✍️ ChatGPT3.5、GPT4.0、GPTs、AI绘画相信对大家应该不感到陌生吧?简单来说,GPT-4技术比之前的GPT-3.5相对来说更加智能,会根据用户的要求生成多种内容甚…

Oracle 正则,开窗,行列转换

1.开窗函数 基本上在查询结果上添加窗口列 1.1 聚合函数开窗 基本格式: ..... 函数() over([partition by 分组列,...][order by 排序列 desc|asc][定位框架]) 1,partition by 字段 相当于group by 字段 起到分组作用2,order by 字段 即根据某个字段…

客诉技术架构:构建客户满意的数字化支持系统

随着数字化时代的到来,客户体验已经成为企业竞争的关键因素之一。而客诉技术架构作为支持客户服务和解决问题的关键系统,对于企业提升客户满意度和品牌声誉具有重要意义。本文将深入探讨客诉技术架构的重要性、关键要素以及如何构建一个有效的客户支持系…

女上司问我:误删除PG百万条数据,可以闪回吗?

作者:IT邦德 中国DBA联盟(ACDU)成员,10余年DBA工作经验 擅长主流数据Oracle、MySQL、PG、openGauss运维 备份恢复,安装迁移,性能优化、故障应急处理等可提供技术业务: 1.DB故障处理/疑难杂症远程支援 2.Mysql/PG/Oracl…