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://www.mzph.cn/bicheng/828.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

3. 无重复字符的最长子串/438. 找到字符串中所有字母异位词/560. 和为 K 的子数组

3. 无重复字符的最长子串 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: s "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 思路:想象一下我们…

90天精通Psim仿真--经典实战教程--第10天 Simcode DSP28335 LED控制

PSIM (Power Simulation) 是一款电力电子和电机控制仿真软件,而DSP28335是德州仪器(TI)的一款数字信号处理器(DSP)。如果你想要在PSIM的SimCoder环境中为DSP28335生成LED闪烁的代码,遵循以下步骤: 打开PSIM并创建模型: 首先,在PSIM中创建一个电路模型,该模型应包括DS…

贪心(贪婪)算法

主要思想 贪心算法的思想主要可以概括为“总是做出当前看起来最优的选择”,也就是不从整体上进行考虑,所得到的答案是某种意义上的局部最优解,不一定是整体最优解。 贪心算法没有固定算法框架,算法设计的关键是贪心策略的选择。…

【回溯】Leetcode 22. 括号生成【中等】

括号生成 数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。 示例 1: 输入:n 3 输出:[“((()))”,“(()())”,“(())()”,“()(())”,“()()()”] 解题思路 1、使用回溯…

AI原生时代,操作系统为何是创新之源?

一直以来,操作系统都是软件行业皇冠上的明珠。 从上世纪40、50年代,汇编语言和汇编器实现软件管理硬件,操作系统的雏形出现;到60年代,高级编程语言和编译器诞生,开发者通过操作系统用更接近人的表达方式去…

Vue 组件通信的几种方式

vue通信方式简介 在Vue.js中,组件间通信可以通过props、$emit、事件总线、Vuex以及Provide/Inject等方式来实现,总的来说,组件通信是现代前端开发中不可或缺的一部分,它可以帮助开发者构建更加模块化、可维护和可扩展的应用。 Pr…

2024年4月18号技术面试总结

1.什么是微服务雪崩?微服务雪崩的解决方案? 微服务调用链路中的某个服务故障,引起整个链路中的所有微服务都不可用,这就是雪崩。服务A依赖于服务B,服务A依赖于服务D。现在假设,服务D出现了故障! 它访问这个服务D就必然要等待服务D的结果,那因为服务D出现了故障,那必然不…

String str=“hello“与String str = new String(“hello“)的区别

常量池(constant pool)指的是在编译期被确定,并被保存在以编译的.class文件中的一些数据。它包括了关于类、方法、接口等中的常量,也包括字符串常量。 实际上 String str new String("hellow");创建了两个对象&#xf…

Java语言中字符串处理最常见的操作以及注意事项

0. 前言 由于最近线上连续出现跟字符串处理相关的故障,实属不应该。也从这些故障中看到大家对常见的字符串处理API有一些淡忘,希望通过收集整体并总结常见的处理方法,大家温故而知新。 1. 创建和初始化: a. 使用双引号直接创建…

方程豹春季品牌发布会:全家族矩阵献礼比亚迪

春意盎然的四月,深圳也迎来了中国新能源汽车领域的一场盛事。 4月16日,作为比亚迪旗下全球首个专业个性化汽车品牌,方程豹在深圳隆重举办春季发布会。 在这场以“方华”为主题的发布会上,方程豹汽车全家族矩阵首次集体亮相&#x…

【数据结构】单链表经典算法题的巧妙解题思路

目录 题目 1.移除链表元素 2.反转链表 3.链表的中间节点 4.合并两个有序链表 5.环形链表的约瑟夫问题 解析 题目1:创建新链表 题目2:巧用三个指针 题目3:快慢指针 题目4:哨兵位节点 题目5:环形链表 介绍完了…

美化博客文章(持续更新)

🎁个人主页:我们的五年 🔍系列专栏:游戏实现:贪吃蛇​​​​​​ 🌷追光的人,终会万丈光芒 前言: 该文提供我的一些文章设计的一些方法 目录 1.应用超链接 1.应用超链接

IIL IIH

IIH test_no;DATALOG_MSG;TEST_NO(test_no);RELAY_ON PDCL资源FORCE_V_MLDPS给VCC上电5.5vPIN_MODE位leakage_PINS管脚组接地LEVELS(Vcc5d5_lvl,2mS); PIN_INC(leakage_PINS, LOOP_BY_PIN) { RELAY_OFF PDCL资源 RELAY_ON PPMU资源 FORCE_V_PPMU上电5.5v,电流量…

mysql in查询优化

都说in查询比较慢,要改成子查询模式,ChatGPT大模型告诉了我,SQL中替换In查询的10种方法,太赞了,按照这个说的集中方法,验证一下。因为实际项目中确实存在in很多的情况。 查询执行的先后顺序对优化有必要&am…

【EI会议征稿】2024年先进机械电子、电气工程与自动化国际学术会议(ICAMEEA 2024)

2024 International Conference on Advanced Mechatronic, Electrical Engineering and Automation ●会议简介 2024年先进机械电子、电气工程与自动化国际学术会议(ICAMEEA 2024)将汇聚全球机械电子、电气工程与自动化领域的专家学者,共同…

【软考】敏捷方法

目录 一、概念二、敏捷方法2.1 极限编程(XP)2.2 水晶法(Crystal)2.2.1 说明2.2.1 特征 2.3 并列争球法(Scrum)2.4 自适应软件开发(ASD)2.5 敏捷统一过程(AUP)2.5.1 说明2.5.2 执行的活动 一、概念 1.Agile Development。 2.敏捷开发的总体目标是通过“尽可能早地、持续地对有价…

计算机网络:CSMA/CA协议

计算机网络:CSMA/CA协议 CSMA/CA概述帧间间隔工作原理退避算法虚拟载波监听 CSMA/CA概述 讲解CSMA/CA之前,我们回顾一下CSMA/CD的三个特性: 多址接入MA:多个主机连接在一条总线上,竞争使用总线 载波监听CS&#xff1a…

web网站搭建实验

综合练习:请给openlab搭建web网站 网站需求: 1.基于域名www.openlab.com可以访问网站内容为 welcome to openlab!!! 2.给该公司创建三个子界面分别显示学生信息,教学资料 和缴费网站,基于,www.openlab.com/data网站…

麦克斯韦方程简单理解波粒二象性粒子退相干(Quantum Decoherence):微观的动态,宏观的静态量子

目录 麦克斯韦方程简单理解 波粒二象性 粒子退相干(Quantum Decoherence):微观的动态,宏观的静

X-314智能合约:金融创新的强大引擎

💥火爆到烫手的X-314智能合约🔥 X-314智能合约是基于以太坊区块链开发的,具有高度可定制性和灵活性。 ave开单独板块;详细资料已经准备好;对web3感兴趣的大佬货;多交流多指导🤝 ​X-314智能合…