diff --git a/src/Avalonia.Base/Platform/Storage/FileIO/BclLauncher.cs b/src/Avalonia.Base/Platform/Storage/FileIO/BclLauncher.cs index 242b8e6d41..96f489a222 100644 --- a/src/Avalonia.Base/Platform/Storage/FileIO/BclLauncher.cs +++ b/src/Avalonia.Base/Platform/Storage/FileIO/BclLauncher.cs @@ -49,13 +49,17 @@ internal class BclLauncher : ILauncher } else if (OperatingSystemEx.IsWindows() || OperatingSystemEx.IsMacOS()) { - using var process = Process.Start(new ProcessStartInfo + var info = new ProcessStartInfo { FileName = OperatingSystemEx.IsWindows() ? urlOrFile : "open", - Arguments = OperatingSystemEx.IsMacOS() ? $"{urlOrFile}" : "", CreateNoWindow = true, UseShellExecute = OperatingSystemEx.IsWindows() - }); + }; + // Using the argument list avoids having to escape spaces and other special + // characters that are part of valid macos file and folder paths. + if (OperatingSystemEx.IsMacOS()) + info.ArgumentList.Add(urlOrFile); + using var process = Process.Start(info); return true; } else