XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFEExtension.NetCore.UpgradeHelper

【DLL】对接ApplicationUpgradeManager的nuget包,可以快速实现软件版本更新请求

公开
关注 0 Fork 0 Star 0
返回提交历史

XFEstudio/XFEExtension.NetCore.UpgradeHelper

添加项目文件。

f237630
XFE工作室室长 <mail@xfegzs.com>
提交于

代码差异

10 个文件 +202 -0
Added XFEExtension.NetCore.UpgradeHelper.sln +25 -0
@@ -0,0 +1,25 @@
1 
2 Microsoft Visual Studio Solution File, Format Version 12.00
3 # Visual Studio Version 17
4 VisualStudioVersion = 17.14.36109.1
5 MinimumVisualStudioVersion = 10.0.40219.1
6 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XFEExtension.NetCore.UpgradeHelper", "XFEExtension.NetCore.UpgradeHelper\XFEExtension.NetCore.UpgradeHelper.csproj", "{C1676EEE-A182-4165-B4D8-00FFEF0ED0AB}"
7 EndProject
8 Global
9 GlobalSection(SolutionConfigurationPlatforms) = preSolution
10 Debug|Any CPU = Debug|Any CPU
11 Release|Any CPU = Release|Any CPU
12 EndGlobalSection
13 GlobalSection(ProjectConfigurationPlatforms) = postSolution
14 {C1676EEE-A182-4165-B4D8-00FFEF0ED0AB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
15 {C1676EEE-A182-4165-B4D8-00FFEF0ED0AB}.Debug|Any CPU.Build.0 = Debug|Any CPU
16 {C1676EEE-A182-4165-B4D8-00FFEF0ED0AB}.Release|Any CPU.ActiveCfg = Release|Any CPU
17 {C1676EEE-A182-4165-B4D8-00FFEF0ED0AB}.Release|Any CPU.Build.0 = Release|Any CPU
18 EndGlobalSection
19 GlobalSection(SolutionProperties) = preSolution
20 HideSolutionNode = FALSE
21 EndGlobalSection
22 GlobalSection(ExtensibilityGlobals) = postSolution
23 SolutionGuid = {677E7711-2BBD-4648-95AC-77139D5453DB}
24 EndGlobalSection
25 EndGlobal
Added XFEExtension.NetCore.UpgradeHelper/Models/ChangeType.cs +28 -0
@@ -0,0 +1,28 @@
1 namespace XFEExtension.NetCore.UpgradeHelper.Models;
2
3 /// <summary>
4 /// 更改类型
5 /// </summary>
6 public enum ChangeType
7 {
8 /// <summary>
9 /// 消息
10 /// </summary>
11 Message,
12 /// <summary>
13 /// 漏洞修复
14 /// </summary>
15 Fix,
16 /// <summary>
17 /// 功能调整
18 /// </summary>
19 Change,
20 /// <summary>
21 /// 功能新增
22 /// </summary>
23 Add,
24 /// <summary>
25 /// 功能移除
26 /// </summary>
27 Remove
28 }
Added XFEExtension.NetCore.UpgradeHelper/Models/ReleaseEntry.cs +16 -0
@@ -0,0 +1,16 @@
1 namespace XFEExtension.NetCore.UpgradeHelper.Models;
2
3 /// <summary>
4 /// 发布条目
5 /// </summary>
6 public partial class ReleaseEntry
7 {
8 /// <summary>
9 /// 更改类型
10 /// </summary>
11 public ChangeType ChangeType { get; set; }
12 /// <summary>
13 /// 文本
14 /// </summary>
15 public string Text { get; set; } = string.Empty;
16 }
Added XFEExtension.NetCore.UpgradeHelper/Models/UpgradeInfoBase.cs +7 -0
@@ -0,0 +1,7 @@
1 namespace XFEExtension.NetCore.UpgradeHelper.Models;
2
3 public abstract class UpgradeInfoBase
4 {
5 public bool IsLatest { get; set; }
6 public string DownloadUrl { get; set; } = string.Empty;
7 }
Added XFEExtension.NetCore.UpgradeHelper/Models/UpgradeInfoNotes.cs +9 -0
@@ -0,0 +1,9 @@
1 using XFEExtension.NetCore.UpgradeHelper.Models;
2
3 namespace ApplicationUpgradeManager.Core.Model
4 {
5 public class UpgradeInfoNotes : UpgradeInfoBase
6 {
7 public string ReleaseNotes { get; set; } = string.Empty;
8 }
9 }
Added XFEExtension.NetCore.UpgradeHelper/Models/UpgradeInfoObject.cs +6 -0
@@ -0,0 +1,6 @@
1 namespace XFEExtension.NetCore.UpgradeHelper.Models;
2
3 public class UpgradeInfoObject:UpgradeInfoBase
4 {
5 public List<VersionInfo> VersionInfo { get; set; } = [];
6 }
Added XFEExtension.NetCore.UpgradeHelper/Models/VersionInfo.cs +22 -0
@@ -0,0 +1,22 @@
1 using CommunityToolkit.Mvvm.ComponentModel;
2
3 namespace XFEExtension.NetCore.UpgradeHelper.Models;
4
5 /// <summary>
6 /// 版本信息
7 /// </summary>
8 public partial class VersionInfo
9 {
10 /// <summary>
11 /// 版本
12 /// </summary>
13 public string Version { get; set; } = string.Empty;
14 /// <summary>
15 /// 发布时间
16 /// </summary>
17 public DateTime PublishTime { get; set; } = DateTime.Today;
18 /// <summary>
19 /// 发布日志
20 /// </summary>
21 public List<ReleaseEntry> ReleaseNotes { get; set; } = [];
22 }
Added XFEExtension.NetCore.UpgradeHelper/Utilities/Converter/JsonDateTimeConverter.cs +17 -0
@@ -0,0 +1,17 @@
1 using System.Text.Json;
2 using System.Text.Json.Serialization;
3
4 namespace XFEExtension.NetCore.UpgradeHelper.Utilities.Converter;
5
6 public class JsonDateTimeConverter : JsonConverter<DateTime>
7 {
8 public override DateTime Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
9 {
10 var dateString = reader.GetString();
11 if(dateString is null)
12 return DateTime.MinValue;
13 return DateTime.Parse(dateString);
14 }
15
16 public override void Write(Utf8JsonWriter writer, DateTime value, JsonSerializerOptions options) => writer.WriteStringValue(value.ToString());
17 }
Added XFEExtension.NetCore.UpgradeHelper/Utilities/Upgrader.cs +58 -0
@@ -0,0 +1,58 @@
1 using ApplicationUpgradeManager.Core.Model;
2 using System.Net.Http.Json;
3 using System.Text;
4 using System.Text.Json;
5 using XFEExtension.NetCore.UpgradeHelper.Models;
6 using XFEExtension.NetCore.UpgradeHelper.Utilities.Converter;
7 using XFEExtension.NetCore.XFETransform.JsonConverter;
8
9 namespace XFEExtension.NetCore.UpgradeHelper.Utilities;
10
11 public class Upgrader(string serverIp)
12 {
13 private static readonly JsonSerializerOptions jsonSerializerOptions = new();
14 public string ServerIp { get; set; } = serverIp;
15
16 static Upgrader() => jsonSerializerOptions.Converters.Add(new JsonDateTimeConverter());
17
18 public async Task<UpgradeInfoNotes> GetReleaseNotes(string appName, string version) => await GetReleaseNotes(appName, ServerIp, version);
19
20 public async Task<UpgradeInfoObject> GetReleaseObject(string appName, string version) => await GetReleaseObject(appName, ServerIp, version);
21
22 public static async Task<UpgradeInfoNotes> GetReleaseNotes(string appName, string serverIp, string version)
23 {
24 using var client = new HttpClient();
25 QueryableJsonNode jsonNode = await (await client.PostAsJsonAsync(serverIp, new
26 {
27 execute = "get_versionInfo",
28 applicationName = appName,
29 clientVersion = version,
30 useJson = false
31 })).Content.ReadAsStringAsync();
32 return new()
33 {
34 IsLatest = bool.Parse(jsonNode["isLatest"]),
35 ReleaseNotes = Encoding.UTF8.GetString(Convert.FromBase64String(jsonNode["releaseNotes"])),
36 DownloadUrl = jsonNode["downloadUrl"]
37 };
38 }
39
40 public static async Task<UpgradeInfoObject> GetReleaseObject(string appName, string serverIp, string version)
41 {
42 using var client = new HttpClient();
43 var result = await (await client.PostAsJsonAsync(serverIp, new
44 {
45 execute = "get_versionInfo",
46 applicationName = appName,
47 clientVersion = version,
48 useJson = true
49 })).Content.ReadAsStringAsync();
50 QueryableJsonNode jsonNode = result;
51 return new()
52 {
53 IsLatest = bool.Parse(jsonNode["isLatest"]),
54 VersionInfo = JsonSerializer.Deserialize<List<VersionInfo>>(Encoding.UTF8.GetString(Convert.FromBase64String(jsonNode["releaseNotes"])), jsonSerializerOptions) ?? [],
55 DownloadUrl = jsonNode["downloadUrl"]
56 };
57 }
58 }
Added XFEExtension.NetCore.UpgradeHelper/XFEExtension.NetCore.UpgradeHelper.csproj +14 -0
@@ -0,0 +1,14 @@
1 <Project Sdk="Microsoft.NET.Sdk">
2
3 <PropertyGroup>
4 <TargetFramework>net8.0</TargetFramework>
5 <ImplicitUsings>enable</ImplicitUsings>
6 <Version>1.0.0</Version>
7 <Nullable>enable</Nullable>
8 </PropertyGroup>
9
10 <ItemGroup>
11 <PackageReference Include="XFEExtension.NetCore" Version="3.3.1" />
12 </ItemGroup>
13
14 </Project>