C#基于GitHub的Releases实现的软件升级工具,本项目目前处于开发前期阶段,目前无法用于生产。
本项目主要依靠GitHub的API实现的
https://api.github.com/repos/用户名/项目名/releases/latest
替换上面的“用户名”和“项目名”,例如https://api.github.com/repos/xiaoxinpro/BleTestTool/releases/latest
通过Get请求获取项目最新的Releases版本信息,本项目使用Newtonsoft.Json
解析接收的到JSON数据。
在软件中显示最新的版本信息并引导用户更新。
通过获取到的下载地址,使用DownLoadFile
类库下载更新包。
下载完成后引用ICSharpCode.SharpZipLib
类库将更新包解压并覆盖原有软件。
更新完成后删除无用的缓存文件并打开更新后的程序文件,从而实现的软件更新的功能。
DownLoadFile.dll负责更新文件下载任务,支持多线程与下载进度回调,调用方便快捷。
ICSharpCode.SharpZipLib.dll是一款ZIP文件压缩解压缩的类库,配合ZipHelper使用,轻松完成更新文件的解压缩工作。
Newtonsoft.Json.dll是一款.NET中开源的Json序列化和反序列化类库,根据Github的API完成JsonGitHub的解析工作。
使用API动态调用UpdataForGitHub,实现多样化自定义功能。
参数 | 说明 | 备注 |
---|---|---|
Username | Github用户名 | 必填,例如:xiaoxinpro |
Project | Github项目名 | 必填,例如:UpdataForGitHub |
Version | 当前版本号 | 必填,例如:0.1.0.0 |
Title | 显示在窗口的标题 | 选填,默认:软件升级工具 |
IsAutoRun | 是否更新完成自动运行 | 选填,默认:False |
Run | 需要运行的文件名 | 若选择IsAutoRun则填写相应的文件名 |
由于Github的API的访问要求为TLS1.2,在C#中必须使用.net4.5框架。
ServicePointManager.SecurityProtocol = (SecurityProtocolType)3702; // 请求GitHub前需要运行
使用框架已改为.Net4.0
如有问题请提交Issues,谢谢支持!