From a7be04157d794169c77dc77bdcff5e109faf5b5b Mon Sep 17 00:00:00 2001 From: Hill23333 Date: Sat, 10 May 2025 23:07:08 +0800 Subject: [PATCH 1/2] =?UTF-8?q?refactor:=20=E6=B7=BB=E5=8A=A0=20PCL.Neo.Co?= =?UTF-8?q?re?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .run/LinuxPublish.run.xml | 6 + .run/MacOSPublish.run.xml | 6 + .run/WinPublish.run.xml | 6 + PCL.Neo.Core/Const.cs | 28 ++ .../Models/Audio/AudioData.cs | 8 +- .../Models/Audio/AudioFileSearcher.cs | 7 +- .../Models/Minecraft/AssetIndexFile.cs | 4 +- .../Models/Minecraft/Game/Data/Arguments.cs | 7 +- .../Models/Minecraft/Game/Data/GameEntity.cs | 3 +- .../Models/Minecraft/Game/Data/VersionInfo.cs | 8 +- PCL.Neo.Core/Models/Minecraft/Game/Log.cs | 6 + .../Models/Minecraft/Game/Versions.cs | 6 + .../Models/Minecraft/Java/IJavaManager.cs | 5 +- .../Models/Minecraft/Java/JavaData.cs | 6 +- .../Minecraft/Java/JavaFetcherOnline.cs | 8 +- .../Models/Minecraft/Java/JavaManager.cs | 18 +- .../Models/Minecraft/Java/Unix.cs | 8 +- .../Models/Minecraft/Java/Windows.cs | 8 +- .../Models/Minecraft/MetadataFile.cs | 5 +- .../Models/Minecraft/Mod/Modpack.cs | 4 +- .../Models/Minecraft/ReleaseTypeEnum.cs | 2 +- .../Models/Minecraft/VersionManifestFile.cs | 4 +- PCL.Neo.Core/PCL.Neo.Core.csproj | 9 + .../Utils/ExeArchitectureUtils.cs | 5 +- PCL.Neo.Tests/GlobalUsings.cs | 1 - PCL.Neo.Tests/Models/FileHelper/FileTest.cs | 45 ---- .../Models/Minecraft/AssetIndexFileTest.cs | 22 -- PCL.Neo.Tests/Models/Minecraft/JavaTest.cs | 15 -- .../Models/Minecraft/MetadataFileTest.cs | 246 ------------------ .../Minecraft/VersionManifestFileTest.cs | 28 -- PCL.Neo.Tests/Models/Utils/ExeArchitecture.cs | 13 - PCL.Neo.Tests/PCL.Neo.Tests.csproj | 30 --- PCL.Neo.slnx | 2 +- PCL.Neo/App.axaml.cs | 3 - PCL.Neo/Const.cs | 57 ---- PCL.Neo/Models/Minecraft/Game/Log.cs | 12 - PCL.Neo/Models/Minecraft/Game/Versions.cs | 12 - PCL.Neo/PCL.Neo.csproj | 3 + PCL.Neo/Program.cs | 15 +- PCL.Neo/Views/Home/HomeSubView.axaml | 30 ++- PCL.Neo/Views/Home/HomeSubView.axaml.cs | 7 - 41 files changed, 123 insertions(+), 595 deletions(-) create mode 100644 .run/LinuxPublish.run.xml create mode 100644 .run/MacOSPublish.run.xml create mode 100644 .run/WinPublish.run.xml create mode 100644 PCL.Neo.Core/Const.cs rename {PCL.Neo => PCL.Neo.Core}/Models/Audio/AudioData.cs (67%) rename {PCL.Neo => PCL.Neo.Core}/Models/Audio/AudioFileSearcher.cs (87%) rename {PCL.Neo => PCL.Neo.Core}/Models/Minecraft/AssetIndexFile.cs (93%) rename {PCL.Neo => PCL.Neo.Core}/Models/Minecraft/Game/Data/Arguments.cs (97%) rename {PCL.Neo => PCL.Neo.Core}/Models/Minecraft/Game/Data/GameEntity.cs (97%) rename {PCL.Neo => PCL.Neo.Core}/Models/Minecraft/Game/Data/VersionInfo.cs (84%) create mode 100644 PCL.Neo.Core/Models/Minecraft/Game/Log.cs create mode 100644 PCL.Neo.Core/Models/Minecraft/Game/Versions.cs rename {PCL.Neo => PCL.Neo.Core}/Models/Minecraft/Java/IJavaManager.cs (59%) rename {PCL.Neo => PCL.Neo.Core}/Models/Minecraft/Java/JavaData.cs (98%) rename {PCL.Neo => PCL.Neo.Core}/Models/Minecraft/Java/JavaFetcherOnline.cs (97%) rename {PCL.Neo => PCL.Neo.Core}/Models/Minecraft/Java/JavaManager.cs (92%) rename {PCL.Neo => PCL.Neo.Core}/Models/Minecraft/Java/Unix.cs (97%) rename {PCL.Neo => PCL.Neo.Core}/Models/Minecraft/Java/Windows.cs (95%) rename {PCL.Neo => PCL.Neo.Core}/Models/Minecraft/MetadataFile.cs (98%) rename {PCL.Neo => PCL.Neo.Core}/Models/Minecraft/Mod/Modpack.cs (89%) rename {PCL.Neo => PCL.Neo.Core}/Models/Minecraft/ReleaseTypeEnum.cs (89%) rename {PCL.Neo => PCL.Neo.Core}/Models/Minecraft/VersionManifestFile.cs (94%) create mode 100644 PCL.Neo.Core/PCL.Neo.Core.csproj rename {PCL.Neo => PCL.Neo.Core}/Utils/ExeArchitectureUtils.cs (98%) delete mode 100644 PCL.Neo.Tests/GlobalUsings.cs delete mode 100644 PCL.Neo.Tests/Models/FileHelper/FileTest.cs delete mode 100644 PCL.Neo.Tests/Models/Minecraft/AssetIndexFileTest.cs delete mode 100644 PCL.Neo.Tests/Models/Minecraft/JavaTest.cs delete mode 100644 PCL.Neo.Tests/Models/Minecraft/MetadataFileTest.cs delete mode 100644 PCL.Neo.Tests/Models/Minecraft/VersionManifestFileTest.cs delete mode 100644 PCL.Neo.Tests/Models/Utils/ExeArchitecture.cs delete mode 100644 PCL.Neo.Tests/PCL.Neo.Tests.csproj delete mode 100644 PCL.Neo/Models/Minecraft/Game/Log.cs delete mode 100644 PCL.Neo/Models/Minecraft/Game/Versions.cs diff --git a/.run/LinuxPublish.run.xml b/.run/LinuxPublish.run.xml new file mode 100644 index 00000000..5713fd27 --- /dev/null +++ b/.run/LinuxPublish.run.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.run/MacOSPublish.run.xml b/.run/MacOSPublish.run.xml new file mode 100644 index 00000000..0e4bd76d --- /dev/null +++ b/.run/MacOSPublish.run.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.run/WinPublish.run.xml b/.run/WinPublish.run.xml new file mode 100644 index 00000000..cb6230e5 --- /dev/null +++ b/.run/WinPublish.run.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/PCL.Neo.Core/Const.cs b/PCL.Neo.Core/Const.cs new file mode 100644 index 00000000..08f6d936 --- /dev/null +++ b/PCL.Neo.Core/Const.cs @@ -0,0 +1,28 @@ +using System.Runtime.InteropServices; + +namespace PCL.Neo.Core; + +public static class Const +{ + /// + /// 系统是否为64位。 + /// + public static readonly bool Is64Os = Environment.Is64BitOperatingSystem; + public enum RunningOs + { + Windows, + Linux, + MacOs, + Unknown + } + + public static readonly RunningOs Os = RuntimeInformation.IsOSPlatform(OSPlatform.Windows) + ? RunningOs.Windows + : RuntimeInformation.IsOSPlatform(OSPlatform.Linux) + ? RunningOs.Linux + : RuntimeInformation.IsOSPlatform(OSPlatform.OSX) + ? RunningOs.MacOs + : RunningOs.Unknown; + + public static readonly Architecture Architecture = RuntimeInformation.ProcessArchitecture; +} \ No newline at end of file diff --git a/PCL.Neo/Models/Audio/AudioData.cs b/PCL.Neo.Core/Models/Audio/AudioData.cs similarity index 67% rename from PCL.Neo/Models/Audio/AudioData.cs rename to PCL.Neo.Core/Models/Audio/AudioData.cs index 274f3b59..b7a064d7 100644 --- a/PCL.Neo/Models/Audio/AudioData.cs +++ b/PCL.Neo.Core/Models/Audio/AudioData.cs @@ -1,10 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace PCL.Neo.Models.Audio +namespace PCL.Neo.Core.Models.Audio { public enum FileType { diff --git a/PCL.Neo/Models/Audio/AudioFileSearcher.cs b/PCL.Neo.Core/Models/Audio/AudioFileSearcher.cs similarity index 87% rename from PCL.Neo/Models/Audio/AudioFileSearcher.cs rename to PCL.Neo.Core/Models/Audio/AudioFileSearcher.cs index feaf9470..4ab55705 100644 --- a/PCL.Neo/Models/Audio/AudioFileSearcher.cs +++ b/PCL.Neo.Core/Models/Audio/AudioFileSearcher.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; - -namespace PCL.Neo.Models.Audio +namespace PCL.Neo.Core.Models.Audio { public class AudioFileSearcher { diff --git a/PCL.Neo/Models/Minecraft/AssetIndexFile.cs b/PCL.Neo.Core/Models/Minecraft/AssetIndexFile.cs similarity index 93% rename from PCL.Neo/Models/Minecraft/AssetIndexFile.cs rename to PCL.Neo.Core/Models/Minecraft/AssetIndexFile.cs index b3f4efe1..f798506a 100644 --- a/PCL.Neo/Models/Minecraft/AssetIndexFile.cs +++ b/PCL.Neo.Core/Models/Minecraft/AssetIndexFile.cs @@ -1,10 +1,8 @@ -using System; -using System.Collections.Generic; using System.Text.Json; using System.Text.Json.Nodes; using System.Text.Json.Serialization; -namespace PCL.Neo.Models.Minecraft; +namespace PCL.Neo.Core.Models.Minecraft; public class AssetIndexFile { diff --git a/PCL.Neo/Models/Minecraft/Game/Data/Arguments.cs b/PCL.Neo.Core/Models/Minecraft/Game/Data/Arguments.cs similarity index 97% rename from PCL.Neo/Models/Minecraft/Game/Data/Arguments.cs rename to PCL.Neo.Core/Models/Minecraft/Game/Data/Arguments.cs index 85f42aec..4d1e5a33 100644 --- a/PCL.Neo/Models/Minecraft/Game/Data/Arguments.cs +++ b/PCL.Neo.Core/Models/Minecraft/Game/Data/Arguments.cs @@ -1,10 +1,7 @@ -using System; -using System.Collections.Generic; -using System.Linq; using System.Text.RegularExpressions; -using static PCL.Neo.Models.Minecraft.MetadataFile.Rule; +using static PCL.Neo.Core.Models.Minecraft.MetadataFile.Rule; -namespace PCL.Neo.Models.Minecraft.Game.Data +namespace PCL.Neo.Core.Models.Minecraft.Game.Data { public partial class Arguments { diff --git a/PCL.Neo/Models/Minecraft/Game/Data/GameEntity.cs b/PCL.Neo.Core/Models/Minecraft/Game/Data/GameEntity.cs similarity index 97% rename from PCL.Neo/Models/Minecraft/Game/Data/GameEntity.cs rename to PCL.Neo.Core/Models/Minecraft/Game/Data/GameEntity.cs index 2bf5d0b6..fd4163ce 100644 --- a/PCL.Neo/Models/Minecraft/Game/Data/GameEntity.cs +++ b/PCL.Neo.Core/Models/Minecraft/Game/Data/GameEntity.cs @@ -1,7 +1,6 @@ using System.Diagnostics; -using System.IO; -namespace PCL.Neo.Models.Minecraft.Game.Data; +namespace PCL.Neo.Core.Models.Minecraft.Game.Data; public record GameEntityInfo { diff --git a/PCL.Neo/Models/Minecraft/Game/Data/VersionInfo.cs b/PCL.Neo.Core/Models/Minecraft/Game/Data/VersionInfo.cs similarity index 84% rename from PCL.Neo/Models/Minecraft/Game/Data/VersionInfo.cs rename to PCL.Neo.Core/Models/Minecraft/Game/Data/VersionInfo.cs index a5b6036c..aac376ac 100644 --- a/PCL.Neo/Models/Minecraft/Game/Data/VersionInfo.cs +++ b/PCL.Neo.Core/Models/Minecraft/Game/Data/VersionInfo.cs @@ -1,10 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace PCL.Neo.Models.Minecraft.Game.Data +namespace PCL.Neo.Core.Models.Minecraft.Game.Data { public enum Icons : byte { diff --git a/PCL.Neo.Core/Models/Minecraft/Game/Log.cs b/PCL.Neo.Core/Models/Minecraft/Game/Log.cs new file mode 100644 index 00000000..86461fde --- /dev/null +++ b/PCL.Neo.Core/Models/Minecraft/Game/Log.cs @@ -0,0 +1,6 @@ +namespace PCL.Neo.Core.Models.Minecraft.Game +{ + internal class Log + { + } +} diff --git a/PCL.Neo.Core/Models/Minecraft/Game/Versions.cs b/PCL.Neo.Core/Models/Minecraft/Game/Versions.cs new file mode 100644 index 00000000..88496e55 --- /dev/null +++ b/PCL.Neo.Core/Models/Minecraft/Game/Versions.cs @@ -0,0 +1,6 @@ +namespace PCL.Neo.Core.Models.Minecraft.Game +{ + internal class Versions + { + } +} diff --git a/PCL.Neo/Models/Minecraft/Java/IJavaManager.cs b/PCL.Neo.Core/Models/Minecraft/Java/IJavaManager.cs similarity index 59% rename from PCL.Neo/Models/Minecraft/Java/IJavaManager.cs rename to PCL.Neo.Core/Models/Minecraft/Java/IJavaManager.cs index 68ea03be..11eed3ae 100644 --- a/PCL.Neo/Models/Minecraft/Java/IJavaManager.cs +++ b/PCL.Neo.Core/Models/Minecraft/Java/IJavaManager.cs @@ -1,7 +1,4 @@ -using System.Collections.Generic; -using System.Threading.Tasks; - -namespace PCL.Neo.Models.Minecraft.Java; +namespace PCL.Neo.Core.Models.Minecraft.Java; public interface IJavaManager { diff --git a/PCL.Neo/Models/Minecraft/Java/JavaData.cs b/PCL.Neo.Core/Models/Minecraft/Java/JavaData.cs similarity index 98% rename from PCL.Neo/Models/Minecraft/Java/JavaData.cs rename to PCL.Neo.Core/Models/Minecraft/Java/JavaData.cs index 1056ad06..c2420e44 100644 --- a/PCL.Neo/Models/Minecraft/Java/JavaData.cs +++ b/PCL.Neo.Core/Models/Minecraft/Java/JavaData.cs @@ -1,11 +1,7 @@ -using PCL.Neo.Utils; -using System; using System.Diagnostics; -using System.IO; using System.Text.RegularExpressions; -using System.Threading.Tasks; -namespace PCL.Neo.Models.Minecraft.Java; +namespace PCL.Neo.Core.Models.Minecraft.Java; /// /// 每一个 Java 实体的信息类 diff --git a/PCL.Neo/Models/Minecraft/Java/JavaFetcherOnline.cs b/PCL.Neo.Core/Models/Minecraft/Java/JavaFetcherOnline.cs similarity index 97% rename from PCL.Neo/Models/Minecraft/Java/JavaFetcherOnline.cs rename to PCL.Neo.Core/Models/Minecraft/Java/JavaFetcherOnline.cs index 42c33518..0203fa8c 100644 --- a/PCL.Neo/Models/Minecraft/Java/JavaFetcherOnline.cs +++ b/PCL.Neo.Core/Models/Minecraft/Java/JavaFetcherOnline.cs @@ -1,14 +1,8 @@ -using PCL.Neo.Helpers; -using System; -using System.Collections.Generic; using System.Diagnostics; -using System.IO; using System.Text.Json; using System.Text.Json.Nodes; -using System.Threading; -using System.Threading.Tasks; -namespace PCL.Neo.Models.Minecraft.Java; +namespace PCL.Neo.Core.Models.Minecraft.Java; public sealed partial class JavaManager { diff --git a/PCL.Neo/Models/Minecraft/Java/JavaManager.cs b/PCL.Neo.Core/Models/Minecraft/Java/JavaManager.cs similarity index 92% rename from PCL.Neo/Models/Minecraft/Java/JavaManager.cs rename to PCL.Neo.Core/Models/Minecraft/Java/JavaManager.cs index 5359d795..193b6d81 100644 --- a/PCL.Neo/Models/Minecraft/Java/JavaManager.cs +++ b/PCL.Neo.Core/Models/Minecraft/Java/JavaManager.cs @@ -1,16 +1,4 @@ -using PCL.Neo.Helpers; -using PCL.Neo.Utils; -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Threading.Tasks; -using System.Threading; -using System.Text.Json; -using System.Text.Json.Nodes; -using System.Diagnostics; - -namespace PCL.Neo.Models.Minecraft.Java; +namespace PCL.Neo.Core.Models.Minecraft.Java; /// /// 测试 @@ -146,8 +134,8 @@ public void TestOutput() { Console.WriteLine("--------------------"); Console.WriteLine("路径: " + javaEntity.DirectoryPath); - Console.WriteLine("是否兼容: " + javaEntity.Compability); - Console.WriteLine("架构:" + javaEntity.Architecture); + Console.WriteLine((string?)("是否兼容: " + javaEntity.Compability)); + Console.WriteLine((string?)("架构:" + javaEntity.Architecture)); Console.WriteLine("发行商:" + javaEntity.Implementor); Console.WriteLine("版本:" + javaEntity.Version); Console.WriteLine("数字版本:" + javaEntity.SlugVersion); diff --git a/PCL.Neo/Models/Minecraft/Java/Unix.cs b/PCL.Neo.Core/Models/Minecraft/Java/Unix.cs similarity index 97% rename from PCL.Neo/Models/Minecraft/Java/Unix.cs rename to PCL.Neo.Core/Models/Minecraft/Java/Unix.cs index baf4331e..4d14c481 100644 --- a/PCL.Neo/Models/Minecraft/Java/Unix.cs +++ b/PCL.Neo.Core/Models/Minecraft/Java/Unix.cs @@ -1,13 +1,7 @@ -using PCL.Neo.Utils; -using System; -using System.Collections.Generic; using System.Diagnostics; -using System.IO; -using System.Linq; using System.Text.RegularExpressions; -using System.Threading.Tasks; -namespace PCL.Neo.Models.Minecraft.Java +namespace PCL.Neo.Core.Models.Minecraft.Java { /// /// 处理Unix系统下的java搜索 diff --git a/PCL.Neo/Models/Minecraft/Java/Windows.cs b/PCL.Neo.Core/Models/Minecraft/Java/Windows.cs similarity index 95% rename from PCL.Neo/Models/Minecraft/Java/Windows.cs rename to PCL.Neo.Core/Models/Minecraft/Java/Windows.cs index f276a0f8..cff6f204 100644 --- a/PCL.Neo/Models/Minecraft/Java/Windows.cs +++ b/PCL.Neo.Core/Models/Minecraft/Java/Windows.cs @@ -1,12 +1,6 @@ -using PCL.Neo.Utils; -using System; -using System.Collections.Generic; using System.Collections.Immutable; -using System.IO; -using System.Linq; -using System.Threading.Tasks; -namespace PCL.Neo.Models.Minecraft.Java; +namespace PCL.Neo.Core.Models.Minecraft.Java; /// /// Fetches Java installations on Windows. diff --git a/PCL.Neo/Models/Minecraft/MetadataFile.cs b/PCL.Neo.Core/Models/Minecraft/MetadataFile.cs similarity index 98% rename from PCL.Neo/Models/Minecraft/MetadataFile.cs rename to PCL.Neo.Core/Models/Minecraft/MetadataFile.cs index b4148069..f9aa6a33 100644 --- a/PCL.Neo/Models/Minecraft/MetadataFile.cs +++ b/PCL.Neo.Core/Models/Minecraft/MetadataFile.cs @@ -1,11 +1,8 @@ -using System; -using System.Collections.Generic; -using System.Linq; using System.Text.Json; using System.Text.Json.Nodes; using System.Text.Json.Serialization; -namespace PCL.Neo.Models.Minecraft; +namespace PCL.Neo.Core.Models.Minecraft; public class MetadataFile { diff --git a/PCL.Neo/Models/Minecraft/Mod/Modpack.cs b/PCL.Neo.Core/Models/Minecraft/Mod/Modpack.cs similarity index 89% rename from PCL.Neo/Models/Minecraft/Mod/Modpack.cs rename to PCL.Neo.Core/Models/Minecraft/Mod/Modpack.cs index 98e5125c..0daf3005 100644 --- a/PCL.Neo/Models/Minecraft/Mod/Modpack.cs +++ b/PCL.Neo.Core/Models/Minecraft/Mod/Modpack.cs @@ -1,8 +1,6 @@ -using System; -using System.IO; using System.IO.Compression; -namespace PCL.Neo.Models.Minecraft.Mod; +namespace PCL.Neo.Core.Models.Minecraft.Mod; public class ModPack { diff --git a/PCL.Neo/Models/Minecraft/ReleaseTypeEnum.cs b/PCL.Neo.Core/Models/Minecraft/ReleaseTypeEnum.cs similarity index 89% rename from PCL.Neo/Models/Minecraft/ReleaseTypeEnum.cs rename to PCL.Neo.Core/Models/Minecraft/ReleaseTypeEnum.cs index 476c5832..3d54e7e1 100644 --- a/PCL.Neo/Models/Minecraft/ReleaseTypeEnum.cs +++ b/PCL.Neo.Core/Models/Minecraft/ReleaseTypeEnum.cs @@ -1,6 +1,6 @@ using System.Text.Json.Serialization; -namespace PCL.Neo.Models.Minecraft; +namespace PCL.Neo.Core.Models.Minecraft; [JsonConverter(typeof(JsonStringEnumConverter))] public enum ReleaseTypeEnum diff --git a/PCL.Neo/Models/Minecraft/VersionManifestFile.cs b/PCL.Neo.Core/Models/Minecraft/VersionManifestFile.cs similarity index 94% rename from PCL.Neo/Models/Minecraft/VersionManifestFile.cs rename to PCL.Neo.Core/Models/Minecraft/VersionManifestFile.cs index 76e7760b..d3d3134f 100644 --- a/PCL.Neo/Models/Minecraft/VersionManifestFile.cs +++ b/PCL.Neo.Core/Models/Minecraft/VersionManifestFile.cs @@ -1,10 +1,8 @@ -using System; -using System.Collections.Generic; using System.Text.Json; using System.Text.Json.Nodes; using System.Text.Json.Serialization; -namespace PCL.Neo.Models.Minecraft; +namespace PCL.Neo.Core.Models.Minecraft; public class VersionManifestFile { diff --git a/PCL.Neo.Core/PCL.Neo.Core.csproj b/PCL.Neo.Core/PCL.Neo.Core.csproj new file mode 100644 index 00000000..17b910f6 --- /dev/null +++ b/PCL.Neo.Core/PCL.Neo.Core.csproj @@ -0,0 +1,9 @@ + + + + net9.0 + enable + enable + + + diff --git a/PCL.Neo/Utils/ExeArchitectureUtils.cs b/PCL.Neo.Core/Utils/ExeArchitectureUtils.cs similarity index 98% rename from PCL.Neo/Utils/ExeArchitectureUtils.cs rename to PCL.Neo.Core/Utils/ExeArchitectureUtils.cs index 2d5c3deb..c7228cc9 100644 --- a/PCL.Neo/Utils/ExeArchitectureUtils.cs +++ b/PCL.Neo.Core/Utils/ExeArchitectureUtils.cs @@ -1,9 +1,6 @@ -using PCL.Neo.Models.Minecraft.Java; -using System; -using System.IO; using System.Runtime.InteropServices; -namespace PCL.Neo.Utils; +namespace PCL.Neo.Core.Utils; /// /// 描述某个 Java 环境与当前系统是否兼容 diff --git a/PCL.Neo.Tests/GlobalUsings.cs b/PCL.Neo.Tests/GlobalUsings.cs deleted file mode 100644 index cefced49..00000000 --- a/PCL.Neo.Tests/GlobalUsings.cs +++ /dev/null @@ -1 +0,0 @@ -global using NUnit.Framework; \ No newline at end of file diff --git a/PCL.Neo.Tests/Models/FileHelper/FileTest.cs b/PCL.Neo.Tests/Models/FileHelper/FileTest.cs deleted file mode 100644 index eff3b0f0..00000000 --- a/PCL.Neo.Tests/Models/FileHelper/FileTest.cs +++ /dev/null @@ -1,45 +0,0 @@ -using PCL.Neo.Models.Minecraft.Java; -using PCL.Neo.Models.Minecraft.Mod; - -namespace PCL.Neo.Tests.Models.FileHelper; - -public class FileTest -{ - [Test] - public async Task Download() - { - await PCL.Neo.Helpers.FileHelper.DownloadFileAsync(new Uri( - "https://piston-meta.mojang.com/v1/products/java-runtime/2ec0cc96c44e5a76b9c8b7c39df7210883d12871/all.json"), - Path.Combine(Path.GetTempPath(), "all.json")); - Console.WriteLine(Path.GetTempPath()); - } - - [Test] - public async Task Fetch() - { - await JavaManager.FetchJavaOnline("mac-os-arm64", "/Users/amagicpear/Downloads/PCL2Test", - JavaManager.MojangJavaVersion.Δ, - new Progress<(int, int)>((value) => - { - Console.WriteLine($"下载进度:已下载{value.Item1}/总文件数{value.Item2}"); - })); - // await Helpers.FileHelper.FetchJavaOnline("windows-x64",@"C:\Users\AMagicPear\Downloads\PCL2Test"); - } - - [Test] - public void ModPackTest() - { - ModPack.InstallPackModrinth("/Users/amagicpear/Downloads/1.20.4-Fabric 0.15.3/modpack.mrpack", "/Users/amagicpear/Downloads/TestModPack"); - } - - [Test] - public void MojangVersionTest() - { - Console.WriteLine(JavaManager.MojangJavaVersion.Δ.Value); - } - - [Test] - public async Task SelectFileTest(){ - // await Helpers.FileHelper.SelectFile("Test"); - } -} \ No newline at end of file diff --git a/PCL.Neo.Tests/Models/Minecraft/AssetIndexFileTest.cs b/PCL.Neo.Tests/Models/Minecraft/AssetIndexFileTest.cs deleted file mode 100644 index 03736911..00000000 --- a/PCL.Neo.Tests/Models/Minecraft/AssetIndexFileTest.cs +++ /dev/null @@ -1,22 +0,0 @@ -using PCL.Neo.Models.Minecraft; -using System.Text.Json.Nodes; - -namespace PCL.Neo.Tests.Models.Minecraft; - -public class AssetIndexFileTest -{ - [Test] - public void Parse() - { - var aif = AssetIndexFile.Parse(File.ReadAllText("./pre-1.6.json")); - //Assert.NotNull(aif); - Assert.That(aif.Objects, Is.Not.Empty); - foreach (var (path, info) in aif.Objects) - { - Assert.That(path, Is.Not.Empty); - Assert.That(info, Is.Not.Null); - Assert.That(info.Size, Is.Not.Zero); - Assert.That(info.Hash, Is.Not.Empty); - } - } -} \ No newline at end of file diff --git a/PCL.Neo.Tests/Models/Minecraft/JavaTest.cs b/PCL.Neo.Tests/Models/Minecraft/JavaTest.cs deleted file mode 100644 index 999943cd..00000000 --- a/PCL.Neo.Tests/Models/Minecraft/JavaTest.cs +++ /dev/null @@ -1,15 +0,0 @@ -using PCL.Neo.Models.Minecraft.Java; -using PCL.Neo.Utils; - -namespace PCL.Neo.Tests.Models.Minecraft -{ - public class JavaTest - { - [Test] - public async Task Test() - { - JavaManager javaInstance = new(); - await javaInstance.JavaListInit(); - } - } -} \ No newline at end of file diff --git a/PCL.Neo.Tests/Models/Minecraft/MetadataFileTest.cs b/PCL.Neo.Tests/Models/Minecraft/MetadataFileTest.cs deleted file mode 100644 index a99d784a..00000000 --- a/PCL.Neo.Tests/Models/Minecraft/MetadataFileTest.cs +++ /dev/null @@ -1,246 +0,0 @@ -using PCL.Neo.Models.Minecraft; -using System.Text.Json.Nodes; - -namespace PCL.Neo.Tests.Models.Minecraft; - -public class MetadataFileTest -{ - [Test] - public void Parse() - { - foreach (var metadataFilePath in Directory.EnumerateFiles("./MCMetadataFiles")) - { - var jsonObj = JsonNode.Parse(File.ReadAllText(metadataFilePath))!.AsObject(); - var meta = MetadataFile.Parse(jsonObj); - Assert.That(meta.Arguments.Game, Is.Not.Empty); - if (jsonObj.ContainsKey("arguments")) - { - Assert.That(meta.Arguments.Game.Count, Is.EqualTo(jsonObj["arguments"]!["game"]!.AsArray().Count)); - } - - Assert.Multiple(() => - { - Assert.That(meta.Assets, Is.Not.Empty); - Assert.That(meta.AssetIndex.Id, Is.Not.Empty); - Assert.That(meta.AssetIndex.Path, Is.Null); - Assert.That(meta.AssetIndex.Sha1, Is.Not.Empty); - Assert.That(meta.AssetIndex.Size, Is.Not.Zero); - Assert.That(meta.AssetIndex.TotalSize, Is.Not.Zero); - }); - Assert.That(meta.Downloads, Is.Not.Empty); - foreach ((string id, MetadataFile.RemoteFileModel file) in meta.Downloads) - { - Assert.Multiple(() => - { - Assert.That(id, Is.Not.Empty); - Assert.That(file.Path, Is.Null); - Assert.That(file.Sha1, Is.Not.Empty); - Assert.That(file.Size, Is.Not.Zero); - Assert.That(file.Url, Is.Not.Empty); - }); - } - - Assert.That(meta.Id, Is.Not.Empty); - Assert.Multiple(() => - { - if (meta.JavaVersion is null) - return; - Assert.That(meta.JavaVersion.Component, Is.Not.Empty); - Assert.That(meta.JavaVersion.MajorVersion, Is.Not.Zero); - }); - Assert.That(meta.Libraries.Count, Is.EqualTo(jsonObj["libraries"]!.AsArray().Count)); - Assert.Multiple(() => - { - if (meta.Logging is null) - return; - Assert.That(meta.Logging, Is.Not.Empty); - foreach ((string id, MetadataFile.LoggingModel logging) in meta.Logging) - { - Assert.That(id, Is.Not.Empty); - Assert.That(logging.Argument, Is.Not.Empty); - Assert.That(logging.File, Is.Not.Null); - Assert.Multiple(() => - { - Assert.That(logging.File.Id, Is.Not.Empty); - Assert.That(logging.File.Path, Is.Null); - Assert.That(logging.File.Sha1, Is.Not.Empty); - Assert.That(logging.File.Size, Is.Not.Zero); - Assert.That(logging.File.Url, Is.Not.Empty); - }); - Assert.That(logging.Type, Is.Not.Empty); - } - }); - Assert.That(meta.MainClass, Is.Not.Empty); - Assert.That(meta.MinimumLauncherVersion, Is.Not.Zero); - Assert.That(meta.ReleaseTime, Is.Not.Empty); - Assert.That(meta.Time, Is.Not.Empty); - Assert.That(meta.Type, Is.Not.EqualTo(ReleaseTypeEnum.Unknown)); - } - } - - [Test] - public void ArgumentsParsing() - { - object[] testGameArgs = - [ - "--username", - "${auth_player_name}", - "--version", - "${version_name}", - "--gameDir", - "${game_directory}", - "--assetsDir", - "${assets_root}", - "--assetIndex", - "${assets_index_name}", - "--uuid", - "${auth_uuid}", - "--accessToken", - "${auth_access_token}", - "--clientId", - "${clientid}", - "--xuid", - "${auth_xuid}", - "--userType", - "${user_type}", - "--versionType", - "${version_type}", - new MetadataFile.ConditionalArg - { - Rules = - [ - new MetadataFile.Rule - { - Action = MetadataFile.Rule.ActionEnum.Allow, - Features = new Dictionary { ["is_demo_user"] = true } - } - ], - Value = ["--demo"] - }, - new MetadataFile.ConditionalArg - { - Rules = - [ - new MetadataFile.Rule - { - Action = MetadataFile.Rule.ActionEnum.Allow, - Features = new Dictionary { ["has_custom_resolution"] = true } - } - ], - Value = - [ - "--width", - "${resolution_width}", - "--height", - "${resolution_height}" - ] - }, - new MetadataFile.ConditionalArg - { - Rules = - [ - new MetadataFile.Rule - { - Action = MetadataFile.Rule.ActionEnum.Allow, - Features = new Dictionary { ["has_quick_plays_support"] = true } - } - ], - Value = - [ - "--quickPlayPath", - "${quickPlayPath}" - ] - }, - new MetadataFile.ConditionalArg - { - Rules = - [ - new MetadataFile.Rule - { - Action = MetadataFile.Rule.ActionEnum.Allow, - Features = new Dictionary { ["is_quick_play_singleplayer"] = true } - } - ], - Value = - [ - "--quickPlaySingleplayer", - "${quickPlaySingleplayer}" - ] - }, - new MetadataFile.ConditionalArg - { - Rules = - [ - new MetadataFile.Rule - { - Action = MetadataFile.Rule.ActionEnum.Allow, - Features = new Dictionary { ["is_quick_play_multiplayer"] = true } - } - ], - Value = - [ - "--quickPlayMultiplayer", - "${quickPlayMultiplayer}" - ] - }, - new MetadataFile.ConditionalArg - { - Rules = - [ - new MetadataFile.Rule - { - Action = MetadataFile.Rule.ActionEnum.Allow, - Features = new Dictionary { ["is_quick_play_realms"] = true } - } - ], - Value = - [ - "--quickPlayRealms", - "${quickPlayRealms}" - ] - } - ]; - - var jsonObj = JsonNode.Parse(File.ReadAllText("./MCMetadataFiles/1.21.5.json"))!.AsObject(); - var meta = MetadataFile.Parse(jsonObj); - Assert.That(meta.Arguments.Game.Count, Is.EqualTo(testGameArgs.Length)); - for (int i = 0; i < meta.Arguments.Game.Count; i++) - { - if (testGameArgs[i] is string) - { - Assert.That(meta.Arguments.Game[i].Value.Count, Is.EqualTo(1)); - Assert.That(meta.Arguments.Game[i].Value[0], Is.EqualTo(testGameArgs[i])); - } - else - { - var arg = meta.Arguments.Game[i]; - var testArg = (MetadataFile.ConditionalArg)testGameArgs[i]; - - Assert.That(arg.Value.SequenceEqual(testArg.Value), Is.True); - Assert.That( - (arg.Rules is null && testArg.Rules is null) || - (arg.Rules is not null && testArg.Rules is not null)); - if (arg.Rules is not null && testArg.Rules is not null) - { - Assert.That(arg.Rules.Count, Is.EqualTo(testArg.Rules.Count)); - foreach ((MetadataFile.Rule rule, MetadataFile.Rule testRule) in arg.Rules.Zip(testArg.Rules)) - { - Assert.That(rule.Action, Is.EqualTo(testRule.Action)); - Assert.That((rule.Features is null && testRule.Features is null) || - (rule.Features is not null && testRule.Features is not null)); - if (rule.Features is not null && testRule.Features is not null) - Assert.That(rule.Features.SequenceEqual(testRule.Features)); - Assert.That((rule.Os is null && testRule.Os is null) || - (rule.Os is not null && testRule.Os is not null)); - if (rule.Os is not null && testRule.Os is not null) - { - Assert.That(rule.Os.Arch, Is.EqualTo(testRule.Os.Arch)); - Assert.That(rule.Os.Name, Is.EqualTo(testRule.Os.Name)); - Assert.That(rule.Os.Version, Is.EqualTo(testRule.Os.Version)); - } - } - } - } - } - } -} \ No newline at end of file diff --git a/PCL.Neo.Tests/Models/Minecraft/VersionManifestFileTest.cs b/PCL.Neo.Tests/Models/Minecraft/VersionManifestFileTest.cs deleted file mode 100644 index e0395311..00000000 --- a/PCL.Neo.Tests/Models/Minecraft/VersionManifestFileTest.cs +++ /dev/null @@ -1,28 +0,0 @@ -using PCL.Neo.Models.Minecraft; - -namespace PCL.Neo.Tests.Models.Minecraft; - -public class VersionManifestFileTest -{ - [Test] - public void Parse() - { - var vmf = VersionManifestFile.Parse(File.ReadAllText("./version_manifest.json")); - //Assert.IsNotNull(vmf); - Assert.That(vmf.Latest, Is.Not.Empty); - Assert.That(vmf.Latest.ContainsKey(ReleaseTypeEnum.Release)); - Assert.That(vmf.Latest.ContainsKey(ReleaseTypeEnum.Snapshot)); - Assert.That(vmf.Latest[ReleaseTypeEnum.Release], Is.Not.Empty); - Assert.That(vmf.Latest[ReleaseTypeEnum.Snapshot], Is.Not.Empty); - - Assert.That(vmf.Versions, Is.Not.Empty); - foreach (var v in vmf.Versions) - { - Assert.That(v.Id, Is.Not.Empty); - Assert.That(v.Type, Is.Not.EqualTo(ReleaseTypeEnum.Unknown)); - Assert.That(v.Url, Is.Not.Empty); - Assert.That(v.Time, Is.Not.Empty); - Assert.That(v.ReleaseTime, Is.Not.Empty); - } - } -} \ No newline at end of file diff --git a/PCL.Neo.Tests/Models/Utils/ExeArchitecture.cs b/PCL.Neo.Tests/Models/Utils/ExeArchitecture.cs deleted file mode 100644 index 5e81c485..00000000 --- a/PCL.Neo.Tests/Models/Utils/ExeArchitecture.cs +++ /dev/null @@ -1,13 +0,0 @@ -using PCL.Neo.Utils; - -namespace PCL.Neo.Tests.Models.Utils; - -public class ExeArchitecture -{ - [Test] - public void TestArchitecture() - { - string path = "/Users/amagicpear/Downloads/file_zip_win32_x64.exe"; - ExeArchitectureUtils.GetExecutableArchitecture(path); - } -} \ No newline at end of file diff --git a/PCL.Neo.Tests/PCL.Neo.Tests.csproj b/PCL.Neo.Tests/PCL.Neo.Tests.csproj deleted file mode 100644 index 169fe838..00000000 --- a/PCL.Neo.Tests/PCL.Neo.Tests.csproj +++ /dev/null @@ -1,30 +0,0 @@ - - - - net9.0 - enable - enable - - false - true - - - - - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - - - - - - - diff --git a/PCL.Neo.slnx b/PCL.Neo.slnx index 228e9ba2..a55f9c51 100644 --- a/PCL.Neo.slnx +++ b/PCL.Neo.slnx @@ -1,4 +1,4 @@ - + \ No newline at end of file diff --git a/PCL.Neo/App.axaml.cs b/PCL.Neo/App.axaml.cs index e31caa2b..fc5add67 100644 --- a/PCL.Neo/App.axaml.cs +++ b/PCL.Neo/App.axaml.cs @@ -9,7 +9,6 @@ using PCL.Neo.Services; using Avalonia.Platform.Storage; using PCL.Neo.Helpers; -using PCL.Neo.Models.Minecraft.Java; using PCL.Neo.Utils; using PCL.Neo.ViewModels; using PCL.Neo.ViewModels.Download; @@ -42,7 +41,6 @@ public override void Initialize() .AddSingleton(s => new NavigationService(s)) .AddSingleton() - .AddSingleton() .BuildServiceProvider(); public override void OnFrameworkInitializationCompleted() @@ -50,7 +48,6 @@ public override void OnFrameworkInitializationCompleted() Ioc.Default.ConfigureServices(ConfigureServices()); var vm = Ioc.Default.GetRequiredService(); - Task.Run(Ioc.Default.GetRequiredService().JavaListInit); if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop) { // Avoid duplicate validations from both Avalonia and the CommunityToolkit. diff --git a/PCL.Neo/Const.cs b/PCL.Neo/Const.cs index 9eb3643c..4329a303 100644 --- a/PCL.Neo/Const.cs +++ b/PCL.Neo/Const.cs @@ -25,61 +25,4 @@ public static class Const /// 包含程序名的完整路径。 /// public static readonly string PathWithName = Process.GetCurrentProcess().MainModule!.FileName; - - /// - /// 系统是否为64位。 - /// - public static readonly bool Is64Os = Environment.Is64BitOperatingSystem; - - public enum RunningOs - { - Windows, - Linux, - MacOs, - Unknown - } - - public static readonly RunningOs Os = RuntimeInformation.IsOSPlatform(OSPlatform.Windows) - ? RunningOs.Windows - : RuntimeInformation.IsOSPlatform(OSPlatform.Linux) - ? RunningOs.Linux - : RuntimeInformation.IsOSPlatform(OSPlatform.OSX) - ? RunningOs.MacOs - : RunningOs.Unknown; - - public static readonly Architecture Architecture = RuntimeInformation.ProcessArchitecture; - - /// - /// 根据 MOJANG API 命名 - /// - public static string Platform - { - get - { - return Os switch - { - RunningOs.Windows => Architecture switch - { - Architecture.X64 => "windows-x64", - Architecture.X86 => "windows-x86", - Architecture.Arm64 => "windows-arm64", - _ => "unknown" - }, - RunningOs.Linux => Architecture switch - { - Architecture.X64 => "linux", - Architecture.X86 => "linux-i386", - _ => "unknown" - }, - RunningOs.MacOs => Architecture switch - { - Architecture.X64 => "mac-os", - Architecture.Arm64 => "mac-os-arm64", - _ => "unknown" - }, - RunningOs.Unknown => "unknown", - _ => "unknown" - }; - } - } } \ No newline at end of file diff --git a/PCL.Neo/Models/Minecraft/Game/Log.cs b/PCL.Neo/Models/Minecraft/Game/Log.cs deleted file mode 100644 index 26a914f7..00000000 --- a/PCL.Neo/Models/Minecraft/Game/Log.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace PCL.Neo.Models.Minecraft.Game -{ - internal class Log - { - } -} diff --git a/PCL.Neo/Models/Minecraft/Game/Versions.cs b/PCL.Neo/Models/Minecraft/Game/Versions.cs deleted file mode 100644 index 16d331bb..00000000 --- a/PCL.Neo/Models/Minecraft/Game/Versions.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace PCL.Neo.Models.Minecraft.Game -{ - internal class Versions - { - } -} diff --git a/PCL.Neo/PCL.Neo.csproj b/PCL.Neo/PCL.Neo.csproj index 7a5cb1eb..962f4588 100644 --- a/PCL.Neo/PCL.Neo.csproj +++ b/PCL.Neo/PCL.Neo.csproj @@ -68,6 +68,9 @@ + + + diff --git a/PCL.Neo/Program.cs b/PCL.Neo/Program.cs index 85b00641..cda388e3 100644 --- a/PCL.Neo/Program.cs +++ b/PCL.Neo/Program.cs @@ -1,5 +1,6 @@ using System; using Avalonia; +using Avalonia.Media; namespace PCL.Neo { @@ -17,6 +18,18 @@ public static AppBuilder BuildAvaloniaApp() => AppBuilder.Configure() .UsePlatformDetect() .WithInterFont() - .LogToTrace(); + .LogToTrace() + .With(new FontManagerOptions + { + FontFallbacks = + [ + new() {FontFamily = "HarmonyOS Sans SC"}, + new() {FontFamily = "鸿蒙黑体 SC"}, + new() {FontFamily = ".AppleSystemUIFont"}, + new() {FontFamily = "Microsoft YaHei UI"}, + new() {FontFamily = "思源黑体 CN"}, + new() {FontFamily = "Noto Sans CJK SC"} + ] + }); } } diff --git a/PCL.Neo/Views/Home/HomeSubView.axaml b/PCL.Neo/Views/Home/HomeSubView.axaml index 20791f18..9e14a307 100644 --- a/PCL.Neo/Views/Home/HomeSubView.axaml +++ b/PCL.Neo/Views/Home/HomeSubView.axaml @@ -1,13 +1,16 @@ - + - - + diff --git a/PCL.Neo/Views/Home/HomeSubView.axaml.cs b/PCL.Neo/Views/Home/HomeSubView.axaml.cs index ee68afb1..3f260cc6 100644 --- a/PCL.Neo/Views/Home/HomeSubView.axaml.cs +++ b/PCL.Neo/Views/Home/HomeSubView.axaml.cs @@ -4,7 +4,6 @@ using CommunityToolkit.Mvvm.DependencyInjection; using PCL.Neo.Controls; using PCL.Neo.Helpers; -using PCL.Neo.Models.Minecraft.Java; using PCL.Neo.Services; using System; using System.Linq; @@ -28,10 +27,4 @@ private void Button2_OnClick(object? sender, RoutedEventArgs e) { this.TestLoading.State = MyLoading.LoadingState.Error; } - - private void Search_Java_Button(object? sender, RoutedEventArgs e) - { - // var testPath = Ioc.Default.GetService()?.SelectFile("Test"); - Task.Run(Ioc.Default.GetRequiredService().Refresh); - } } \ No newline at end of file From 5b81ba282148a580febd050c37dd13c1c2515415 Mon Sep 17 00:00:00 2001 From: AMagicPear Date: Sat, 10 May 2025 23:21:46 +0800 Subject: [PATCH 2/2] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E8=BF=81=E7=A7=BB?= =?UTF-8?q?=E5=90=8E=E7=9A=84=E4=BE=9D=E8=B5=96=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PCL.Neo.Core/Const.cs | 34 +++++++++++++++++++ .../Helpers/FileHelper.cs | 10 +----- .../Models/Minecraft/Java/JavaData.cs | 1 + .../Minecraft/Java/JavaFetcherOnline.cs | 3 +- .../Models/Minecraft/Java/JavaManager.cs | 2 ++ PCL.Neo.Core/Models/Minecraft/Java/Unix.cs | 1 + PCL.Neo.Core/Models/Minecraft/Java/Windows.cs | 1 + PCL.Neo.Core/PCL.Neo.Core.csproj | 4 +++ 8 files changed, 46 insertions(+), 10 deletions(-) rename {PCL.Neo => PCL.Neo.Core}/Helpers/FileHelper.cs (96%) diff --git a/PCL.Neo.Core/Const.cs b/PCL.Neo.Core/Const.cs index 08f6d936..e5731502 100644 --- a/PCL.Neo.Core/Const.cs +++ b/PCL.Neo.Core/Const.cs @@ -25,4 +25,38 @@ public enum RunningOs : RunningOs.Unknown; public static readonly Architecture Architecture = RuntimeInformation.ProcessArchitecture; + + /// + /// 根据 MOJANG API 命名 + /// + public static string Platform + { + get + { + return Os switch + { + RunningOs.Windows => Architecture switch + { + Architecture.X64 => "windows-x64", + Architecture.X86 => "windows-x86", + Architecture.Arm64 => "windows-arm64", + _ => "unknown" + }, + RunningOs.Linux => Architecture switch + { + Architecture.X64 => "linux", + Architecture.X86 => "linux-i386", + _ => "unknown" + }, + RunningOs.MacOs => Architecture switch + { + Architecture.X64 => "mac-os", + Architecture.Arm64 => "mac-os-arm64", + _ => "unknown" + }, + RunningOs.Unknown => "unknown", + _ => "unknown" + }; + } + } } \ No newline at end of file diff --git a/PCL.Neo/Helpers/FileHelper.cs b/PCL.Neo.Core/Helpers/FileHelper.cs similarity index 96% rename from PCL.Neo/Helpers/FileHelper.cs rename to PCL.Neo.Core/Helpers/FileHelper.cs index 346c9c55..4485482d 100644 --- a/PCL.Neo/Helpers/FileHelper.cs +++ b/PCL.Neo.Core/Helpers/FileHelper.cs @@ -1,16 +1,8 @@ -using Avalonia.Platform.Storage; -using CommunityToolkit.Mvvm.DependencyInjection; -using PCL.Neo.Services; -using System; using System.Diagnostics; -using System.IO; -using System.Net.Http; using System.Runtime.InteropServices; using System.Runtime.Versioning; -using System.Threading; -using System.Threading.Tasks; -namespace PCL.Neo.Helpers; +namespace PCL.Neo.Core.Helpers; /// /// 一些文件操作和下载请求之类的 diff --git a/PCL.Neo.Core/Models/Minecraft/Java/JavaData.cs b/PCL.Neo.Core/Models/Minecraft/Java/JavaData.cs index c2420e44..bba3df0e 100644 --- a/PCL.Neo.Core/Models/Minecraft/Java/JavaData.cs +++ b/PCL.Neo.Core/Models/Minecraft/Java/JavaData.cs @@ -1,3 +1,4 @@ +using PCL.Neo.Core.Utils; using System.Diagnostics; using System.Text.RegularExpressions; diff --git a/PCL.Neo.Core/Models/Minecraft/Java/JavaFetcherOnline.cs b/PCL.Neo.Core/Models/Minecraft/Java/JavaFetcherOnline.cs index 0203fa8c..c138cbaf 100644 --- a/PCL.Neo.Core/Models/Minecraft/Java/JavaFetcherOnline.cs +++ b/PCL.Neo.Core/Models/Minecraft/Java/JavaFetcherOnline.cs @@ -1,3 +1,4 @@ +using PCL.Neo.Core.Helpers; using System.Diagnostics; using System.Text.Json; using System.Text.Json.Nodes; @@ -105,7 +106,7 @@ public sealed record MojangJavaVersion(string Value) } string localFilePath = Path.Combine(destinationFolder, - filePath.Replace("/", Const.Sep.ToString())); + filePath.Replace("/", Path.DirectorySeparatorChar.ToString())); if (isExecutable) executableFiles.Add(localFilePath); Directory.CreateDirectory(Path.GetDirectoryName(localFilePath)!); // 有的文件有LZMA压缩但是有的 tm 没有,尼玛搞了个解压缩发现文件少了几个 diff --git a/PCL.Neo.Core/Models/Minecraft/Java/JavaManager.cs b/PCL.Neo.Core/Models/Minecraft/Java/JavaManager.cs index 193b6d81..317a1f31 100644 --- a/PCL.Neo.Core/Models/Minecraft/Java/JavaManager.cs +++ b/PCL.Neo.Core/Models/Minecraft/Java/JavaManager.cs @@ -1,3 +1,5 @@ +using PCL.Neo.Core.Utils; + namespace PCL.Neo.Core.Models.Minecraft.Java; /// diff --git a/PCL.Neo.Core/Models/Minecraft/Java/Unix.cs b/PCL.Neo.Core/Models/Minecraft/Java/Unix.cs index 4d14c481..9c2362ed 100644 --- a/PCL.Neo.Core/Models/Minecraft/Java/Unix.cs +++ b/PCL.Neo.Core/Models/Minecraft/Java/Unix.cs @@ -1,3 +1,4 @@ +using PCL.Neo.Core.Utils; using System.Diagnostics; using System.Text.RegularExpressions; diff --git a/PCL.Neo.Core/Models/Minecraft/Java/Windows.cs b/PCL.Neo.Core/Models/Minecraft/Java/Windows.cs index cff6f204..17681ad6 100644 --- a/PCL.Neo.Core/Models/Minecraft/Java/Windows.cs +++ b/PCL.Neo.Core/Models/Minecraft/Java/Windows.cs @@ -1,3 +1,4 @@ +using PCL.Neo.Core.Utils; using System.Collections.Immutable; namespace PCL.Neo.Core.Models.Minecraft.Java; diff --git a/PCL.Neo.Core/PCL.Neo.Core.csproj b/PCL.Neo.Core/PCL.Neo.Core.csproj index 17b910f6..a99d4376 100644 --- a/PCL.Neo.Core/PCL.Neo.Core.csproj +++ b/PCL.Neo.Core/PCL.Neo.Core.csproj @@ -6,4 +6,8 @@ enable + + + +