diff options
| author | John <loneboco@gmail.com> | 2023-05-11 17:14:29 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-05-12 02:14:29 +0200 |
| commit | 49c63ea07779eb27674ae8c4a14e1dcf4b794a95 (patch) | |
| tree | acac13e26053e2b0862635884b45d38693f91d6d /src/Ryujinx.Ava/Modules | |
| parent | 531da8a1c0760c8ebf121ac83ba4c840ead9e443 (diff) | |
Fix the restart after an update. (#4869)
* Fix the restart after an update.
* Fix the updater for the Ava UI too.
* Fixing up the code after some change requests.
Removed a line of code that was accidentally left in.
* Fix restarting on Linux Avalonia.
* Fix issues with escaped arguments.
Diffstat (limited to 'src/Ryujinx.Ava/Modules')
| -rw-r--r-- | src/Ryujinx.Ava/Modules/Updater/Updater.cs | 42 |
1 files changed, 32 insertions, 10 deletions
diff --git a/src/Ryujinx.Ava/Modules/Updater/Updater.cs b/src/Ryujinx.Ava/Modules/Updater/Updater.cs index 05429935..77d77d79 100644 --- a/src/Ryujinx.Ava/Modules/Updater/Updater.cs +++ b/src/Ryujinx.Ava/Modules/Updater/Updater.cs @@ -295,14 +295,7 @@ namespace Ryujinx.Modules if (shouldRestart) { List<string> arguments = CommandLineState.Arguments.ToList(); - string ryuName = Path.GetFileName(Environment.ProcessPath); string executableDirectory = AppDomain.CurrentDomain.BaseDirectory; - string executablePath = Path.Combine(executableDirectory, ryuName); - - if (!Path.Exists(executablePath)) - { - executablePath = Path.Combine(executableDirectory, OperatingSystem.IsWindows() ? "Ryujinx.exe" : "Ryujinx"); - } // On macOS we perform the update at relaunch. if (OperatingSystem.IsMacOS()) @@ -310,13 +303,42 @@ namespace Ryujinx.Modules string baseBundlePath = Path.GetFullPath(Path.Combine(executableDirectory, "..", "..")); string newBundlePath = Path.Combine(UpdateDir, "Ryujinx.app"); string updaterScriptPath = Path.Combine(newBundlePath, "Contents", "Resources", "updater.sh"); - string currentPid = Process.GetCurrentProcess().Id.ToString(); + string currentPid = Environment.ProcessId.ToString(); - executablePath = "/bin/bash"; arguments.InsertRange(0, new List<string> { updaterScriptPath, baseBundlePath, newBundlePath, currentPid }); + Process.Start("/bin/bash", arguments); + } + else + { + // Find the process name. + string ryuName = Path.GetFileName(Environment.ProcessPath); + + // Some operating systems can see the renamed executable, so strip off the .ryuold if found. + if (ryuName.EndsWith(".ryuold")) + { + ryuName = ryuName[..^7]; + } + + // Fallback if the executable could not be found. + if (!Path.Exists(Path.Combine(executableDirectory, ryuName))) + { + ryuName = OperatingSystem.IsWindows() ? "Ryujinx.Ava.exe" : "Ryujinx.Ava"; + } + + ProcessStartInfo processStart = new(ryuName) + { + UseShellExecute = true, + WorkingDirectory = executableDirectory + }; + + foreach (string argument in CommandLineState.Arguments) + { + processStart.ArgumentList.Add(argument); + } + + Process.Start(processStart); } - Process.Start(executablePath, arguments); Environment.Exit(0); } } |
