diff --git a/AM2RLauncher/AM2RLauncher/LauncherUpdater.cs b/AM2RLauncher/AM2RLauncher/LauncherUpdater.cs index 99a4095..6558801 100644 --- a/AM2RLauncher/AM2RLauncher/LauncherUpdater.cs +++ b/AM2RLauncher/AM2RLauncher/LauncherUpdater.cs @@ -2,9 +2,11 @@ using Eto.Forms; using log4net; using System; +using System.Diagnostics; using System.IO; using System.IO.Compression; using System.Net; +using System.Reflection; namespace AM2RLauncher; @@ -24,8 +26,20 @@ public static class LauncherUpdater private static readonly string oldConfigPath = CrossPlatformOperations.CurrentPath + "/" + CrossPlatformOperations.LauncherName + ".oldCfg"; /// The actual Path where the executable is stored, only used for updating. - private static readonly string updatePath = OS.IsWindows ? CrossPlatformOperations.CurrentPath - : (OS.IsLinux ? Path.GetDirectoryName(AppDomain.CurrentDomain.BaseDirectory) : Path.GetDirectoryName(AppDomain.CurrentDomain.BaseDirectory + "../../../")); + private static string updatePath + { + get + { + if (OS.IsWindows) + return Path.GetDirectoryName(Assembly.GetEntryAssembly()?.Location); + if (OS.IsLinux) + return Path.GetDirectoryName(AppDomain.CurrentDomain.BaseDirectory); + if (OS.IsMac) + // TODO: double check on mac if this is correct + return Path.GetDirectoryName($"{AppDomain.CurrentDomain.BaseDirectory}../../../"); + throw new NotSupportedException($"{OS.Name} does not have an update path!"); + } + } /// /// Our log object, that handles logging the current execution to a file. @@ -154,7 +168,7 @@ public static class LauncherUpdater try { - using var client = new WebClient(); + using WebClient client = new WebClient(); string platformSuffix = ""; if (OS.IsWindows) platformSuffix = "_win"; else if (OS.IsLinux) platformSuffix = "_lin"; @@ -179,7 +193,7 @@ public static class LauncherUpdater File.Move(updatePath + "/" + CrossPlatformOperations.LauncherName, CrossPlatformOperations.CurrentPath + "/AM2RLauncher.bak"); if (OS.IsWindows) File.Move(CrossPlatformOperations.LauncherName + ".config", CrossPlatformOperations.LauncherName + ".oldCfg"); - foreach (var file in new DirectoryInfo(tmpUpdatePath).GetFiles()) + foreach (FileInfo file in new DirectoryInfo(tmpUpdatePath).GetFiles()) { log.Info("Moving " + file.FullName + " to " + CrossPlatformOperations.CurrentPath + "/" + file.Name); File.Copy(file.FullName, updatePath + "/" + file.Name, true); @@ -214,9 +228,9 @@ public static class LauncherUpdater MainForm.CopyOldConfigToNewConfig(); log.Info("Files extracted. Preparing to restart executable..."); - if (OS.IsLinux) System.Diagnostics.Process.Start("chmod", "+x " + updatePath + "./AM2RLauncher.Gtk"); + if (OS.IsLinux) Process.Start("chmod", "+x " + updatePath + "./AM2RLauncher.Gtk"); - System.Diagnostics.Process.Start(updatePath + "/" + CrossPlatformOperations.LauncherName); + Process.Start(updatePath + "/" + CrossPlatformOperations.LauncherName); Environment.Exit(0); } else diff --git a/AM2RLauncher/AM2RLauncher/MainForm/MainForm.UI.cs b/AM2RLauncher/AM2RLauncher/MainForm/MainForm.UI.cs index 82dd15f..5a97da3 100644 --- a/AM2RLauncher/AM2RLauncher/MainForm/MainForm.UI.cs +++ b/AM2RLauncher/AM2RLauncher/MainForm/MainForm.UI.cs @@ -181,9 +181,10 @@ public partial class MainForm : Form MinimumSize = new Size(500, 400); // TODO: for some reason, this doesn't work on Linux. Was reported at eto, stays here until its fixed ClientSize = new Size(Int32.Parse(ReadFromConfig("Width")), Int32.Parse(ReadFromConfig("Height"))); - if (ClientSize.Width < 500) + // Workaround for above problem + if (OS.IsWindows && (ClientSize.Width < 500)) ClientSize = new Size(500, ClientSize.Height); - if (ClientSize.Height < 400) + if (OS.IsWindows && (ClientSize.Height < 400)) ClientSize = new Size(ClientSize.Width, 400); log.Info("Start the launcher with Size: " + ClientSize.Width + ", " + ClientSize.Height); if (Boolean.Parse(ReadFromConfig("IsMaximized"))) Maximize(); @@ -398,7 +399,6 @@ public partial class MainForm : Form if (OS.IsUnix && !isInternetThere) changelogWebView = new WebView(); - //TODO: these clip on gtk, Eto issue Label changelogNoConnectionLabel = new Label { Text = Text.NoInternetConnection, diff --git a/AM2RLauncher/AM2RLauncherLib/Profile.cs b/AM2RLauncher/AM2RLauncherLib/Profile.cs index a7fa626..74d4ba7 100644 --- a/AM2RLauncher/AM2RLauncherLib/Profile.cs +++ b/AM2RLauncher/AM2RLauncherLib/Profile.cs @@ -2,9 +2,7 @@ using log4net; using System; using System.Collections.Generic; -using System.Collections.Specialized; using System.Diagnostics; -using System.Globalization; using System.IO; using System.IO.Compression; using System.Linq;