From 6fa68e5306420379a4161ca27ca7e8567ed88acc Mon Sep 17 00:00:00 2001 From: Crudelis Date: Thu, 2 Feb 2023 11:05:28 +0900 Subject: [PATCH] Bug Fix MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 런처 파일 삭제 버그 수정 --- Mitria_Minecraft_Launcher/AuditFile.cs | 3 +- Mitria_Minecraft_Launcher/Settings.cs | 1 - .../Updater/GameUpdateManager.cs | 36 ++++++++++++++++--- 3 files changed, 34 insertions(+), 6 deletions(-) diff --git a/Mitria_Minecraft_Launcher/AuditFile.cs b/Mitria_Minecraft_Launcher/AuditFile.cs index 7db9106..79ff676 100644 --- a/Mitria_Minecraft_Launcher/AuditFile.cs +++ b/Mitria_Minecraft_Launcher/AuditFile.cs @@ -47,7 +47,8 @@ namespace Mitria_Minecraft_Launcher { directory.Create(); } - files.AddRange(directory.GetFiles("*.*", SearchOption.AllDirectories).ToArray()); + files.AddRange(directory.GetFiles("*.*", SearchOption.TopDirectoryOnly).ToArray()); + } foreach (var file in files) { diff --git a/Mitria_Minecraft_Launcher/Settings.cs b/Mitria_Minecraft_Launcher/Settings.cs index a98f6c0..98b80e5 100644 --- a/Mitria_Minecraft_Launcher/Settings.cs +++ b/Mitria_Minecraft_Launcher/Settings.cs @@ -25,7 +25,6 @@ namespace Mitria_Minecraft_Launcher public static readonly string ServerLauncherPatchInformationFile = "/launcher.xml"; public static readonly string ServerInformationFile = "/server.xml"; public static readonly string ServerDataPatchInformationFile = "/data.xml"; - //public static readonly string BaseArgument = @"-XX:+UseG1GC -Xmx8G -Xms8G -Dsun.rmi.dgc.server.gcInterval=2147483646 -XX:+UnlockExperimentalVMOptions -XX:G1NewSizePercent=20 -XX:G1ReservePercent=20 -XX:MaxGCPauseMillis=50 -XX:G1HeapRegionSize=32M"; public static void LoadUserLauncherConfig() { diff --git a/Mitria_Minecraft_Launcher/Updater/GameUpdateManager.cs b/Mitria_Minecraft_Launcher/Updater/GameUpdateManager.cs index da5e96c..b32e8ea 100644 --- a/Mitria_Minecraft_Launcher/Updater/GameUpdateManager.cs +++ b/Mitria_Minecraft_Launcher/Updater/GameUpdateManager.cs @@ -1,6 +1,8 @@ using CommonLibrary; using System; using System.Collections.Generic; +using System.IO; +using System.Linq; namespace Mitria_Minecraft_Launcher.Updater { @@ -226,8 +228,9 @@ namespace Mitria_Minecraft_Launcher.Updater } else { + // 제거된 폴더 삭제 var resultDirectorys = new List(); - + foreach (var directory in Settings.UserClientVersion.ComponentDirectorys) { if (!dataPatchInformation.ComponentDirectorys.Contains(directory)) @@ -235,7 +238,6 @@ namespace Mitria_Minecraft_Launcher.Updater resultDirectorys.Add(directory); } } - foreach (var directory in resultDirectorys) { var directoryPath = System.IO.Path.GetFullPath(CommonLibrary.Extensions.PathCombineW(Settings.UserLauncherConfig.GameDirectory,Settings.NowProfile.ServerName, directory)); @@ -247,6 +249,29 @@ namespace Mitria_Minecraft_Launcher.Updater } } + var reverseDirectorys = dataPatchInformation.ComponentDirectorys; + reverseDirectorys.Reverse(); + string gameDirectory = CommonLibrary.Extensions.PathCombineW(Settings.UserLauncherConfig.GameDirectory, Settings.NowProfile.ServerName) + "\\"; + foreach (var directory in reverseDirectorys) + { + var directoryPath = System.IO.Path.GetFullPath(CommonLibrary.Extensions.PathCombineW(Settings.UserLauncherConfig.GameDirectory, Settings.NowProfile.ServerName, directory)); + if (System.IO.Directory.Exists(directoryPath)) + { + var lowDirectorys = System.IO.Directory.GetDirectories(directoryPath); + foreach (var lowDirectory in lowDirectorys) + { + var directoryName = lowDirectory.Replace(gameDirectory, string.Empty); + directoryName = directoryName.Replace("\\", "/"); + if (!dataPatchInformation.ComponentDirectorys.Contains(directoryName)) + { + System.IO.Directory.Delete(lowDirectory, true); + Log.INFO("[Component] -[D] " + directoryPath); + } + } + } + + } + foreach (var directory in dataPatchInformation.ComponentDirectorys) { var directoryPath = System.IO.Path.GetFullPath(CommonLibrary.Extensions.PathCombineW(Settings.UserLauncherConfig.GameDirectory, Settings.NowProfile.ServerName, directory)); @@ -258,6 +283,7 @@ namespace Mitria_Minecraft_Launcher.Updater } } + var auditFile = new AuditFile(); var localFiles = auditFile.GetLocalFileList(dataPatchInformation.ComponentDirectorys); var removeFiles = auditFile.GetRemoveFiles(localFiles, dataPatchInformation.ComponentList); @@ -268,10 +294,12 @@ namespace Mitria_Minecraft_Launcher.Updater foreach (var fileDetail in removeFiles) { var filePath = CommonLibrary.Extensions.PathCombineW(Settings.UserLauncherConfig.GameDirectory,Settings.NowProfile.ServerName, fileDetail.Directory, fileDetail.FileName); - if (System.IO.File.Exists(filePath)) + FileInfo fileInfo= new FileInfo(filePath); + fileInfo.IsReadOnly = false; + if (fileInfo.Exists) { Log.INFO("[Component] -[F] " + filePath); - System.IO.File.Delete(filePath); + fileInfo.Delete(); } } // 디렉토리 삭제