mirror of
https://github.com/AmintaCCCP/GithubStarsManager.git
synced 2025-11-25 02:34:54 +08:00
3.8 KiB
3.8 KiB
检查更新功能实现指南
功能概述
已成功为 GitHub Stars Manager 添加了完整的检查更新功能,包括:
- 版本信息管理 - 使用XML格式存储版本信息
- 自动更新检查 - 应用启动时自动检查更新
- 手动更新检查 - 设置页面中的检查更新按钮
- 更新提示界面 - 美观的更新对话框
- 版本管理工具 - 自动化版本更新脚本
文件结构
├── versions/
│ ├── version-info.xml # 版本信息XML文件
│ └── README.md # 版本管理说明
├── src/
│ ├── services/
│ │ └── updateService.ts # 更新检查服务
│ └── components/
│ └── UpdateChecker.tsx # 更新检查组件
├── scripts/
│ └── update-version.js # 版本更新脚本
└── test-update.html # 功能测试页面
使用方法
1. 发布新版本
使用自动化脚本更新版本:
npm run update-version 0.1.4 "新增功能A" "修复bug B" "优化性能C"
这个命令会自动:
- 更新
package.json中的版本号 - 在
versions/version-info.xml中添加新版本记录 - 更新
src/services/updateService.ts中的当前版本号
2. 提交到仓库
git add .
git commit -m "chore: bump version to v0.1.4"
git push origin main
3. 创建GitHub Release
- 在GitHub仓库中创建新的Release
- 标签名称:
v0.1.4 - 上传构建好的安装包(如
github-stars-manager-0.1.4.dmg) - 确保下载链接与XML中的URL一致
功能特性
自动检查更新
- 应用启动3秒后自动检查更新
- 静默检查,不影响用户体验
- 发现新版本时在控制台记录日志
手动检查更新
- 设置页面中的"检查更新"按钮
- 实时显示检查状态
- 显示详细的更新信息
更新提示界面
- 美观的模态对话框
- 显示版本号和发布日期
- 详细的更新日志列表
- 一键跳转到下载页面
版本比较算法
- 支持语义化版本号(x.y.z)
- 智能比较版本大小
- 处理不同长度的版本号
XML文件格式
<?xml version="1.0" encoding="UTF-8"?>
<versions>
<version>
<number>0.1.3</number>
<releaseDate>2025-01-04</releaseDate>
<changelog>
<item>添加检查更新功能</item>
<item>优化用户界面</item>
<item>修复已知bug</item>
</changelog>
<downloadUrl>https://github.com/AmintaCCCP/GithubStarsManager/releases/download/v0.1.3/github-stars-manager-0.1.3.dmg</downloadUrl>
</version>
</versions>
测试方法
本地测试
- 打开
test-update.html文件 - 点击"检查更新"按钮
- 验证功能是否正常工作
应用内测试
- 启动应用,等待3秒观察控制台日志
- 进入设置页面,点击"检查更新"
- 验证更新对话框是否正确显示
注意事项
- 版本号格式:必须使用 x.y.z 格式的语义化版本号
- XML文件编码:确保使用UTF-8编码
- 下载链接:确保GitHub Release中的下载链接可用
- 网络请求:更新检查需要网络连接
- CORS问题:本地测试时可能遇到跨域问题
错误处理
- 网络连接失败时显示友好错误信息
- XML解析错误时提供详细错误描述
- 版本比较异常时使用默认处理逻辑
多语言支持
更新功能已集成应用的多语言系统:
- 中文界面显示中文提示
- 英文界面显示英文提示
- 自动根据应用语言设置调整
未来扩展
可以考虑添加的功能:
- 自动下载更新包
- 增量更新支持
- 更新进度显示
- 更新历史记录
- 跳过版本功能
技术实现
- 前端框架:React + TypeScript
- HTTP请求:Fetch API
- XML解析:DOMParser
- 版本比较:自定义算法
- UI组件:Tailwind CSS + Lucide Icons