From 6db8e521b6ce9a5c7b6b9dc67ffdaaa77bea2dbd Mon Sep 17 00:00:00 2001
From: Miepee <38186597+Miepee@users.noreply.github.com>
Date: Wed, 5 Jan 2022 15:35:00 +0100
Subject: [PATCH] Only validate am2r_11 again if file has changed
---
.../AM2RLauncher/MainForm/MainForm.StateMachine.cs | 13 ++++++++++---
AM2RLauncher/AM2RLauncher/MainForm/MainForm.UI.cs | 6 ++++++
2 files changed, 16 insertions(+), 3 deletions(-)
diff --git a/AM2RLauncher/AM2RLauncher/MainForm/MainForm.StateMachine.cs b/AM2RLauncher/AM2RLauncher/MainForm/MainForm.StateMachine.cs
index 5bd78df..c0abd30 100644
--- a/AM2RLauncher/AM2RLauncher/MainForm/MainForm.StateMachine.cs
+++ b/AM2RLauncher/AM2RLauncher/MainForm/MainForm.StateMachine.cs
@@ -284,14 +284,16 @@ namespace AM2RLauncher
// If we have a cache, return that instead
if (isAM2R11InstalledCache != null) return isAM2R11InstalledCache.Value;
+ string am2r11file = CrossPlatformOperations.CURRENTPATH + "/AM2R_11.zip";
// Return safely if file doesn't exist
- if (!File.Exists(CrossPlatformOperations.CURRENTPATH + "/AM2R_11.zip")) return false;
- var returnCode = HelperMethods.CheckIfZipIsAM2R11(CrossPlatformOperations.CURRENTPATH + "/AM2R_11.zip");
+ if (!File.Exists(am2r11file)) return false;
+ lastAM2R11ZipMD5 = HelperMethods.CalculateMD5(am2r11file);
+ var returnCode = HelperMethods.CheckIfZipIsAM2R11(am2r11file);
// Check if it's valid, if not log it, rename it and silently leave
if (returnCode != IsZipAM2R11ReturnCodes.Successful)
{
log.Info("Detected invalid AM2R_11 zip with following error code: " + returnCode);
- HelperMethods.RecursiveRollover(CrossPlatformOperations.CURRENTPATH + "/AM2R_11.zip");
+ HelperMethods.RecursiveRollover(am2r11file);
isAM2R11InstalledCache = false;
return false;
}
@@ -304,6 +306,11 @@ namespace AM2RLauncher
///
public static void InvalidateAM2R11InstallCache()
{
+ // If the file exists, and its hash matches with ours, don't invalidate
+ if (File.Exists(CrossPlatformOperations.CURRENTPATH + "/AM2R_11.zip") &&
+ HelperMethods.CalculateMD5(CrossPlatformOperations.CURRENTPATH + "/AM2R_11.zip") == lastAM2R11ZipMD5)
+ return;
+
isAM2R11InstalledCache = null;
}
diff --git a/AM2RLauncher/AM2RLauncher/MainForm/MainForm.UI.cs b/AM2RLauncher/AM2RLauncher/MainForm/MainForm.UI.cs
index c3ebdbb..3c45d20 100644
--- a/AM2RLauncher/AM2RLauncher/MainForm/MainForm.UI.cs
+++ b/AM2RLauncher/AM2RLauncher/MainForm/MainForm.UI.cs
@@ -95,6 +95,12 @@ namespace AM2RLauncher
///
static private bool? isAM2R11InstalledCache = null;
+ ///
+ /// Caches the MD5 hash of the provided AM2R_11.zip so we don't end up checking the zip if it hasn't changed.
+ ///
+ //TODO: worth reading / writing to config?
+ static private string lastAM2R11ZipMD5 = "";
+
///
/// Checks if the AM2RLauncher is run via WINE.
///