aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Ava/Modules/Updater/Updater.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Ryujinx.Ava/Modules/Updater/Updater.cs')
-rw-r--r--Ryujinx.Ava/Modules/Updater/Updater.cs65
1 files changed, 24 insertions, 41 deletions
diff --git a/Ryujinx.Ava/Modules/Updater/Updater.cs b/Ryujinx.Ava/Modules/Updater/Updater.cs
index 62dc1772..b476bb85 100644
--- a/Ryujinx.Ava/Modules/Updater/Updater.cs
+++ b/Ryujinx.Ava/Modules/Updater/Updater.cs
@@ -132,8 +132,8 @@ namespace Ryujinx.Modules
}
}
- // If build not done, assume no new update are availaible.
- if (_buildUrl == null)
+ // If build not done, assume no new update are available.
+ if (_buildUrl is null)
{
if (showVersionUpToDate)
{
@@ -240,13 +240,13 @@ namespace Ryujinx.Modules
{
HttpClient result = new();
- // Required by GitHub to interract with APIs.
+ // Required by GitHub to interact with APIs.
result.DefaultRequestHeaders.Add("User-Agent", "Ryujinx-Updater/1.0.0");
return result;
}
- public static async void UpdateRyujinx(Window parent, string downloadUrl)
+ private static async void UpdateRyujinx(Window parent, string downloadUrl)
{
_updateSuccessful = false;
@@ -300,8 +300,6 @@ namespace Ryujinx.Modules
ryuExe = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, OperatingSystem.IsWindows() ? "Ryujinx.exe" : "Ryujinx");
}
- SetFileExecutable(ryuExe);
-
Process.Start(ryuExe, CommandLineState.Arguments);
Environment.Exit(0);
@@ -408,9 +406,9 @@ namespace Ryujinx.Modules
Logger.Warning?.Print(LogClass.Application, ex.Message);
Logger.Warning?.Print(LogClass.Application, "Multi-Threaded update failed, falling back to single-threaded updater.");
- for (int j = 0; j < webClients.Count; j++)
+ foreach (WebClient webClient in webClients)
{
- webClients[j].CancelAsync();
+ webClient.CancelAsync();
}
DoUpdateWithSingleThread(taskDialog, downloadUrl, updateFile);
@@ -472,22 +470,6 @@ namespace Ryujinx.Modules
worker.Start();
}
- private static void SetFileExecutable(string path)
- {
- const UnixFileMode ExecutableFileMode = UnixFileMode.UserExecute |
- UnixFileMode.UserWrite |
- UnixFileMode.UserRead |
- UnixFileMode.GroupRead |
- UnixFileMode.GroupWrite |
- UnixFileMode.OtherRead |
- UnixFileMode.OtherWrite;
-
- if (!OperatingSystem.IsWindows() && File.Exists(path))
- {
- File.SetUnixFileMode(path, ExecutableFileMode);
- }
- }
-
private static async void InstallUpdate(TaskDialog taskDialog, string updateFile)
{
// Extract Update
@@ -503,27 +485,30 @@ namespace Ryujinx.Modules
await Task.Run(() =>
{
TarEntry tarEntry;
- while ((tarEntry = tarStream.GetNextEntry()) != null)
- {
- if (tarEntry.IsDirectory) continue;
- string outPath = Path.Combine(UpdateDir, tarEntry.Name);
+ if (!OperatingSystem.IsWindows())
+ {
+ while ((tarEntry = tarStream.GetNextEntry()) is not null)
+ {
+ if (tarEntry.IsDirectory) continue;
- Directory.CreateDirectory(Path.GetDirectoryName(outPath));
+ string outPath = Path.Combine(UpdateDir, tarEntry.Name);
- using (FileStream outStream = File.OpenWrite(outPath))
- {
- tarStream.CopyEntryContents(outStream);
- }
+ Directory.CreateDirectory(Path.GetDirectoryName(outPath));
- File.SetLastWriteTime(outPath, DateTime.SpecifyKind(tarEntry.ModTime, DateTimeKind.Utc));
+ using (FileStream outStream = File.OpenWrite(outPath))
+ {
+ tarStream.CopyEntryContents(outStream);
+ }
- TarEntry entry = tarEntry;
+ File.SetUnixFileMode(outPath, (UnixFileMode)tarEntry.TarHeader.Mode);
+ File.SetLastWriteTime(outPath, DateTime.SpecifyKind(tarEntry.ModTime, DateTimeKind.Utc));
- Dispatcher.UIThread.Post(() =>
- {
- taskDialog.SetProgressBarState(GetPercentage(entry.Size, inStream.Length), TaskDialogProgressState.Normal);
- });
+ Dispatcher.UIThread.Post(() =>
+ {
+ taskDialog.SetProgressBarState(GetPercentage(tarEntry.Size, inStream.Length), TaskDialogProgressState.Normal);
+ });
+ }
}
});
@@ -603,8 +588,6 @@ namespace Ryujinx.Modules
Directory.Delete(UpdateDir, true);
- SetFileExecutable(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Ryujinx"));
-
_updateSuccessful = true;
taskDialog.Hide();