diff --git a/CmlLib/Core/Files/JavaChecker.cs b/CmlLib/Core/Files/JavaChecker.cs index 46dcf41..2f756b5 100644 --- a/CmlLib/Core/Files/JavaChecker.cs +++ b/CmlLib/Core/Files/JavaChecker.cs @@ -28,7 +28,23 @@ public class JavaChecker : IFileChecker if (string.IsNullOrEmpty(javaVersion)) javaVersion = "jre-legacy"; - version.JavaBinaryPath = Path.Combine(path.Runtime, javaVersion, "bin", JavaBinaryName); + var files = internalCheckFile( + javaVersion, path, downloadProgress, out string binPath); + + version.JavaBinaryPath = binPath; + return files; + } + + public Task CheckFilesTaskAsync(MinecraftPath path, MVersion version, + IProgress? downloadProgress) + { + return Task.Run(() => CheckFiles(path, version, downloadProgress)); + } + + private DownloadFile[]? internalCheckFile(string javaVersion, MinecraftPath path, + IProgress? downloadProgress, out string binPath) + { + binPath = Path.Combine(path.Runtime, javaVersion, "bin", JavaBinaryName); try { @@ -41,30 +57,24 @@ public class JavaChecker : IFileChecker if (javaManifest == null) javaManifest = getJavaVersionManifest(javaVersions, "jre-legacy"); if (javaManifest == null) - return legacyJavaChecker(path); + return legacyJavaChecker(path, out binPath); var files = javaManifest["files"] as JObject; if (files == null) - return legacyJavaChecker(path); + return legacyJavaChecker(path, out binPath); return toDownloadFiles(javaVersion, files, path, downloadProgress); } else - return legacyJavaChecker(path); + return legacyJavaChecker(path, out binPath); } catch (Exception e) { Debug.WriteLine(e); - return null; + return legacyJavaChecker(path, out binPath); } } - public Task CheckFilesTaskAsync(MinecraftPath path, MVersion version, - IProgress? downloadProgress) - { - return Task.Run(() => CheckFiles(path, version, downloadProgress)); - } - private string getJavaOSName() { string osName = ""; @@ -148,7 +158,7 @@ private DownloadFile[] toDownloadFiles(string javaVersionName, JObject manifest, if (executable) file.AfterDownload = new Func[] { - () => Task.Run(() => TryChmod755(filePath)) + () => Task.Run(() => tryChmod755(filePath)) }; files.Add(file); } @@ -189,10 +199,11 @@ private DownloadFile[] toDownloadFiles(string javaVersionName, JObject manifest, }; } - private DownloadFile[] legacyJavaChecker(MinecraftPath path) + private DownloadFile[] legacyJavaChecker(MinecraftPath path, out string binPath) { string legacyJavaPath = Path.Combine(path.Runtime, "m-legacy"); MJava mJava = new MJava(legacyJavaPath); + binPath = mJava.GetBinaryPath(); if (mJava.CheckJavaExistence()) return new DownloadFile[] {}; @@ -214,7 +225,7 @@ private DownloadFile[] legacyJavaChecker(MinecraftPath path) var z = new SharpZip(zipPath); z.Unzip(legacyJavaPath); - TryChmod755(mJava.GetBinaryPath()); + tryChmod755(mJava.GetBinaryPath()); }) } }; @@ -222,7 +233,7 @@ private DownloadFile[] legacyJavaChecker(MinecraftPath path) return new[] {file}; } - private void TryChmod755(string path) + private void tryChmod755(string path) { try {