XFEExtension.NetCore.UpgradeHelper
【DLL】对接ApplicationUpgradeManager的nuget包,可以快速实现软件版本更新请求
关注
0
Fork
0
Star
0
返回提交历史
Added
XFEExtension.NetCore.UpgradeHelper.sln
+25
-0
Added
XFEExtension.NetCore.UpgradeHelper/Models/ChangeType.cs
+28
-0
Added
XFEExtension.NetCore.UpgradeHelper/Models/ReleaseEntry.cs
+16
-0
Added
XFEExtension.NetCore.UpgradeHelper/Models/UpgradeInfoBase.cs
+7
-0
Added
XFEExtension.NetCore.UpgradeHelper/Models/UpgradeInfoNotes.cs
+9
-0
Added
XFEExtension.NetCore.UpgradeHelper/Models/UpgradeInfoObject.cs
+6
-0
Added
XFEExtension.NetCore.UpgradeHelper/Models/VersionInfo.cs
+22
-0
Added
XFEExtension.NetCore.UpgradeHelper/Utilities/Converter/JsonDateTimeConverter.cs
+17
-0
Added
XFEExtension.NetCore.UpgradeHelper/Utilities/Upgrader.cs
+58
-0
Added
XFEExtension.NetCore.UpgradeHelper/XFEExtension.NetCore.UpgradeHelper.csproj
+14
-0
XFEstudio/XFEExtension.NetCore.UpgradeHelper
添加项目文件。
f237630
代码差异
10 个文件
+202
-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
@@ -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
}
@@ -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
}
@@ -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
}
@@ -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
}
@@ -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
}
@@ -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
}
@@ -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
}
@@ -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
}
@@ -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>