public string CheckJava(string binaryName) { var javapath = Path.Combine(RuntimeDirectory, "bin", binaryName); if (!File.Exists(javapath)) { string json = ""; var javaUrl = ""; using (var wc = new WebClient()) { //this line was added if (MRule.OSName == MRule.Linux) { return("java"); } json = wc.DownloadString(MojangServer.LauncherMeta); var job = JObject.Parse(json)[MRule.OSName]; javaUrl = job[MRule.Arch]?["jre"]?["url"]?.ToString(); if (string.IsNullOrEmpty(javaUrl)) { throw new PlatformNotSupportedException("Downloading JRE on current OS is not supported. Set JavaPath manually."); } Directory.CreateDirectory(RuntimeDirectory); } var lzmapath = Path.Combine(Path.GetTempPath(), "jre.lzma"); var zippath = Path.Combine(Path.GetTempPath(), "jre.zip"); var webdownloader = new WebDownload(); webdownloader.DownloadProgressChangedEvent += Downloader_DownloadProgressChangedEvent; webdownloader.DownloadFile(javaUrl, lzmapath); DownloadCompleted?.Invoke(this, new EventArgs()); SevenZipWrapper.DecompressFileLZMA(lzmapath, zippath); var z = new SharpZip(zippath); z.ProgressEvent += Z_ProgressEvent; z.Unzip(RuntimeDirectory); if (!File.Exists(javapath)) { throw new Exception("Failed Download"); } if (MRule.OSName != MRule.Windows) { IOUtil.Chmod(javapath, IOUtil.Chmod755); } } return(javapath); }
public string CheckJava(string binaryName) { var javapath = Path.Combine(RuntimeDirectory, "bin", binaryName); if (!File.Exists(javapath)) { string json = ""; var WorkingPath = Path.Combine(Path.GetTempPath(), "temp_download_runtime"); if (Directory.Exists(WorkingPath)) { IOUtil.DeleteDirectory(WorkingPath); } Directory.CreateDirectory(WorkingPath); var javaUrl = ""; using (var wc = new WebClient()) { json = wc.DownloadString(MojangServer.LauncherMeta); var job = JObject.Parse(json)[MRule.OSName]; javaUrl = job[MRule.Arch]?["jre"]?["url"]?.ToString(); if (string.IsNullOrEmpty(javaUrl)) { throw new Exception("unsupport os"); } Directory.CreateDirectory(RuntimeDirectory); } var downloader = new WebDownload(); downloader.DownloadProgressChangedEvent += Downloader_DownloadProgressChangedEvent; downloader.DownloadFile(javaUrl, Path.Combine(WorkingPath, "javatemp.lzma")); var lzma = Path.Combine(WorkingPath, "javatemp.lzma"); var zip = Path.Combine(WorkingPath, "javatemp.zip"); SevenZipWrapper.DecompressFileLZMA(lzma, zip); var z = new SharpZip(zip); z.Unzip(RuntimeDirectory); if (!File.Exists(javapath)) { IOUtil.DeleteDirectory(WorkingPath); throw new Exception("Failed Download"); } if (MRule.OSName != "windows") { IOUtil.Chmod(javapath, IOUtil.Chmod755); } DownloadCompleted?.Invoke(this, new EventArgs()); } return(javapath); }
private void decompressJavaFile(string lzmaPath) { string zippath = Path.Combine(Path.GetTempPath(), "jre.zip"); SevenZipWrapper.DecompressFileLZMA(lzmaPath, zippath); var z = new SharpZip(zippath); z.ProgressEvent += Z_ProgressEvent; z.Unzip(RuntimeDirectory); }
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[] {} } ; string javaUrl = mJava.GetJavaUrl(); string lzmaPath = Path.Combine(Path.GetTempPath(), "jre.lzma"); string zipPath = Path.Combine(Path.GetTempPath(), "jre.zip"); DownloadFile file = new DownloadFile(lzmaPath, javaUrl) { Name = "jre.lzma", Type = MFile.Runtime, AfterDownload = new Func <Task>[] { () => Task.Run(() => { SevenZipWrapper.DecompressFileLZMA(lzmaPath, zipPath); var z = new SharpZip(zipPath); z.Unzip(legacyJavaPath); tryChmod755(mJava.GetBinaryPath()); }) } }; return(new[] { file }); }
public string CheckJava(string binaryName) { var javapath = Path.Combine(RuntimeDirectory, "bin", binaryName); if (File.Exists(javapath)) { return(javapath); } string json = ""; var javaUrl = ""; using (var wc = new WebClient()) { json = wc.DownloadString(MojangServer.LauncherMeta); var job = JObject.Parse(json)[MRule.OSName]; javaUrl = job[MRule.Arch]?["jre"]?["url"]?.ToString(); Log.Information("Downloading java from: " + javaUrl); if (string.IsNullOrEmpty(javaUrl)) { Log.Error("Downloading JRE on current OS is not supported. Set JavaPath manually."); throw new PlatformNotSupportedException("Downloading JRE on current OS is not supported. Set JavaPath manually."); } Directory.CreateDirectory(RuntimeDirectory); } var lzmapath = Path.Combine(Path.GetTempPath(), "jre.lzma"); var zippath = Path.Combine(Path.GetTempPath(), "jre.zip"); Log.Information($"Downloading to: {lzmapath}"); var webdownloader = new WebDownload(); webdownloader.DownloadProgressChangedEvent += Downloader_DownloadProgressChangedEvent; webdownloader.DownloadFile(javaUrl, lzmapath); DownloadCompleted?.Invoke(this, new EventArgs()); Log.Information("Download completed. Start LZMAing..."); try { SevenZipWrapper.DecompressFileLZMA(lzmapath, zippath); //SevenZipWrapper.DecompressFileLZMA(lzmapath, zippath); } catch (Exception e) { Log.Error(e, "LZMA Error"); } Log.Information("Start Unzipping..."); var z = new SharpZip(zippath); z.ProgressEvent += Z_ProgressEvent; z.Unzip(RuntimeDirectory); if (!File.Exists(javapath)) { Log.Error("Failed Download Java File exists: " + javapath); throw new Exception("Failed Download"); } if (MRule.OSName != "windows") { IOUtil.Chmod(javapath, IOUtil.Chmod755); } Log.Information("Java path: " + javapath); return(javapath); }