diff --git a/src/Snap.Hutao/Snap.Hutao.SourceGeneration/Resx/ResxGenerator.cs b/src/Snap.Hutao/Snap.Hutao.SourceGeneration/Resx/ResxGenerator.cs
index fe446d27..17979d76 100644
--- a/src/Snap.Hutao/Snap.Hutao.SourceGeneration/Resx/ResxGenerator.cs
+++ b/src/Snap.Hutao/Snap.Hutao.SourceGeneration/Resx/ResxGenerator.cs
@@ -314,12 +314,6 @@ public sealed class ResxGenerator : IIncrementalGenerator
string callParams = string.Join(", ", Enumerable.Range(0, args + 1).Select(arg => "arg" + arg.ToString(CultureInfo.InvariantCulture)));
sb.AppendLine($$"""
- /// {{comment}}
- public static string Format{{ToCSharpNameIdentifier(entry.Name!)}}(global::System.Globalization.CultureInfo? provider, {{inParams}})
- {
- return GetString(provider, "{{entry.Name}}", {{callParams}})!;
- }
-
/// {{comment}}
public static string Format{{ToCSharpNameIdentifier(entry.Name!)}}({{inParams}})
{
diff --git a/src/Snap.Hutao/Snap.Hutao.Win32/NativeMethods.txt b/src/Snap.Hutao/Snap.Hutao.Win32/NativeMethods.txt
index 3a06f23a..88a7812e 100644
--- a/src/Snap.Hutao/Snap.Hutao.Win32/NativeMethods.txt
+++ b/src/Snap.Hutao/Snap.Hutao.Win32/NativeMethods.txt
@@ -28,6 +28,7 @@ WaitForSingleObject
WriteProcessMemory
// OLE32
+CoCreateInstance
CoWaitForMultipleObjects
// USER32
diff --git a/src/Snap.Hutao/Snap.Hutao.Win32/PInvoke.cs b/src/Snap.Hutao/Snap.Hutao.Win32/PInvoke.cs
new file mode 100644
index 00000000..e5ae3614
--- /dev/null
+++ b/src/Snap.Hutao/Snap.Hutao.Win32/PInvoke.cs
@@ -0,0 +1,18 @@
+using System;
+using Windows.Win32.Foundation;
+using Windows.Win32.System.Com;
+
+namespace Windows.Win32;
+
+internal static partial class PInvoke
+{
+ ///
+ internal static unsafe HRESULT CoCreateInstance(object? pUnkOuter, CLSCTX dwClsContext, out TInterface ppv)
+where TInterface : class
+
+ {
+ HRESULT hr = CoCreateInstance(typeof(TClass).GUID, pUnkOuter, dwClsContext, typeof(TInterface).GUID, out object o);
+ ppv = (TInterface)o;
+ return hr;
+ }
+}
\ No newline at end of file
diff --git a/src/Snap.Hutao/Snap.Hutao.Win32/WinRTCustomMarshaler.cs b/src/Snap.Hutao/Snap.Hutao.Win32/WinRTCustomMarshaler.cs
index 12f4d9bc..72e1e2c3 100644
--- a/src/Snap.Hutao/Snap.Hutao.Win32/WinRTCustomMarshaler.cs
+++ b/src/Snap.Hutao/Snap.Hutao.Win32/WinRTCustomMarshaler.cs
@@ -69,4 +69,4 @@ internal class WinRTCustomMarshaler : ICustomMarshaler
return Marshal.GetObjectForIUnknown(pNativeData);
}
}
-}
+}
\ No newline at end of file
diff --git a/src/Snap.Hutao/Snap.Hutao/Core/DependencyInjection/DependencyInjection.cs b/src/Snap.Hutao/Snap.Hutao/Core/DependencyInjection/DependencyInjection.cs
index c91d536b..5a709cb0 100644
--- a/src/Snap.Hutao/Snap.Hutao/Core/DependencyInjection/DependencyInjection.cs
+++ b/src/Snap.Hutao/Snap.Hutao/Core/DependencyInjection/DependencyInjection.cs
@@ -55,6 +55,9 @@ internal static class DependencyInjection
CultureInfo.CurrentCulture = cultureInfo;
CultureInfo.CurrentUICulture = cultureInfo;
+
ApplicationLanguages.PrimaryLanguageOverride = cultureInfo.Name;
+
+ SH.Culture = cultureInfo;
}
}
\ No newline at end of file
diff --git a/src/Snap.Hutao/Snap.Hutao/Core/Shell/ShellLinkInterop.cs b/src/Snap.Hutao/Snap.Hutao/Core/Shell/ShellLinkInterop.cs
index 051aed33..1172d6d7 100644
--- a/src/Snap.Hutao/Snap.Hutao/Core/Shell/ShellLinkInterop.cs
+++ b/src/Snap.Hutao/Snap.Hutao/Core/Shell/ShellLinkInterop.cs
@@ -2,11 +2,14 @@
// Licensed under the MIT license.
using System.IO;
+using System.Runtime.InteropServices;
using Windows.Storage;
using Windows.Win32;
+using Windows.Win32.Foundation;
using Windows.Win32.System.Com;
using Windows.Win32.UI.Shell;
using Windows.Win32.UI.WindowsAndMessaging;
+using static Windows.Win32.PInvoke;
namespace Snap.Hutao.Core.Shell;
@@ -37,16 +40,17 @@ internal sealed partial class ShellLinkInterop : IShellLinkInterop
return false;
}
- IShellLinkW shellLink = (IShellLinkW)new ShellLink();
+ HRESULT result = CoCreateInstance(null, CLSCTX.CLSCTX_INPROC_SERVER, out IShellLinkW shellLink);
+ Marshal.ThrowExceptionForHR(result);
+
shellLink.SetPath("powershell");
shellLink.SetArguments($"""
-Command "Start-Process shell:AppsFolder\{runtimeOptions.FamilyName}!App -verb runas"
""");
shellLink.SetShowCmd(SHOW_WINDOW_CMD.SW_SHOWMINNOACTIVE);
-
shellLink.SetIconLocation(targetLogoPath, 0);
string desktop = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
- string target = Path.Combine(desktop, $"{SH.AppNameAndVersion.Format(runtimeOptions.Version)}.lnk");
+ string target = Path.Combine(desktop, $"{SH.FormatAppNameAndVersion(runtimeOptions.Version)}.lnk");
IPersistFile persistFile = (IPersistFile)shellLink;
try
diff --git a/src/Snap.Hutao/Snap.Hutao/Service/Metadata/MetadataService.cs b/src/Snap.Hutao/Snap.Hutao/Service/Metadata/MetadataService.cs
index f2c8192e..66eb91d0 100644
--- a/src/Snap.Hutao/Snap.Hutao/Service/Metadata/MetadataService.cs
+++ b/src/Snap.Hutao/Snap.Hutao/Service/Metadata/MetadataService.cs
@@ -98,7 +98,7 @@ internal sealed partial class MetadataService : IMetadataService, IMetadataServi
else
{
int code = (int)(ex.StatusCode ?? 0);
- infoBarService.Error(SH.FormatServiceMetadataHttpRequestFailed(CultureInfo.CurrentCulture, code));
+ infoBarService.Error(SH.FormatServiceMetadataHttpRequestFailed(code));
}
return false;