From 73bba287c2d77209413262201837ecf03fb21f61 Mon Sep 17 00:00:00 2001 From: MelonSpeedruns Date: Sat, 1 Feb 2020 15:50:18 -0500 Subject: [PATCH] WIP 2 --- Ryujinx.Updater/Program.cs | 64 +++++++++++--------------- Ryujinx.Updater/Ryujinx.Updater.csproj | 24 ++++++---- Ryujinx/Program.cs | 4 +- Ryujinx/Ryujinx.csproj | 4 +- Ryujinx/Updater/Parser/UpdateParser.cs | 9 +--- Ryujinx/Updater/Update.cs | 56 ---------------------- 6 files changed, 44 insertions(+), 117 deletions(-) delete mode 100644 Ryujinx/Updater/Update.cs diff --git a/Ryujinx.Updater/Program.cs b/Ryujinx.Updater/Program.cs index 7b837c4c39..165ef87ce6 100644 --- a/Ryujinx.Updater/Program.cs +++ b/Ryujinx.Updater/Program.cs @@ -1,26 +1,19 @@ using System; -using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.IO.Compression; -using System.Linq; using System.Net; -using System.Threading.Tasks; -using System.Windows.Forms; namespace Ryujinx.Updater { public class Program { - public static string RyuDir = Environment.CurrentDirectory; + public static string RyuDir = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "Ryujinx"); + public static string launchDir = Environment.CurrentDirectory; public static string updateSaveLocation; - public static string metaFilePath; - public static string versionNumber; - public static string downloadUrl; - - private static void CloneDirectory(string root, string dest) + private static void MoveAllFilesOver(string root, string dest) { foreach (var directory in Directory.GetDirectories(root)) { @@ -38,7 +31,7 @@ namespace Ryujinx.Updater } - CloneDirectory(directory, Path.Combine(dest, dirName)); + MoveAllFilesOver(directory, Path.Combine(dest, dirName)); } foreach (var file in Directory.GetFiles(root)) @@ -55,54 +48,49 @@ namespace Ryujinx.Updater } [STAThread] - public static void Main() + public static void Main(string[] args) { - // Create Temp Directory + if (args.Length < 2) + { + return; + } + + File.WriteAllText(Path.Combine(launchDir, "Version.json"), args[1]); + + // Create temp directory if (!Directory.Exists(Path.Combine(RyuDir, "Temp"))) { Directory.CreateDirectory(Path.Combine(RyuDir, "Temp")); } + // Download latest update + + string downloadUrl = args[0]; + updateSaveLocation = Path.Combine(RyuDir, "Temp", "RyujinxPackage.zip"); - metaFilePath = Path.Combine(RyuDir, "Meta.json"); - - string[] metaFileData = File.ReadAllLines(metaFilePath); - - versionNumber = metaFileData[0]; - downloadUrl = metaFileData[1]; - - MessageBox.Show(downloadUrl); using (WebClient client = new WebClient()) { client.DownloadFile(downloadUrl, updateSaveLocation); } - foreach (string file in Directory.GetFiles(RyuDir, "*", SearchOption.AllDirectories)) - { - if (Path.GetFileName(file) != "Config.json" && Path.GetFileName(file) != "Meta.json" && Path.GetFileName(file) != "RyujinxPackage.zip") - { - try - { - File.Delete(file); - } - catch - { - - } - } - } + // Extract Update .zip ZipFile.ExtractToDirectory(updateSaveLocation, RyuDir, true); - CloneDirectory(Path.Combine(RyuDir, "publish"), RyuDir); + // Copy new files over to Ryujinx folder + + MoveAllFilesOver(Path.Combine(RyuDir, "publish"), launchDir); + + // Remove temp folders + Directory.Delete(Path.Combine(RyuDir, "publish"), true); Directory.Delete(Path.Combine(RyuDir, "Temp"), true); - Process.Start(Path.Combine(RyuDir, "Ryujinx.exe")); + // Start new Ryujinx version and close Updater - Application.Exit(); + Process.Start(Path.Combine(launchDir, "Ryujinx.exe")); } } diff --git a/Ryujinx.Updater/Ryujinx.Updater.csproj b/Ryujinx.Updater/Ryujinx.Updater.csproj index 932016c6a1..ca0512931e 100644 --- a/Ryujinx.Updater/Ryujinx.Updater.csproj +++ b/Ryujinx.Updater/Ryujinx.Updater.csproj @@ -1,12 +1,16 @@ - - - - Exe - netcoreapp3.0 - true - - Updater - Ryujinx.ico - + + + + netcoreapp3.0 + win-x64;osx-x64;linux-x64; + Debug;Release;Profile Debug;Profile Release + Ryujinx.ico + Exe + Updater + + + + + \ No newline at end of file diff --git a/Ryujinx/Program.cs b/Ryujinx/Program.cs index 760957c383..be15905627 100644 --- a/Ryujinx/Program.cs +++ b/Ryujinx/Program.cs @@ -3,6 +3,7 @@ using Ryujinx.Common.Logging; using Ryujinx.Configuration; using Ryujinx.Debugger.Profiler; using Ryujinx.Ui; +using Ryujinx.Updater.Parser; using OpenTK; using System; using System.IO; @@ -70,8 +71,7 @@ namespace Ryujinx { switch (arg.Substring(0, 2).ToUpper()) { - case "/U": Updater.Update.PerformUpdate(); break; - case "/C": Updater.Update.Cleanup(); break; + case "/U": UpdateParser.BeginParse(); break; default: mainWindow.LoadApplication(args[0]); break; } } diff --git a/Ryujinx/Ryujinx.csproj b/Ryujinx/Ryujinx.csproj index c12cd2669f..f6737868d7 100644 --- a/Ryujinx/Ryujinx.csproj +++ b/Ryujinx/Ryujinx.csproj @@ -74,9 +74,7 @@ - - - + diff --git a/Ryujinx/Updater/Parser/UpdateParser.cs b/Ryujinx/Updater/Parser/UpdateParser.cs index c86c649e6a..2e6cb45b2c 100644 --- a/Ryujinx/Updater/Parser/UpdateParser.cs +++ b/Ryujinx/Updater/Parser/UpdateParser.cs @@ -80,18 +80,11 @@ namespace Ryujinx.Updater.Parser { try { - // Create Meta.json - - List metaFileContents = new List(); - metaFileContents.Add(_buildVer); - metaFileContents.Add(_buildArt); - File.WriteAllLines(Path.Combine(RyuDir, "Meta.json"), metaFileContents); - // Start Updater.exe string updaterPath = Path.Combine(RyuDir, "Updater.exe"); - Process.Start(updaterPath); + Process.Start(updaterPath, _buildArt + " " + _buildVer); } catch (Exception ex) diff --git a/Ryujinx/Updater/Update.cs b/Ryujinx/Updater/Update.cs deleted file mode 100644 index bdccc7831e..0000000000 --- a/Ryujinx/Updater/Update.cs +++ /dev/null @@ -1,56 +0,0 @@ -using Gtk; -using Ryujinx.Common.Logging; -using Ryujinx.Ui; -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.IO; -using System.Text; - -namespace Ryujinx.Updater -{ - public class Update - { - private static string _parentdir = Path.Combine(@"..\.."); - public static string RyuDir = Environment.CurrentDirectory; - - public static void PerformUpdate() - { - try - { - //Get list of files from the current directory, and copy them to the parent directory. - foreach (string _PathDir in Directory.GetDirectories(RyuDir, "*", SearchOption.AllDirectories)) - { - Directory.CreateDirectory(_PathDir.Replace(RyuDir, _parentdir)); - } - - foreach (string _PathNew in Directory.GetFiles(RyuDir, "*.*", SearchOption.AllDirectories)) - { - File.Copy(_PathNew, _PathNew.Replace(RyuDir, _parentdir), true); - } - - Logger.PrintInfo(LogClass.Application, "Package installation was completed.\n"); - GtkDialog.CreateInfoDialog("Update", "Ryujinx - Update", "Almost finished", "The package was installed.\nPlease click ok, and the update will complete."); - - try - { - Process.Start(new ProcessStartInfo(Path.Combine(RyuDir, "Ryujinx.exe")) { UseShellExecute = true }); - Application.Quit(); - } - catch (Exception ex) - { - GtkDialog.CreateErrorDialog(ex.Message); - } - } - catch (Exception ex) - { - GtkDialog.CreateErrorDialog(ex.Message); - } - } - - public static void Cleanup() - { - Directory.Delete(Path.Combine(RyuDir, "temp"), true); - } - } -}