mirror of
https://github.com/goldenfishs/MRobot.git
synced 2025-11-02 04:23:10 +08:00
4.7 KiB
4.7 KiB
自动更新功能使用说明
功能概述
MRobot 现在支持完整的自动更新功能,包括:
- ✅ 自动检查更新
- ✅ 自动下载更新包
- ✅ 自动解压安装
- ✅ 自动重启程序
- ✅ 更新失败回滚
使用方法
1. 启动时自动检查更新
程序启动 3 秒后会自动在后台检查更新。如果发现新版本,会显示通知提示。
2. 手动检查更新
在"关于"页面点击:
- 自动更新: 打开完整的自动更新对话框
- 手动检查: 检查更新并在浏览器中打开下载页面
3. 自动更新流程
- 点击"自动更新"按钮
- 系统自动检查是否有新版本
- 如有更新,显示版本信息和更新说明
- 点击"开始更新"确认更新
- 系统自动完成:
- 下载更新包
- 备份当前文件
- 解压安装新版本
- 重启程序
技术实现
核心组件
-
AutoUpdater (
auto_updater.py)- 主要更新逻辑
- 多线程下载和安装
- 错误处理和回滚
-
UpdateDialog (
update_dialog.py)- 用户界面
- 进度显示
- 用户交互
-
QuickUpdateChecker
- 后台更新检查
- 通知显示
更新检查逻辑
# 检查 GitHub Releases API
url = f"https://api.github.com/repos/{repo}/releases/latest"
response = requests.get(url, timeout=10)
release_data = response.json()
# 比较版本号
from packaging.version import parse as vparse
if vparse(latest_version) > vparse(current_version):
# 有新版本可用
下载逻辑
# 根据操作系统选择合适的安装包
system = platform.system().lower()
if system == 'windows':
# 查找 .exe 或 .zip 文件
elif system == 'darwin': # macOS
# 查找 .dmg 或 .zip 文件
elif system == 'linux':
# 查找 .tar.gz 或 .zip 文件
安装逻辑
-
备份当前文件
# 备份重要文件到临时目录 backup_files = ['MRobot.py', 'app/', 'assets/'] -
解压新版本
# 支持 .zip 和 .tar.gz 格式 with zipfile.ZipFile(file_path, 'r') as zip_ref: zip_ref.extractall(extract_dir) -
复制文件
# 替换应用程序文件 shutil.copytree(src_path, dst_path) -
重启程序
# 启动新进程并退出当前进程 subprocess.Popen([executable]) sys.exit(0)
配置选项
在 update_config.py 中可以配置:
# 基本设置
AUTO_UPDATE_ENABLED = True # 启用自动更新
AUTO_UPDATE_ON_STARTUP = True # 启动时检查
UPDATE_CHECK_INTERVAL = 3000 # 检查延迟(毫秒)
# 下载设置
DOWNLOAD_TIMEOUT = 300 # 下载超时
CHUNK_SIZE = 8192 # 下载块大小
# 备份设置
CREATE_BACKUP = True # 创建备份
BACKUP_IMPORTANT_FILES = [...] # 备份文件列表
安全考虑
-
数字签名验证 (未实现,可扩展)
- 验证下载文件的数字签名
- 确保文件来源可信
-
备份和回滚
- 更新前自动备份
- 更新失败自动回滚
-
用户确认
- 所有更新操作需要用户确认
- 不会自动静默更新
故障排除
常见问题
-
网络连接问题
- 检查网络连接
- 检查防火墙设置
- 尝试手动更新
-
权限问题
- 确保程序有写入权限
- 以管理员身份运行(Windows)
-
文件被占用
- 关闭其他实例
- 重启计算机后再试
错误日志
更新过程中的错误会显示在界面上,并可在控制台查看详细信息。
手动回滚
如果自动回滚失败,可以:
- 从临时目录恢复备份文件
- 重新下载完整安装包
- 联系技术支持
开发者信息
扩展功能
可以在现有基础上添加:
-
增量更新
- 只下载变更的文件
- 减少下载时间和流量
-
多源下载
- 支持多个下载镜像
- 提高下载成功率
-
版本回退
- 支持回退到指定版本
- 版本历史管理
-
自定义更新源
- 支持企业内部更新服务器
- 自定义更新策略
API 接口
# 检查更新
update_info = check_update_availability(current_version)
# 启动自动更新
dialog = UpdateDialog(current_version, parent)
dialog.exec_()
# 后台检查
QuickUpdateChecker.check_and_notify(version, parent)
注意事项
- 确保 GitHub Releases 中有对应平台的安装包
- 安装包命名要规范,便于识别平台
- 更新说明要写在 Release Notes 中
- 版本号要遵循语义化版本规范 (如: v1.0.5)
版本兼容性
- PyQt5 5.x+
- Python 3.7+
- requests 2.x+
- packaging 20.x+
支持的操作系统:
- Windows 7+
- macOS 10.12+
- Ubuntu 18.04+