From 5737f4f771fed31d041d1d91b01e61896d53db4d Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Sun, 4 Feb 2018 11:40:49 +0000 Subject: [PATCH] Preserve arguments passed into the windows launcher. --- packaging/windows/WindowsLauncher.cs.in | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/packaging/windows/WindowsLauncher.cs.in b/packaging/windows/WindowsLauncher.cs.in index 79d3756a94..76a07c5019 100644 --- a/packaging/windows/WindowsLauncher.cs.in +++ b/packaging/windows/WindowsLauncher.cs.in @@ -32,10 +32,10 @@ namespace OpenRA [STAThread] static int Main(string[] args) { - if (args.Any(x => x.Contains("Engine.LaunchPath"))) + if (args.Any(x => x.StartsWith("Engine.LaunchPath=", StringComparison.Ordinal))) return RunGame(args); - return RunInnerLauncher(); + return RunInnerLauncher(args); } static int RunGame(string[] args) @@ -57,16 +57,18 @@ namespace OpenRA } } - static int RunInnerLauncher() + static int RunInnerLauncher(string[] args) { var launcherPath = Assembly.GetExecutingAssembly().Location; - var args = new[] { "Engine.LaunchPath=" + launcherPath }; - if (!string.IsNullOrEmpty(ModID)) - args = args.Append("Game.Mod=" + ModID).ToArray(); + var launcherArgs = args.ToList(); - args = args.Select(arg => "\"" + arg + "\"").ToArray(); + if (!launcherArgs.Any(x => x.StartsWith("Engine.LaunchPath=", StringComparison.Ordinal))) + launcherArgs.Add("Engine.LaunchPath=\"" + launcherPath + "\""); - var psi = new ProcessStartInfo(launcherPath, string.Join(" ", args)); + if (!launcherArgs.Any(x => x.StartsWith("Game.Mod=", StringComparison.Ordinal))) + launcherArgs.Add("Game.Mod=" + ModID); + + var psi = new ProcessStartInfo(launcherPath, string.Join(" ", launcherArgs)); try {