diff options
author | Mary-nyan <mary@mary.zone> | 2022-12-12 15:17:22 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-12-12 15:17:22 +0100 |
commit | 6fe88115a302f4b4da38d8aac1baac7ada548be0 (patch) | |
tree | 5183f827121c29dedc7cc754c944c4a08f673746 /Ryujinx/Modules/Updater/Updater.cs | |
parent | 475fa4d390d4a2f3f486e4e0ba0b9334ea25f0f7 (diff) |
misc: Some fixes to the updaters (#4092)1.1.465
This was meant to be only an upgrade of how we set unix permission in
the updater to use .NET 7 new APIs, but I end up finding bugs along the
way.
Changelog:
- Remove direct usage of chmod to use File.SetUnixFileMode.
- Fix command line being broken when updating (#3744) but on
Ryujinx.Ava.
- Makes Ryujinx.Ava updater fallback to Ryujinx executable if current
name isn't found.
- Make permission setter function more generic.
Diffstat (limited to 'Ryujinx/Modules/Updater/Updater.cs')
-rw-r--r-- | Ryujinx/Modules/Updater/Updater.cs | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/Ryujinx/Modules/Updater/Updater.cs b/Ryujinx/Modules/Updater/Updater.cs index 194d35e5..0a1cb53b 100644 --- a/Ryujinx/Modules/Updater/Updater.cs +++ b/Ryujinx/Modules/Updater/Updater.cs @@ -387,16 +387,19 @@ namespace Ryujinx.Modules worker.Start(); } - [DllImport("libc", SetLastError = true)] - private static extern int chmod(string path, uint mode); - - private static void SetUnixPermissions() + private static void SetFileExecutable(string path) { - string ryuBin = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Ryujinx"); - - if (!OperatingSystem.IsWindows()) + const UnixFileMode ExecutableFileMode = UnixFileMode.UserExecute | + UnixFileMode.UserWrite | + UnixFileMode.UserRead | + UnixFileMode.GroupRead | + UnixFileMode.GroupWrite | + UnixFileMode.OtherRead | + UnixFileMode.OtherWrite; + + if (!OperatingSystem.IsWindows() && File.Exists(path)) { - chmod(ryuBin, 493); + File.SetUnixFileMode(path, ExecutableFileMode); } } @@ -519,7 +522,7 @@ namespace Ryujinx.Modules Directory.Delete(UpdateDir, true); - SetUnixPermissions(); + SetFileExecutable(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Ryujinx")); updateDialog.MainText.Text = "Update Complete!"; updateDialog.SecondaryText.Text = "Do you want to restart Ryujinx now?"; |