diff --git a/src/Snap.Hutao/Snap.Hutao/Core/CommandLineBuilder.cs b/src/Snap.Hutao/Snap.Hutao/Core/CommandLineBuilder.cs index ca8af27f..43974976 100644 --- a/src/Snap.Hutao/Snap.Hutao/Core/CommandLineBuilder.cs +++ b/src/Snap.Hutao/Snap.Hutao/Core/CommandLineBuilder.cs @@ -18,11 +18,11 @@ internal sealed class CommandLineBuilder /// /// 当符合条件时添加参数 /// - /// 参数名称 /// 条件 + /// 参数名称 /// 值 /// 命令行建造器 - public CommandLineBuilder AppendIf(string name, bool condition, object? value = null) + public CommandLineBuilder AppendIf(bool condition, string name, object? value = null) { return condition ? Append(name, value) : this; } @@ -35,7 +35,7 @@ internal sealed class CommandLineBuilder /// 命令行建造器 public CommandLineBuilder AppendIfNotNull(string name, object? value = null) { - return AppendIf(name, value is not null, value); + return AppendIf(value is not null, name, value); } /// diff --git a/src/Snap.Hutao/Snap.Hutao/Core/ExceptionService/HutaoException.cs b/src/Snap.Hutao/Snap.Hutao/Core/ExceptionService/HutaoException.cs index 90c02aef..543b0098 100644 --- a/src/Snap.Hutao/Snap.Hutao/Core/ExceptionService/HutaoException.cs +++ b/src/Snap.Hutao/Snap.Hutao/Core/ExceptionService/HutaoException.cs @@ -17,10 +17,4 @@ internal sealed class HutaoException : Exception } public HutaoExceptionKind Kind { get; private set; } -} - -internal enum HutaoExceptionKind -{ - None, - } \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/Core/ExceptionService/HutaoExceptionKind.cs b/src/Snap.Hutao/Snap.Hutao/Core/ExceptionService/HutaoExceptionKind.cs new file mode 100644 index 00000000..6cf43a30 --- /dev/null +++ b/src/Snap.Hutao/Snap.Hutao/Core/ExceptionService/HutaoExceptionKind.cs @@ -0,0 +1,9 @@ +// Copyright (c) DGP Studio. All rights reserved. +// Licensed under the MIT license. + +namespace Snap.Hutao.Core.ExceptionService; + +internal enum HutaoExceptionKind +{ + None, +} \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/Service/Game/Package/GamePackageService.cs b/src/Snap.Hutao/Snap.Hutao/Service/Game/Package/GamePackageService.cs index c8aeb30b..f828323f 100644 --- a/src/Snap.Hutao/Snap.Hutao/Service/Game/Package/GamePackageService.cs +++ b/src/Snap.Hutao/Snap.Hutao/Service/Game/Package/GamePackageService.cs @@ -66,6 +66,13 @@ internal sealed partial class GamePackageService : IGamePackageService private static bool CheckDirectoryPermissions(string folder) { + // Program Files has special permissions limitation. + string programFiles = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles); + if (folder.StartsWith(programFiles, StringComparison.OrdinalIgnoreCase)) + { + return false; + } + try { string tempFilePath = Path.Combine(folder, $"{Guid.NewGuid():N}.tmp"); diff --git a/src/Snap.Hutao/Snap.Hutao/Service/Game/Process/GameProcessService.cs b/src/Snap.Hutao/Snap.Hutao/Service/Game/Process/GameProcessService.cs index 5f960dbb..37bdadb3 100644 --- a/src/Snap.Hutao/Snap.Hutao/Service/Game/Process/GameProcessService.cs +++ b/src/Snap.Hutao/Snap.Hutao/Service/Game/Process/GameProcessService.cs @@ -111,13 +111,13 @@ internal sealed partial class GameProcessService : IGameProcessService // https://docs.unity.cn/cn/current/Manual/PlayerCommandLineArguments.html // https://docs.unity3d.com/2017.4/Documentation/Manual/CommandLineArguments.html commandLine = new CommandLineBuilder() - .AppendIf("-popupwindow", launchOptions.IsBorderless) - .AppendIf("-window-mode", launchOptions.IsExclusive, "exclusive") + .AppendIf(launchOptions.IsBorderless, "-popupwindow") + .AppendIf(launchOptions.IsExclusive, "-window-mode", "exclusive") .Append("-screen-fullscreen", launchOptions.IsFullScreen ? 1 : 0) - .AppendIf("-screen-width", launchOptions.IsScreenWidthEnabled, launchOptions.ScreenWidth) - .AppendIf("-screen-height", launchOptions.IsScreenHeightEnabled, launchOptions.ScreenHeight) - .AppendIf("-monitor", launchOptions.IsMonitorEnabled, launchOptions.Monitor.Value) - .AppendIf("-platform_type CLOUD_THIRD_PARTY_MOBILE", launchOptions.IsUseCloudThirdPartyMobile) + .AppendIf(launchOptions.IsScreenWidthEnabled, "-screen-width", launchOptions.ScreenWidth) + .AppendIf(launchOptions.IsScreenHeightEnabled, "-screen-height", launchOptions.ScreenHeight) + .AppendIf(launchOptions.IsMonitorEnabled, "-monitor", launchOptions.Monitor.Value) + .AppendIf(launchOptions.IsUseCloudThirdPartyMobile, "-platform_type CLOUD_THIRD_PARTY_MOBILE") .ToString(); }