JiuLing.AutoUpgrade
一个简单、易用的自动更新组件
Install / Use
/learn @JiuLing-zhang/JiuLing.AutoUpgradeREADME
👾 一个简单、易用的自动更新组件。 👉👉English Version
<div align="center"> <img src="https://github.com/JiuLing-zhang/JiuLing.AutoUpgrade/raw/main/docs/resources/images/demo1.png" width="40%"> <img src="https://github.com/JiuLing-zhang/JiuLing.AutoUpgrade/raw/main/docs/resources/images/demo2.png" width="40%"> </div>介绍
更新程序的核心程序是基于 .NET Framework 4.7 开发的 x64 格式的程序,所以使用此组件之前,请先确保客户端环境能够运行该程序。
- 🔥 组件支持自更新
- 🌈 支持 HTTP
- 🌀 支持 FTP
- ⚡ 支持 GitHub Release
- ⭐ 版本过期后禁止运行
运行方式
- 🕐 去服务端下载更新包(如果有更新可用)
- 🕑 关闭主程序
- 🕒 将更新包的内容解压后复制到主程序根目录
- 🕓 重启主程序
🎈 检查更新时,如果指定了最小运行版本,并且主程序版本低于最小版本,那么自动更新程序将不允许跳过本次更新,不更新直接关闭自动更新程序时,同时也会关闭主程序
🎉 更新包仅支持 .zip 压缩包。
安装
🟢 通过 Nuget 安装。
🟢 通过 Release 下载。
使用
1️⃣ 导入命名空间
using JiuLing.AutoUpgrade.Shell;
2️⃣ 创建更新程序
// HTTP 方式
IUpgradeApp app = UpgradeFactory.CreateHttpApp("url");
// FTP 方式
IUpgradeApp app = UpgradeFactory.CreateFtpApp("path", "username", "password");
// GitHub Release 方式
// assetName: update.zip
IUpgradeApp app = UpgradeFactory.CreateGitHubApp("owner", "repo", "assetName");
3️⃣ 启动
app.Run();
// or
await app.RunAsync();
🫧 链式写法
await UpgradeFactory.CreateHttpApp("url").RunAsync();
4️⃣ 服务端配置
-
HTTP和FTP方式
💠 自动更新接口需要返回如下格式的json内容。- Version: ❗[必须] 最新的版本号
- DownloadUrl: ❗[必须] 程序的下载路径
- FileLength: 文件大小,字节
- MinVersion: 程序运行的最低版本号,低于此版本将无法运行
- Log: 更新日志
- CreateTime: 时间
- SignType: 文件校验的签名方式
- SignValue: 文件校验的签名值
{ "Version": "1.2.0", "DownloadUrl": "xxxxx/update.zip", "FileLength": 1887436, "MinVersion": "1.1.0", "Log": "1、修复了若干bug。2、新增了若干需求。", "CreateTime": "2022-01-16 12:12:12", "SignType": "MD5", "SignValue": "f42c6cb229a0a1237c9945448342d59e" } -
GitHub Release方式- 版本号: 获取
Release的名称 - 程序下载路径: 获取
Release中Assets Name匹配的文件地址
- 版本号: 获取
🔨 高级设置
await UpgradeFactory.CreateHttpApp("url")
.SetUpgrade(builder =>
{
builder.WithIcon("path")
.WithTimeout(60)
.WithBackgroundCheck(true)
.WithSignCheck(true)
.WithTheme(ThemeEnum.System)
.WithLang("zh")
.WithVersionFormat(VersionFormatEnum.MajorMinorBuild);
})
.RunAsync();
⚡ 设置图标
setting.WithIcon("icon.ico");
🌀 检查更新时的请求超时时间(默认 5 秒)
setting.WithTimeout(60);
🎁 是否在后台进行更新检查(默认为否)
setting.WithBackgroundCheck(true);
⚽ 对下载的文件启用签名校验,支持 MD5 和 SHA1 两种方式(默认为不启用)
setting.WithSignCheck(true);
🎲 设置主题,支持“跟随系统”、“浅色主题”、“深色主题”(默认为跟随系统)
setting.WithTheme(ThemeEnum.System);
// setting.WithTheme(ThemeEnum.Light);
// setting.WithTheme(ThemeEnum.Dark);
💎 设置多语言,支持中文、英文(默认为中文)。
setting.WithLang("zh");
// setting.WithLang("en");
📌 设置版本号显示格式。
setting.WithVersionFormat(VersionFormatEnum.MajorMinorBuildRevision);
// setting.WithVersionFormat(VersionFormatEnum.MajorMinorBuild);
// setting.WithVersionFormat(VersionFormatEnum.MajorMinor);
// setting.WithVersionFormat(VersionFormatEnum.Major);
项目说明
src
├─JiuLing.AutoUpgrade 核心程序
├─JiuLing.AutoUpgrade.Shell 启动程序,用来启动核心更新程序
│ └─Resources 通过动态资源的形式加载核心程序,使得核心程序可以实现自身更新。项目编译前,会先从Librarys.tmp文件夹拷贝核心程序
│ └─JiuLing.AutoUpgrade.exe
├─JiuLing.AutoUpgrade.Shared 核心程序和启动程序所共享的代码片段
├─JiuLing.AutoUpgrade.Test 测试程序
│ ├─JiuLing.AutoUpgrade.Test.csproj
│ ├─UpgradePackage1.2.0.zip
│ └─测试环境配置说明.txt
├─Librarys.tmp 临时目录,核心程序编译完成后将自身发布到该目录
│ └─JiuLing.AutoUpgrade.exe
└─JiuLing.AutoUpgrade.sln 项目解决方案
License
MIT License
Related Skills
node-connect
348.2kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
108.9kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
348.2kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
348.2kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
