diff --git a/Ryujinx.Updater/Program.cs b/Ryujinx.Updater/Program.cs
new file mode 100644
index 0000000000..b44b850fed
--- /dev/null
+++ b/Ryujinx.Updater/Program.cs
@@ -0,0 +1,107 @@
+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 updateSaveLocation;
+ public static string metaFilePath;
+
+ public static string versionNumber;
+ public static string downloadUrl;
+
+ private static void CloneDirectory(string root, string dest)
+ {
+ foreach (var directory in Directory.GetDirectories(root))
+ {
+ string dirName = Path.GetFileName(directory);
+
+ try
+ {
+ if (!Directory.Exists(Path.Combine(dest, dirName)))
+ {
+ Directory.CreateDirectory(Path.Combine(dest, dirName));
+ }
+ }
+ catch
+ {
+
+ }
+
+ CloneDirectory(directory, Path.Combine(dest, dirName));
+ }
+
+ foreach (var file in Directory.GetFiles(root))
+ {
+ try
+ {
+ File.Move(file, Path.Combine(dest, Path.GetFileName(file)), true);
+ }
+ catch
+ {
+
+ }
+ }
+ }
+
+ [STAThread]
+ public static void Main()
+ {
+ // Create Temp Directory
+
+ if (!Directory.Exists(Path.Combine(RyuDir, "Temp")))
+ {
+ Directory.CreateDirectory(Path.Combine(RyuDir, "Temp"));
+ }
+
+ updateSaveLocation = Path.Combine(RyuDir, "Temp", "RyujinxPackage.zip");
+ metaFilePath = Path.Combine(RyuDir, "Meta.json");
+
+ string[] metaFileData = File.ReadAllLines(metaFilePath);
+
+ versionNumber = metaFileData[0];
+ downloadUrl = metaFileData[1];
+
+ 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
+ {
+
+ }
+ }
+ }
+
+ ZipFile.ExtractToDirectory(updateSaveLocation, RyuDir, true);
+
+ CloneDirectory(Path.Combine(RyuDir, "publish"), RyuDir);
+ Directory.Delete(Path.Combine(RyuDir, "publish"), true);
+ Directory.Delete(Path.Combine(RyuDir, "Temp"), true);
+
+ Process.Start(Path.Combine(RyuDir, "Ryujinx.exe"));
+
+ Application.Exit();
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/Ryujinx.Updater/Ryujinx.Updater.csproj b/Ryujinx.Updater/Ryujinx.Updater.csproj
new file mode 100644
index 0000000000..6db5bdf5ed
--- /dev/null
+++ b/Ryujinx.Updater/Ryujinx.Updater.csproj
@@ -0,0 +1,12 @@
+
+
+
+ WinExe
+ netcoreapp3.0
+ true
+ Ryujinx.Updater.Program
+ Updater
+ Ryujinx.ico
+
+
+
\ No newline at end of file
diff --git a/Ryujinx.Updater/Ryujinx.ico b/Ryujinx.Updater/Ryujinx.ico
new file mode 100644
index 0000000000..edf1b93f71
Binary files /dev/null and b/Ryujinx.Updater/Ryujinx.ico differ
diff --git a/Ryujinx.sln b/Ryujinx.sln
index 38fc6cf76c..75c9fed419 100644
--- a/Ryujinx.sln
+++ b/Ryujinx.sln
@@ -4,6 +4,9 @@ Microsoft Visual Studio Solution File, Format Version 12.00
VisualStudioVersion = 16.0.29613.14
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx", "Ryujinx\Ryujinx.csproj", "{074045D4-3ED2-4711-9169-E385F2BFB5A0}"
+ ProjectSection(ProjectDependencies) = postProject
+ {529E361C-FEF5-4C07-A2F4-3351C45CADDD} = {529E361C-FEF5-4C07-A2F4-3351C45CADDD}
+ EndProjectSection
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Tests", "Ryujinx.Tests\Ryujinx.Tests.csproj", "{EBB55AEA-C7D7-4DEB-BF96-FA1789E225E9}"
EndProject
@@ -33,7 +36,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Graphics.Shader", "
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Graphics.Nvdec", "Ryujinx.Graphics.Nvdec\Ryujinx.Graphics.Nvdec.csproj", "{85A0FA56-DC01-4A42-8808-70DAC76BD66D}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Ryujinx.Debugger", "Ryujinx.Debugger\Ryujinx.Debugger.csproj", "{79E4EE34-9C5F-4BE6-8529-A49D32B5B0CC}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Ryujinx.Updater", "Ryujinx.Updater\Ryujinx.Updater.csproj", "{529E361C-FEF5-4C07-A2F4-3351C45CADDD}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -163,22 +166,6 @@ Global
{85A0FA56-DC01-4A42-8808-70DAC76BD66D}.Profile Release|Any CPU.Build.0 = Release|Any CPU
{85A0FA56-DC01-4A42-8808-70DAC76BD66D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{85A0FA56-DC01-4A42-8808-70DAC76BD66D}.Release|Any CPU.Build.0 = Release|Any CPU
- {2E02B7F3-245E-43B1-AE5B-44167A0FDA20}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {2E02B7F3-245E-43B1-AE5B-44167A0FDA20}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {2E02B7F3-245E-43B1-AE5B-44167A0FDA20}.Profile Debug|Any CPU.ActiveCfg = Profile Debug|Any CPU
- {2E02B7F3-245E-43B1-AE5B-44167A0FDA20}.Profile Debug|Any CPU.Build.0 = Profile Debug|Any CPU
- {2E02B7F3-245E-43B1-AE5B-44167A0FDA20}.Profile Release|Any CPU.ActiveCfg = Profile Release|Any CPU
- {2E02B7F3-245E-43B1-AE5B-44167A0FDA20}.Profile Release|Any CPU.Build.0 = Profile Release|Any CPU
- {2E02B7F3-245E-43B1-AE5B-44167A0FDA20}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {2E02B7F3-245E-43B1-AE5B-44167A0FDA20}.Release|Any CPU.Build.0 = Release|Any CPU
- {79E4EE34-9C5F-4BE6-8529-A49D32B5B0CC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {79E4EE34-9C5F-4BE6-8529-A49D32B5B0CC}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {79E4EE34-9C5F-4BE6-8529-A49D32B5B0CC}.Profile Debug|Any CPU.ActiveCfg = Profile Debug|Any CPU
- {79E4EE34-9C5F-4BE6-8529-A49D32B5B0CC}.Profile Debug|Any CPU.Build.0 = Profile Debug|Any CPU
- {79E4EE34-9C5F-4BE6-8529-A49D32B5B0CC}.Profile Release|Any CPU.ActiveCfg = Profile Release|Any CPU
- {79E4EE34-9C5F-4BE6-8529-A49D32B5B0CC}.Profile Release|Any CPU.Build.0 = Profile Release|Any CPU
- {79E4EE34-9C5F-4BE6-8529-A49D32B5B0CC}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {79E4EE34-9C5F-4BE6-8529-A49D32B5B0CC}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/Ryujinx/Ryujinx.csproj b/Ryujinx/Ryujinx.csproj
index bbf1724666..c12cd2669f 100644
--- a/Ryujinx/Ryujinx.csproj
+++ b/Ryujinx/Ryujinx.csproj
@@ -89,6 +89,7 @@
+
diff --git a/Ryujinx/Updater/Parser/UpdateParser.cs b/Ryujinx/Updater/Parser/UpdateParser.cs
index b920494ecf..cc535e6b58 100644
--- a/Ryujinx/Updater/Parser/UpdateParser.cs
+++ b/Ryujinx/Updater/Parser/UpdateParser.cs
@@ -3,6 +3,7 @@ using Newtonsoft.Json.Linq;
using Ryujinx.Common.Logging;
using Ryujinx.Ui;
using System;
+using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.IO;
@@ -24,7 +25,7 @@ namespace Ryujinx.Updater.Parser
public static string _buildArt;
- public static string RyuDir = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "Ryujinx");
+ public static string RyuDir = Environment.CurrentDirectory;
public static WebClient Package = new WebClient();
public static int PackageProgress;
public static double Percentage;
@@ -77,8 +78,19 @@ namespace Ryujinx.Updater.Parser
{
if (dialog.Run() == (int)ResponseType.Yes)
{
- dialog.Dispose();
- GrabPackage();
+ try
+ {
+ // Start Updater.exe
+
+ string updaterPath = Path.Combine(RyuDir, "Updater.exe");
+
+ Process.Start(new ProcessStartInfo(updaterPath) { UseShellExecute = true });
+ Application.Quit();
+ }
+ catch (Exception ex)
+ {
+ GtkDialog.CreateErrorDialog(ex.Message);
+ }
}
}
diff --git a/Ryujinx/Updater/Update.cs b/Ryujinx/Updater/Update.cs
index 517761f506..f97d71ed5a 100644
--- a/Ryujinx/Updater/Update.cs
+++ b/Ryujinx/Updater/Update.cs
@@ -34,7 +34,7 @@ namespace Ryujinx.Updater
try
{
- Process.Start(new ProcessStartInfo(Path.Combine(_parentdir, "Ryujinx.exe"), "/C") { UseShellExecute = true });
+ Process.Start(new ProcessStartInfo(Path.Combine(RyuDir, "Ryujinx.exe")) { UseShellExecute = true });
Application.Quit();
}
catch (Exception ex)