From 4c0e7f5896adba719aebbb696c80eaa420c21fe0 Mon Sep 17 00:00:00 2001 From: pizzaboxer <41478239+pizzaboxer@users.noreply.github.com> Date: Tue, 23 Aug 2022 20:15:04 +0100 Subject: [PATCH] Fix mod presets being deleted when changed --- Bloxstrap/Bootstrapper.cs | 5 +++-- Bloxstrap/Helpers/Utilities.cs | 9 +++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/Bloxstrap/Bootstrapper.cs b/Bloxstrap/Bootstrapper.cs index 350956b..2042ad7 100644 --- a/Bloxstrap/Bootstrapper.cs +++ b/Bloxstrap/Bootstrapper.cs @@ -563,6 +563,7 @@ namespace Bloxstrap private static void CheckModPreset(bool condition, string location, string base64Contents) { string modFolderLocation = Path.Combine(Directories.Modifications, location); + byte[] binaryData = Convert.FromBase64String(base64Contents); if (condition) { @@ -575,10 +576,10 @@ namespace Bloxstrap Directory.CreateDirectory(directory); - File.WriteAllBytes(modFolderLocation, Convert.FromBase64String(base64Contents)); + File.WriteAllBytes(modFolderLocation, binaryData); } } - else if (File.Exists(modFolderLocation)) + else if (File.Exists(modFolderLocation) && Utilities.MD5File(modFolderLocation) == Utilities.MD5Data(binaryData)) { File.Delete(modFolderLocation); } diff --git a/Bloxstrap/Helpers/Utilities.cs b/Bloxstrap/Helpers/Utilities.cs index 022136f..22a60d4 100644 --- a/Bloxstrap/Helpers/Utilities.cs +++ b/Bloxstrap/Helpers/Utilities.cs @@ -36,6 +36,15 @@ namespace Bloxstrap.Helpers } } + public static string MD5Data(byte[] data) + { + using (MD5 md5 = MD5.Create()) + { + byte[] hash = md5.ComputeHash(data); + return BitConverter.ToString(hash).Replace("-", "").ToLowerInvariant(); + } + } + // quick and hacky way of getting a value from any key/value pair formatted list // (command line args, uri params, etc) public static string? GetKeyValue(string subject, string key, char delimiter)