From 3ffdc901c776d6e9bd0e3e2efb505ddd2c47de98 Mon Sep 17 00:00:00 2001 From: DismissedLight <1686188646@qq.com> Date: Sun, 24 Dec 2023 12:52:06 +0800 Subject: [PATCH] fix server convert set game path null --- src/Snap.Hutao/Snap.Hutao.Win32/NativeMethods.txt | 1 + src/Snap.Hutao/Snap.Hutao/MainWindow.xaml.cs | 2 -- src/Snap.Hutao/Snap.Hutao/Package.appxmanifest | 5 ++++- .../Snap.Hutao/Package.development.appxmanifest | 5 ++++- .../ViewModel/Game/LaunchGameViewModel.cs | 13 ++++++++++++- 5 files changed, 21 insertions(+), 5 deletions(-) diff --git a/src/Snap.Hutao/Snap.Hutao.Win32/NativeMethods.txt b/src/Snap.Hutao/Snap.Hutao.Win32/NativeMethods.txt index 8a30582d..13d7ac22 100644 --- a/src/Snap.Hutao/Snap.Hutao.Win32/NativeMethods.txt +++ b/src/Snap.Hutao/Snap.Hutao.Win32/NativeMethods.txt @@ -69,6 +69,7 @@ SHELL_LINK_DATA_FLAGS IMemoryBufferByteAccess // Const value +E_FAIL INFINITE RPC_E_WRONG_THREAD MAX_PATH diff --git a/src/Snap.Hutao/Snap.Hutao/MainWindow.xaml.cs b/src/Snap.Hutao/Snap.Hutao/MainWindow.xaml.cs index 5b7342b8..a59757e6 100644 --- a/src/Snap.Hutao/Snap.Hutao/MainWindow.xaml.cs +++ b/src/Snap.Hutao/Snap.Hutao/MainWindow.xaml.cs @@ -2,9 +2,7 @@ // Licensed under the MIT license. using Microsoft.UI.Xaml; -using Snap.Hutao.Control; using Snap.Hutao.Core.Windowing; -using Windows.Foundation; using Windows.Win32.UI.WindowsAndMessaging; namespace Snap.Hutao; diff --git a/src/Snap.Hutao/Snap.Hutao/Package.appxmanifest b/src/Snap.Hutao/Snap.Hutao/Package.appxmanifest index 7d244dee..7d2d9d8d 100644 --- a/src/Snap.Hutao/Snap.Hutao/Package.appxmanifest +++ b/src/Snap.Hutao/Snap.Hutao/Package.appxmanifest @@ -4,10 +4,11 @@ xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10" xmlns:com="http://schemas.microsoft.com/appx/manifest/com/windows10" xmlns:desktop="http://schemas.microsoft.com/appx/manifest/desktop/windows10" + xmlns:desktop6="http://schemas.microsoft.com/appx/manifest/desktop/windows10/6" xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities" xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10" xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest" - IgnorableNamespaces="com uap desktop rescap mp"> + IgnorableNamespaces="com uap desktop desktop6 rescap mp"> Snap Hutao DGP Studio Assets\StoreLogo.png + disabled @@ -64,5 +66,6 @@ + diff --git a/src/Snap.Hutao/Snap.Hutao/Package.development.appxmanifest b/src/Snap.Hutao/Snap.Hutao/Package.development.appxmanifest index 375da126..6d9dfef0 100644 --- a/src/Snap.Hutao/Snap.Hutao/Package.development.appxmanifest +++ b/src/Snap.Hutao/Snap.Hutao/Package.development.appxmanifest @@ -4,10 +4,11 @@ xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10" xmlns:com="http://schemas.microsoft.com/appx/manifest/com/windows10" xmlns:desktop="http://schemas.microsoft.com/appx/manifest/desktop/windows10" + xmlns:desktop6="http://schemas.microsoft.com/appx/manifest/desktop/windows10/6" xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities" xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10" xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest" - IgnorableNamespaces="com uap desktop rescap mp"> + IgnorableNamespaces="com uap desktop desktop6 rescap mp"> Snap Hutao Dev DGP Studio Assets\StoreLogo.png + disabled @@ -64,5 +66,6 @@ + diff --git a/src/Snap.Hutao/Snap.Hutao/ViewModel/Game/LaunchGameViewModel.cs b/src/Snap.Hutao/Snap.Hutao/ViewModel/Game/LaunchGameViewModel.cs index 7607088b..6a8dbf5d 100644 --- a/src/Snap.Hutao/Snap.Hutao/ViewModel/Game/LaunchGameViewModel.cs +++ b/src/Snap.Hutao/Snap.Hutao/ViewModel/Game/LaunchGameViewModel.cs @@ -23,6 +23,9 @@ using Snap.Hutao.Web.Hoyolab.SdkStatic.Hk4e.Launcher; using System.Collections.Immutable; using System.Collections.ObjectModel; using System.IO; +using Windows.Win32; +using Windows.Win32.Foundation; +using static Windows.Win32.PInvoke; namespace Snap.Hutao.ViewModel.Game; @@ -42,6 +45,7 @@ internal sealed partial class LaunchGameViewModel : Abstraction.ViewModel private readonly IContentDialogFactory contentDialogFactory; private readonly LaunchStatusOptions launchStatusOptions; private readonly IGameLocatorFactory gameLocatorFactory; + private readonly ILogger logger; private readonly IProgressFactory progressFactory; private readonly IInfoBarService infoBarService; private readonly ResourceClient resourceClient; @@ -261,7 +265,7 @@ internal sealed partial class LaunchGameViewModel : Abstraction.ViewModel { await taskContext.SwitchToMainThreadAsync(); GamePathEntries = launchOptions.GetGamePathEntries(out GamePathEntry? entry); - UpdateSelectedGamePathEntry(entry, false); + UpdateSelectedGamePathEntry(entry, true); } } @@ -279,6 +283,13 @@ internal sealed partial class LaunchGameViewModel : Abstraction.ViewModel } catch (Exception ex) { + if (ex is Win32Exception win32Exception && win32Exception.HResult == HRESULT.E_FAIL) + { + // User canceled the operation. ignore + return; + } + + logger.LogCritical(ex, "Launch failed"); infoBarService.Error(ex); } }