From 340e7457f8178b69aeedafca35065d74cd169dd3 Mon Sep 17 00:00:00 2001 From: ENC_Euphony <2330458484@qq.com> Date: Fri, 1 Aug 2025 23:27:22 +0800 Subject: [PATCH 1/2] =?UTF-8?q?imp(VersionOverall):=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E7=89=88=E6=9C=AC=E9=87=8D=E5=91=BD=E5=90=8D=E5=A4=84=E7=90=86?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PageVersion/PageVersionOverall.xaml.vb | 53 +++++++++++++++++-- 1 file changed, 48 insertions(+), 5 deletions(-) diff --git a/Plain Craft Launcher 2/Pages/PageVersion/PageVersionOverall.xaml.vb b/Plain Craft Launcher 2/Pages/PageVersion/PageVersionOverall.xaml.vb index 075e7eb..e2f5565 100644 --- a/Plain Craft Launcher 2/Pages/PageVersion/PageVersionOverall.xaml.vb +++ b/Plain Craft Launcher 2/Pages/PageVersion/PageVersionOverall.xaml.vb @@ -116,16 +116,18 @@ Dim TempName As String = NewName & "_temp" Dim TempPath As String = PathMcFolder & "versions\" & TempName & "\" Dim IsCaseChangedOnly As Boolean = NewName.ToLower = OldName.ToLower - '重新读取版本 JSON 信息,避免 JsonObject 中已被合并的项被重新存储 + + '读取版本 JSON 信息 Dim JsonObject As JObject + Dim OldJsonPath As String = "" Try - Dim JsonPath As String = PageVersionLeft.Version.GetJsonPath() - JsonObject = GetJson(ReadFile(JsonPath)) - File.Delete(JsonPath) + OldJsonPath = PageVersionLeft.Version.GetJsonPath() + JsonObject = GetJson(ReadFile(OldJsonPath)) Catch ex As Exception Log(ex, "在重命名读取 json 时失败") JsonObject = PageVersionLeft.Version.JsonObject End Try + '重命名主文件夹 My.Computer.FileSystem.RenameDirectory(OldPath, TempName) My.Computer.FileSystem.RenameDirectory(TempPath, NewName) @@ -160,13 +162,54 @@ If ReadIni(PathMcFolder & "PCL.ini", "Version") = OldName Then WriteIni(PathMcFolder & "PCL.ini", "Version", NewName) End If - '写入版本 Json + + '处理JSON文件:先写入新文件,再删除旧文件 Try + '更新JSON内容中的id JsonObject("id") = NewName + '写入新的JSON文件 WriteFile(NewPath & NewName & ".json", JsonObject.ToString) + + '删除旧的JSON文件(现在在新路径下) + Dim OldJsonInNewPath As String = NewPath & OldName & ".json" + If File.Exists(OldJsonInNewPath) Then + File.Delete(OldJsonInNewPath) + End If Catch ex As Exception Log(ex, "重命名版本 json 失败") + '如果JSON处理失败,尝试回滚整个操作 + Try + '首先尝试恢复文件夹名 + If Directory.Exists(NewPath) AndAlso Not Directory.Exists(OldPath) Then + '还原jar文件名 + If File.Exists($"{NewPath}{NewName}.jar") Then + Try + My.Computer.FileSystem.RenameFile($"{NewPath}{NewName}.jar", $"{OldName}.jar") + Catch + '忽略jar文件还原失败 + End Try + End If + '还原natives文件夹名 + If Directory.Exists($"{NewPath}{NewName}-natives") Then + Try + My.Computer.FileSystem.RenameDirectory($"{NewPath}{NewName}-natives", $"{OldName}-natives") + Catch + '忽略natives文件夹还原失败 + End Try + End If + '还原文件夹名 + My.Computer.FileSystem.RenameDirectory(NewPath, OldName) + Hint("重命名失败:无法处理版本配置文件,已回滚更改", HintType.Critical) + Return + End If + Catch rollbackEx As Exception + Log(rollbackEx, "重命名失败后尝试回滚也失败") + Hint("重命名失败:版本文件可能已损坏,请检查版本文件夹", HintType.Critical) + Return + End Try + Throw ex End Try + '刷新与提示 Hint("重命名成功!", HintType.Finish) PageVersionLeft.Version = New McVersion(NewName).Load() From fc910b1955b835bb740dde64744ec9faa98e42d3 Mon Sep 17 00:00:00 2001 From: ENC_Euphony <2330458484@qq.com> Date: Sat, 2 Aug 2025 18:33:43 +0800 Subject: [PATCH 2/2] =?UTF-8?q?ref(VersionOverall):=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PageVersion/PageVersionOverall.xaml.vb | 32 ++++++++----------- 1 file changed, 13 insertions(+), 19 deletions(-) diff --git a/Plain Craft Launcher 2/Pages/PageVersion/PageVersionOverall.xaml.vb b/Plain Craft Launcher 2/Pages/PageVersion/PageVersionOverall.xaml.vb index e2f5565..2c2bf49 100644 --- a/Plain Craft Launcher 2/Pages/PageVersion/PageVersionOverall.xaml.vb +++ b/Plain Craft Launcher 2/Pages/PageVersion/PageVersionOverall.xaml.vb @@ -178,36 +178,30 @@ Catch ex As Exception Log(ex, "重命名版本 json 失败") '如果JSON处理失败,尝试回滚整个操作 - Try - '首先尝试恢复文件夹名 - If Directory.Exists(NewPath) AndAlso Not Directory.Exists(OldPath) Then + If Directory.Exists(NewPath) AndAlso Not Directory.Exists(OldPath) Then + Try '还原jar文件名 If File.Exists($"{NewPath}{NewName}.jar") Then - Try - My.Computer.FileSystem.RenameFile($"{NewPath}{NewName}.jar", $"{OldName}.jar") - Catch - '忽略jar文件还原失败 - End Try + My.Computer.FileSystem.RenameFile($"{NewPath}{NewName}.jar", $"{OldName}.jar") End If '还原natives文件夹名 If Directory.Exists($"{NewPath}{NewName}-natives") Then - Try - My.Computer.FileSystem.RenameDirectory($"{NewPath}{NewName}-natives", $"{OldName}-natives") - Catch - '忽略natives文件夹还原失败 - End Try + My.Computer.FileSystem.RenameDirectory($"{NewPath}{NewName}-natives", $"{OldName}-natives") End If - '还原文件夹名 - My.Computer.FileSystem.RenameDirectory(NewPath, OldName) - Hint("重命名失败:无法处理版本配置文件,已回滚更改", HintType.Critical) - Return - End If + Catch + ' 忽略 jar 文件, natives 文件夹还原失败 + End Try + End If + Try + '还原文件夹名 + My.Computer.FileSystem.RenameDirectory(NewPath, OldName) + Hint("重命名失败:无法处理版本配置文件,已回滚更改", HintType.Critical) + Return Catch rollbackEx As Exception Log(rollbackEx, "重命名失败后尝试回滚也失败") Hint("重命名失败:版本文件可能已损坏,请检查版本文件夹", HintType.Critical) Return End Try - Throw ex End Try '刷新与提示