Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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 });
        }
Ejemplo n.º 5
0
        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);
        }