Giter VIP home page Giter VIP logo

natsurainko.fluentlauncher's Issues

[Feature] 全局异常捕获

您的功能请求是否与问题有关?请描述
目前程序发生异常时将会直接退出,提供全局异常捕获可以帮助用户反馈问题。

注意到App.xaml.cs里面有注释掉的相关代码,尝试改了一下已经初步实现了解决方案,主要问题如下:

  • 没有设置e.Handled = true,即使异常已经被捕获了,仍然会导致程序崩溃
  • 异常提示窗口通过MainWindow展示,如果MainWindow初始化未完成会导致空引用,在全局异常处理方法里面继续引发异常

描述您想要的解决方案

  • 如果MainWindow已正常创建,通过MessageDialog展示错误信息
  • 如果在启动过程中出现异常,使用WASDK Windowing API创建新的窗口展示错误信息

代码在这里https://github.com/gaviny82/Natsurainko.FluentLauncher/tree/global-exception-handler

[Bug] 相同账号重复登录(ApplicationData单个设置项内容大小超过限制)

描述遇到的问题

  • 相同账号允许重复登录
  • 同一个微软账户重复登录三次以上使程序直接退出,不会提供异常信息

复现问题的步骤

  1. 打开设置页面(或首次使用引导)并点击登录按钮
  2. 选择微软账户并登录
  3. 重复登录同一个账户
  4. 重复3次以上时程序崩溃

期望的表现

应该禁止登录用户名/UUID相同的账户
Mojang验证失败时提供错误信息(需要修改FluentCore)

环境

No response

附件

_AGG I5EZ6RNF~) }{G9OLD

[Bug] 無法登入

请注意:一个issue仅报告一个问题。如果您有很多问题,请创建其他issues
请注意:如果您要反馈一些不重要的错误,请在讨论中发布

FluentLauncher错误报告:

FluentLauncher版本:2.1.7.0
主要大意:無法登入微軟帳號
是游戏崩溃的问题吗:是

主要内容:

無法登入微軟帳號

部分附件:

image

这个问题严重嘛:(10 分)

[Bug] FileVersionInfo.GetVersionInfo 引起的 Java检查 错误

请注意:一个issue仅报告一个问题。如果您有很多问题,请创建其他issues
请注意:如果您要反馈一些不重要的错误,请在讨论中发布

FluentLauncher错误报告:

FluentLauncher版本:2.X.XX
主要大意:启动失败
是游戏崩溃的问题吗:是

主要内容:

System.IO.FileNotFoundException
System.IO.FileNotFoundException: C:\Windows\System32\信息: 用提供的模式无法找到文件。
at System.Diagnostics.FileVersionInfo.GetVersionInfo(String fileName)
at Natsurainko.FluentCore.Extension.Windows.Service.JavaHelper.GetJavaRuntimeInfo(String file)
at Natsurainko.FluentLauncher.Components.FluentCore.GameCore.<>c.b__6_1(String x)
at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](List1 source, Func2 keySelector, Func2 elementSelector, IEqualityComparer1 comparer)
at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable1 source, Func2 keySelector, Func2 elementSelector, IEqualityComparer1 comparer)
at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable1 source, Func2 keySelector, Func2 elementSelector) at Natsurainko.FluentLauncher.Components.FluentCore.GameCore.GetSuitableJava() at Natsurainko.FluentLauncher.Components.FluentCore.GameCore.GetLaunchSetting() at Natsurainko.FluentLauncher.Models.LaunchArrangement..ctor(GameCore core) at Natsurainko.FluentLauncher.Models.LaunchArrangement.StartNew(GameCore core) at Natsurainko.FluentLauncher.ViewModels.Pages.Cores.<>c__DisplayClass11_0.<Launch>b__0() at System.Threading.Tasks.Task.InnerInvoke() at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state) --- End of stack trace from previous location --- at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread) --- End of stack trace from previous location --- at CommunityToolkit.Mvvm.Input.AsyncRelayCommand.AwaitAndThrowIfFailed(Task executionTask) at System.Threading.Tasks.Task.<>c.<ThrowAsync>b__128_0(Object state) at Microsoft.UI.Dispatching.DispatcherQueueSynchronizationContext.<>c__DisplayClass2_0.<Post>b__0() System.IO.FileNotFoundException System.IO.FileNotFoundException: C:\Windows\System32\信息: 用提供的模式无法找到文件。 at System.Diagnostics.FileVersionInfo.GetVersionInfo(String fileName) at Natsurainko.FluentCore.Extension.Windows.Service.JavaHelper.GetJavaRuntimeInfo(String file) at Natsurainko.FluentLauncher.Components.FluentCore.GameCore.<>c.<GetSuitableJava>b__6_1(String x) at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](List1 source, Func2 keySelector, Func2 elementSelector, IEqualityComparer1 comparer) at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable1 source, Func2 keySelector, Func2 elementSelector, IEqualityComparer1 comparer) at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable1 source, Func2 keySelector, Func2 elementSelector)
at Natsurainko.FluentLauncher.Components.FluentCore.GameCore.GetSuitableJava()
at Natsurainko.FluentLauncher.Components.FluentCore.GameCore.GetLaunchSetting()
at Natsurainko.FluentLauncher.Models.LaunchArrangement..ctor(GameCore core)
at Natsurainko.FluentLauncher.Models.LaunchArrangement.StartNew(GameCore core)
at Natsurainko.FluentLauncher.ViewModels.Pages.Cores.<>c__DisplayClass11_0.b__0()
at System.Threading.Tasks.Task.InnerInvoke()
at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location ---
at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread)
--- End of stack trace from previous location ---
at CommunityToolkit.Mvvm.Input.AsyncRelayCommand.AwaitAndThrowIfFailed(Task executionTask)
at System.Threading.Tasks.Task.<>c.b__128_0(Object state)
at Microsoft.UI.Dispatching.DispatcherQueueSynchronizationContext.<>c__DisplayClass2_0.b__0()
System.IO.FileNotFoundException
System.IO.FileNotFoundException: C:\Windows\System32\信息: 用提供的模式无法找到文件。
at System.Diagnostics.FileVersionInfo.GetVersionInfo(String fileName)
at Natsurainko.FluentCore.Extension.Windows.Service.JavaHelper.GetJavaRuntimeInfo(String file)
at Natsurainko.FluentLauncher.Components.FluentCore.GameCore.<>c.b__6_1(String x)
at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](List1 source, Func2 keySelector, Func2 elementSelector, IEqualityComparer1 comparer)
at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable1 source, Func2 keySelector, Func2 elementSelector, IEqualityComparer1 comparer)
at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable1 source, Func2 keySelector, Func`2 elementSelector)
at Natsurainko.FluentLauncher.Components.FluentCore.GameCore.GetSuitableJava()
at Natsurainko.FluentLauncher.Components.FluentCore.GameCore.GetLaunchSetting()
at Natsurainko.FluentLauncher.Models.LaunchArrangement..ctor(GameCore core)
at Natsurainko.FluentLauncher.Models.LaunchArrangement.StartNew(GameCore core)
at Natsurainko.FluentLauncher.ViewModels.Pages.Cores.<>c__DisplayClass11_0.b__0()
at System.Threading.Tasks.Task.InnerInvoke()
at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location ---
at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread)
--- End of stack trace from previous location ---
at CommunityToolkit.Mvvm.Input.AsyncRelayCommand.AwaitAndThrowIfFailed(Task executionTask)
at System.Threading.Tasks.Task.<>c.b__128_0(Object state)
at Microsoft.UI.Dispatching.DispatcherQueueSynchronizationContext.<>c__DisplayClass2_0.b__0()

部分附件:

这个问题严重嘛:(1-10 分)

dont active

Is this feature not working or am I doing something wrong?

изображение

[Bug] 文件被占用时无法删除核心

FluentLauncher错误报告:

FluentLauncher版本:latest
主要大意:文件被占用导致无法删除核心
是游戏崩溃的问题吗:否
System.IO.IOException
System.IO.IOException: The process cannot access the file 'C:\Users\迪迦\AppData\Roaming.minecraft\versions\1.18.2\1.18.2.jar_Part_0_To_2532456' because it is being used by another process.
at System.IO.FileSystem.DeleteFile(String fullPath)
at System.IO.FileInfo.Delete()
at Natsurainko.Toolkits.IO.DirectoryExtension.DeleteAllFiles(DirectoryInfo directory)
at Natsurainko.FluentCore.Extension.GameCoreExtension.Delete(IGameCore core)
at Natsurainko.FluentLauncher.ViewModels.Pages.Cores.Delete()
at CommunityToolkit.Mvvm.Input.RelayCommand.Execute(Object parameter)
at ABI.System.Windows.Input.ICommand.Vftbl.Do_Abi_Execute_3(IntPtr thisPtr, IntPtr parameter)
删除不了存档
KW$A95V)PQE`S}SL4J~CEV8

[Bug] FileVersionInfo.GetVersionInfo 引起的 Java检查 错误 - FileNotFoundException

FluentLauncher错误报告:System.IO.FileNotFoundException

System.IO.FileNotFoundException: C:\Program Files\Java\jre1.8.0_311\bin\javaw.exe
at System.Diagnostics.FileVersionInfo.GetVersionInfo(String fileName)
at Natsurainko.FluentCore.Extension.Windows.Service.JavaHelper.GetJavaRuntimeInfo(String file)
at Natsurainko.FluentLauncher.Components.FluentCore.GameCore.<>c.b__6_1(String x)
at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](List1 source, Func2 keySelector, Func2 elementSelector, IEqualityComparer1 comparer)
at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable1 source, Func2 keySelector, Func2 elementSelector, IEqualityComparer1 comparer)
at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable1 source, Func2 keySelector, Func2 elementSelector) at Natsurainko.FluentLauncher.Components.FluentCore.GameCore.GetSuitableJava() at Natsurainko.FluentLauncher.Components.FluentCore.GameCore.GetLaunchSetting() at Natsurainko.FluentLauncher.Models.LaunchArrangement..ctor(GameCore core) at Natsurainko.FluentLauncher.Models.LaunchArrangement.StartNew(GameCore core) at Natsurainko.FluentLauncher.ViewModels.Pages.Home.<Launch>b__8_0() at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state) --- End of stack trace from previous location --- at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread) --- End of stack trace from previous location --- at CommunityToolkit.Mvvm.Input.AsyncRelayCommand.AwaitAndThrowIfFailed(Task executionTask) at System.Threading.Tasks.Task.<>c.<ThrowAsync>b__128_0(Object state) at Microsoft.UI.Dispatching.DispatcherQueueSynchronizationContext.<>c__DisplayClass2_0.<Post>b__0() System.IO.FileNotFoundException System.IO.FileNotFoundException: C:\Program Files\Java\jre1.8.0_311\bin\javaw.exe at System.Diagnostics.FileVersionInfo.GetVersionInfo(String fileName) at Natsurainko.FluentCore.Extension.Windows.Service.JavaHelper.GetJavaRuntimeInfo(String file) at Natsurainko.FluentLauncher.Components.FluentCore.GameCore.<>c.<GetSuitableJava>b__6_1(String x) at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](List1 source, Func2 keySelector, Func2 elementSelector, IEqualityComparer1 comparer) at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable1 source, Func2 keySelector, Func2 elementSelector, IEqualityComparer1 comparer) at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable1 source, Func2 keySelector, Func2 elementSelector)
at Natsurainko.FluentLauncher.Components.FluentCore.GameCore.GetSuitableJava()
at Natsurainko.FluentLauncher.Components.FluentCore.GameCore.GetLaunchSetting()
at Natsurainko.FluentLauncher.Models.LaunchArrangement..ctor(GameCore core)
at Natsurainko.FluentLauncher.Models.LaunchArrangement.StartNew(GameCore core)
at Natsurainko.FluentLauncher.ViewModels.Pages.Home.b__8_0()
at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location ---
at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread)
--- End of stack trace from previous location ---
at CommunityToolkit.Mvvm.Input.AsyncRelayCommand.AwaitAndThrowIfFailed(Task executionTask)
at System.Threading.Tasks.Task.<>c.b__128_0(Object state)
at Microsoft.UI.Dispatching.DispatcherQueueSynchronizationContext.<>c__DisplayClass2_0.b__0()
System.IO.FileNotFoundException
System.IO.FileNotFoundException: C:\Program Files\Java\jre1.8.0_311\bin\javaw.exe
at System.Diagnostics.FileVersionInfo.GetVersionInfo(String fileName)
at Natsurainko.FluentCore.Extension.Windows.Service.JavaHelper.GetJavaRuntimeInfo(String file)
at Natsurainko.FluentLauncher.Components.FluentCore.GameCore.<>c.b__6_1(String x)
at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](List1 source, Func2 keySelector, Func2 elementSelector, IEqualityComparer1 comparer)
at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable1 source, Func2 keySelector, Func2 elementSelector, IEqualityComparer1 comparer)
at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable1 source, Func2 keySelector, Func`2 elementSelector)
at Natsurainko.FluentLauncher.Components.FluentCore.GameCore.GetSuitableJava()
at Natsurainko.FluentLauncher.Components.FluentCore.GameCore.GetLaunchSetting()
at Natsurainko.FluentLauncher.Models.LaunchArrangement..ctor(GameCore core)
at Natsurainko.FluentLauncher.Models.LaunchArrangement.StartNew(GameCore core)
at Natsurainko.FluentLauncher.ViewModels.Pages.Home.b__8_0()
at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location ---
at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread)
--- End of stack trace from previous location ---
at CommunityToolkit.Mvvm.Input.AsyncRelayCommand.AwaitAndThrowIfFailed(Task executionTask)
at System.Threading.Tasks.Task.<>c.b__128_0(Object state)
at Microsoft.UI.Dispatching.DispatcherQueueSynchronizationContext.<>c__DisplayClass2_0.b__0()

FluentLauncher版本:2.1.50
主要大意:启动游戏时弹出错误报告
是游戏崩溃的问题吗:否

部分附件:

image

这个问题严重嘛:(1-10 分)

[严重][Bug] Cores 页面性能极差 CPU高占用以及内存泄漏

FluentLauncher错误报告:

FluentLauncher版本:2.1.x.x - 最新
主要大意:
Cores 页面性能差
是游戏崩溃的问题吗:否

主要内容:

在多核心情况下会出现CPU高占用以及内存泄漏的情况
同时每次加载核心的时间都存在几秒的延迟

部分附件:

image

这个问题严重嘛:7

[Bug] FileVersionInfo.GetVersionInfo 引起的 Java检查 错误

System.IO.FileNotFoundException
System.IO.FileNotFoundException: C:\Users\CTZ\AppData\Roaming.minecraft\cache\java\java-runtime-beta\windows-x64\java-runtime-beta\bin\javaw.exe
at System.Diagnostics.FileVersionInfo.GetVersionInfo(String fileName)
at Natsurainko.FluentCore.Extension.Windows.Service.JavaHelper.GetJavaRuntimeInfo(String file)
at Natsurainko.FluentLauncher.Components.FluentCore.GameCore.<>c.b__6_1(String x)
at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](List1 source, Func2 keySelector, Func2 elementSelector, IEqualityComparer1 comparer)
at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable1 source, Func2 keySelector, Func2 elementSelector, IEqualityComparer1 comparer)
at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable1 source, Func2 keySelector, Func2 elementSelector) at Natsurainko.FluentLauncher.Components.FluentCore.GameCore.GetSuitableJava() at Natsurainko.FluentLauncher.Components.FluentCore.GameCore.GetLaunchSetting() at Natsurainko.FluentLauncher.Models.LaunchArrangement..ctor(GameCore core) at Natsurainko.FluentLauncher.Models.LaunchArrangement.StartNew(GameCore core) at Natsurainko.FluentLauncher.ViewModels.Pages.Home.<Launch>b__8_0() at System.Threading.Tasks.Task.InnerInvoke() at System.Threading.Tasks.Task.<>c.<.cctor>b__272_0(Object obj) at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state) --- End of stack trace from previous location --- at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread) --- End of stack trace from previous location --- at CommunityToolkit.Mvvm.Input.AsyncRelayCommand.AwaitAndThrowIfFailed(Task executionTask) at System.Threading.Tasks.Task.<>c.<ThrowAsync>b__128_0(Object state) at Microsoft.UI.Dispatching.DispatcherQueueSynchronizationContext.<>c__DisplayClass2_0.<Post>b__0() System.IO.FileNotFoundException System.IO.FileNotFoundException: C:\Users\CTZ\AppData\Roaming\.minecraft\cache\java\java-runtime-beta\windows-x64\java-runtime-beta\bin\javaw.exe at System.Diagnostics.FileVersionInfo.GetVersionInfo(String fileName) at Natsurainko.FluentCore.Extension.Windows.Service.JavaHelper.GetJavaRuntimeInfo(String file) at Natsurainko.FluentLauncher.Components.FluentCore.GameCore.<>c.<GetSuitableJava>b__6_1(String x) at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](List1 source, Func2 keySelector, Func2 elementSelector, IEqualityComparer1 comparer) at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable1 source, Func2 keySelector, Func2 elementSelector, IEqualityComparer1 comparer) at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable1 source, Func2 keySelector, Func2 elementSelector)
at Natsurainko.FluentLauncher.Components.FluentCore.GameCore.GetSuitableJava()
at Natsurainko.FluentLauncher.Components.FluentCore.GameCore.GetLaunchSetting()
at Natsurainko.FluentLauncher.Models.LaunchArrangement..ctor(GameCore core)
at Natsurainko.FluentLauncher.Models.LaunchArrangement.StartNew(GameCore core)
at Natsurainko.FluentLauncher.ViewModels.Pages.Home.b__8_0()
at System.Threading.Tasks.Task.InnerInvoke()
at System.Threading.Tasks.Task.<>c.<.cctor>b__272_0(Object obj)
at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location ---
at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread)
--- End of stack trace from previous location ---
at CommunityToolkit.Mvvm.Input.AsyncRelayCommand.AwaitAndThrowIfFailed(Task executionTask)
at System.Threading.Tasks.Task.<>c.b__128_0(Object state)
at Microsoft.UI.Dispatching.DispatcherQueueSynchronizationContext.<>c__DisplayClass2_0.b__0()
System.IO.FileNotFoundException
System.IO.FileNotFoundException: C:\Users\CTZ\AppData\Roaming.minecraft\cache\java\java-runtime-beta\windows-x64\java-runtime-beta\bin\javaw.exe
at System.Diagnostics.FileVersionInfo.GetVersionInfo(String fileName)
at Natsurainko.FluentCore.Extension.Windows.Service.JavaHelper.GetJavaRuntimeInfo(String file)
at Natsurainko.FluentLauncher.Components.FluentCore.GameCore.<>c.b__6_1(String x)
at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](List1 source, Func2 keySelector, Func2 elementSelector, IEqualityComparer1 comparer)
at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable1 source, Func2 keySelector, Func2 elementSelector, IEqualityComparer1 comparer)
at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable1 source, Func2 keySelector, Func`2 elementSelector)
at Natsurainko.FluentLauncher.Components.FluentCore.GameCore.GetSuitableJava()
at Natsurainko.FluentLauncher.Components.FluentCore.GameCore.GetLaunchSetting()
at Natsurainko.FluentLauncher.Models.LaunchArrangement..ctor(GameCore core)
at Natsurainko.FluentLauncher.Models.LaunchArrangement.StartNew(GameCore core)
at Natsurainko.FluentLauncher.ViewModels.Pages.Home.b__8_0()
at System.Threading.Tasks.Task.InnerInvoke()
at System.Threading.Tasks.Task.<>c.<.cctor>b__272_0(Object obj)
at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location ---
at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread)
--- End of stack trace from previous location ---
at CommunityToolkit.Mvvm.Input.AsyncRelayCommand.AwaitAndThrowIfFailed(Task executionTask)
at System.Threading.Tasks.Task.<>c.b__128_0(Object state)
at Microsoft.UI.Dispatching.DispatcherQueueSynchronizationContext.<>c__DisplayClass2_0.b__0()

[Bug/Feature] 安装相同版本的核心

FluentLauncher错误报告:

FluentLauncher版本:latest
主要大意:即使核心名称不同也无法安装相同版本的核心
是游戏崩溃的问题吗:否

主要内容:

应该考虑支持相同版本的安装,只要保证名字不同就行

这个问题严重嘛:5

[Bug] 在应用退出后再次打开就会回到初始页面

请注意:一个issue仅报告一个问题。如果您有很多问题,请创建其他issues
请注意:如果您要反馈一些不重要的错误,请在讨论中发布

FluentLauncher错误报告:

FluentLauncher版本:2.1.6.0
主要大意:出现什么问题了
是游戏崩溃的问题吗:否

主要内容:

每次关闭Fluent Launcher,再次打开就会跳回初始页面,语言设置抽风没法用了,即使是在初始设置完成后设置语言也没用

部分附件:

图片

这个问题严重嘛:5 (我不知道这个bug是不是个例)

[Feature] 为第三方验证的用户档案显示来源信息

请注意:一个 issue 仅报告一个问题。如果您有很多问题,请创建其他 issues
请注意:如果您要反馈一些不重要的问题,请在讨论中发布

您的功能请求是否与问题有关?请描述
目前的档案选择器只会为 Yggdrasil 档案显示一个“Yggdrasil”字样,在多个不同验证服务器的角色名称相同的情况下无法区分验证服务器。

如:我添加了一个 LittleSkin 的档案,又添加了一个自建皮肤站的档案,二者的角色名相同,而选择器内并未提供来源信息。

描述您想要的解决方案
为档案选择器内第三方验证档案添加一个信息以显示验证服务器信息,如“Big__Cake, Yggdrasil(LittleSkin)”。

描述您考虑的备选方案
直接将档案选择器拆分为独立的页面,并添加档案头像,当鼠标指针移动到档案上时,通过 ToolTip 控件显示详细信息,如:

验证模式:Yggdrasil
验证服务器:LittleSkin

附件
image

[Bug] FileVersionInfo.GetVersionInfo 引起的 Java检查 错误 - where命令 错误

FluentLauncher错误报告:

FluentLauncher版本:2.1.5.0
主要大意:无法启动
是游戏崩溃的问题吗:否

主要内容:

System.IO.FileNotFoundException
System.IO.FileNotFoundException: C:\WINDOWS\system32\信息: 用提供的模式无法找到文件。
at System.Diagnostics.FileVersionInfo.GetVersionInfo(String fileName)
at Natsurainko.FluentCore.Extension.Windows.Service.JavaHelper.GetJavaRuntimeInfo(String file)
at Natsurainko.FluentLauncher.Components.FluentCore.GameCore.<>c.b__6_1(String x)
at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](List1 source, Func2 keySelector, Func2 elementSelector, IEqualityComparer1 comparer)
at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable1 source, Func2 keySelector, Func2 elementSelector, IEqualityComparer1 comparer)
at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable1 source, Func2 keySelector, Func2 elementSelector) at Natsurainko.FluentLauncher.Components.FluentCore.GameCore.GetSuitableJava() at Natsurainko.FluentLauncher.Components.FluentCore.GameCore.GetLaunchSetting() at Natsurainko.FluentLauncher.Models.LaunchArrangement..ctor(GameCore core) at Natsurainko.FluentLauncher.Models.LaunchArrangement.StartNew(GameCore core) at Natsurainko.FluentLauncher.ViewModels.Pages.Home.<Launch>b__8_0() at System.Threading.Tasks.Task.InnerInvoke() at System.Threading.Tasks.Task.<>c.<.cctor>b__272_0(Object obj) at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state) --- End of stack trace from previous location --- at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread) --- End of stack trace from previous location --- at CommunityToolkit.Mvvm.Input.AsyncRelayCommand.AwaitAndThrowIfFailed(Task executionTask) at System.Threading.Tasks.Task.<>c.<ThrowAsync>b__128_0(Object state) at Microsoft.UI.Dispatching.DispatcherQueueSynchronizationContext.<>c__DisplayClass2_0.<Post>b__0() System.IO.FileNotFoundException System.IO.FileNotFoundException: C:\WINDOWS\system32\信息: 用提供的模式无法找到文件。 at System.Diagnostics.FileVersionInfo.GetVersionInfo(String fileName) at Natsurainko.FluentCore.Extension.Windows.Service.JavaHelper.GetJavaRuntimeInfo(String file) at Natsurainko.FluentLauncher.Components.FluentCore.GameCore.<>c.<GetSuitableJava>b__6_1(String x) at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](List1 source, Func2 keySelector, Func2 elementSelector, IEqualityComparer1 comparer) at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable1 source, Func2 keySelector, Func2 elementSelector, IEqualityComparer1 comparer) at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable1 source, Func2 keySelector, Func2 elementSelector)
at Natsurainko.FluentLauncher.Components.FluentCore.GameCore.GetSuitableJava()
at Natsurainko.FluentLauncher.Components.FluentCore.GameCore.GetLaunchSetting()
at Natsurainko.FluentLauncher.Models.LaunchArrangement..ctor(GameCore core)
at Natsurainko.FluentLauncher.Models.LaunchArrangement.StartNew(GameCore core)
at Natsurainko.FluentLauncher.ViewModels.Pages.Home.b__8_0()
at System.Threading.Tasks.Task.InnerInvoke()
at System.Threading.Tasks.Task.<>c.<.cctor>b__272_0(Object obj)
at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location ---
at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread)
--- End of stack trace from previous location ---
at CommunityToolkit.Mvvm.Input.AsyncRelayCommand.AwaitAndThrowIfFailed(Task executionTask)
at System.Threading.Tasks.Task.<>c.b__128_0(Object state)
at Microsoft.UI.Dispatching.DispatcherQueueSynchronizationContext.<>c__DisplayClass2_0.b__0()
System.IO.FileNotFoundException
System.IO.FileNotFoundException: C:\WINDOWS\system32\信息: 用提供的模式无法找到文件。
at System.Diagnostics.FileVersionInfo.GetVersionInfo(String fileName)
at Natsurainko.FluentCore.Extension.Windows.Service.JavaHelper.GetJavaRuntimeInfo(String file)
at Natsurainko.FluentLauncher.Components.FluentCore.GameCore.<>c.b__6_1(String x)
at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](List1 source, Func2 keySelector, Func2 elementSelector, IEqualityComparer1 comparer)
at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable1 source, Func2 keySelector, Func2 elementSelector, IEqualityComparer1 comparer)
at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable1 source, Func2 keySelector, Func`2 elementSelector)
at Natsurainko.FluentLauncher.Components.FluentCore.GameCore.GetSuitableJava()
at Natsurainko.FluentLauncher.Components.FluentCore.GameCore.GetLaunchSetting()
at Natsurainko.FluentLauncher.Models.LaunchArrangement..ctor(GameCore core)
at Natsurainko.FluentLauncher.Models.LaunchArrangement.StartNew(GameCore core)
at Natsurainko.FluentLauncher.ViewModels.Pages.Home.b__8_0()
at System.Threading.Tasks.Task.InnerInvoke()
at System.Threading.Tasks.Task.<>c.<.cctor>b__272_0(Object obj)
at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location ---
at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread)
--- End of stack trace from previous location ---
at CommunityToolkit.Mvvm.Input.AsyncRelayCommand.AwaitAndThrowIfFailed(Task executionTask)
at System.Threading.Tasks.Task.<>c.b__128_0(Object state)
at Microsoft.UI.Dispatching.DispatcherQueueSynchronizationContext.<>c__DisplayClass2_0.b__0()

部分附件:

image

这个问题严重嘛:(1-10 分)

[Bug]Microsoft账号登陆与刷新出错

FluentLauncher错误报告:

FluentLauncher版本:2.1.7.0
主要大意:
1.新手引导时登录Microsoft账号出错。
2.在设置中能登录Microsoft账号但刷新账户会出错。
3.在设置中打开“自动刷新账户:(每次启动之前)”会导致启动失败,关闭则能正常进入游戏。
是游戏崩溃的问题吗:否

主要内容:

如下图所示。

部分附件:

QQ截图20230507204824
QQ截图20230507210808
QQ截图20230507214645

这个问题严重嘛:3

奇怪的 UI 界面

这里的 FlowDirection 是刻意改成 RightToLeft 的么

<ComboBox
HorizontalAlignment="Stretch"
FlowDirection="RightToLeft"
ItemsSource="{Binding GameFolders}"
SelectedItem="{Binding CurrentGameFolder, Mode=TwoWay}">
<ComboBox.ItemTemplate>
<DataTemplate x:DataType="x:String">
<TextBlock Text="{Binding}" TextTrimming="CharacterEllipsis" />
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>

似乎所有的ComboBox都是这样,是有什么设计意图么
感觉看上去很不舒服

对于安装包,应用安装器无法验证发布者和签名[Bug]

请注意:一个issue仅报告一个问题。如果您有很多问题,请创建其他issues
请注意:如果您要反馈一些不重要的错误,请在讨论中发布

FluentLauncher错误报告:

FluentLauncher版本:2.1.5
主要大意:于安装包,应用安装器无法验证发布者和签名
游戏崩溃的问题:否

部分附件:

image

这个问题严重:7(1-10 分)

[Feature] 各核心可以设置不同的默认账户

您的功能请求是否与问题有关?请描述

描述您想要的解决方案

各个核心可以配置其默认选中的账户

例如我有一个核心 Hypixel,我希望它默认选中微软账号;而当我启动用于登录第三方服务器的核心时,我希望默认选中某个外置登录账号。

描述您考虑的备选方案

-

附件

-

[Bug] FileVersionInfo.GetVersionInfo 引起的 Java检查 错误

FluentLauncher错误报告:System.IO.FileNotFoundException
System.IO.FileNotFoundException: C:\Windows\system32\信息: 用提供的模式无法找到文件。
at System.Diagnostics.FileVersionInfo.GetVersionInfo(String fileName)
at Natsurainko.FluentCore.Extension.Windows.Service.JavaHelper.GetJavaRuntimeInfo(String file)
at Natsurainko.FluentLauncher.Components.FluentCore.GameCore.<>c.b__6_1(String x)
at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](List1 source, Func2 keySelector, Func2 elementSelector, IEqualityComparer1 comparer)
at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable1 source, Func2 keySelector, Func2 elementSelector, IEqualityComparer1 comparer)
at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable1 source, Func2 keySelector, Func2 elementSelector) at Natsurainko.FluentLauncher.Components.FluentCore.GameCore.GetSuitableJava() at Natsurainko.FluentLauncher.Components.FluentCore.GameCore.GetLaunchSetting() at Natsurainko.FluentLauncher.Models.LaunchArrangement..ctor(GameCore core) at Natsurainko.FluentLauncher.Models.LaunchArrangement.StartNew(GameCore core) at Natsurainko.FluentLauncher.ViewModels.Pages.Home.<Launch>b__8_0() at System.Threading.Tasks.Task.InnerInvoke() at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state) --- End of stack trace from previous location --- at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread) --- End of stack trace from previous location --- at CommunityToolkit.Mvvm.Input.AsyncRelayCommand.AwaitAndThrowIfFailed(Task executionTask) at System.Threading.Tasks.Task.<>c.<ThrowAsync>b__128_0(Object state) at Microsoft.UI.Dispatching.DispatcherQueueSynchronizationContext.<>c__DisplayClass2_0.<Post>b__0() System.IO.FileNotFoundException System.IO.FileNotFoundException: C:\Windows\system32\信息: 用提供的模式无法找到文件。 at System.Diagnostics.FileVersionInfo.GetVersionInfo(String fileName) at Natsurainko.FluentCore.Extension.Windows.Service.JavaHelper.GetJavaRuntimeInfo(String file) at Natsurainko.FluentLauncher.Components.FluentCore.GameCore.<>c.<GetSuitableJava>b__6_1(String x) at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](List1 source, Func2 keySelector, Func2 elementSelector, IEqualityComparer1 comparer) at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable1 source, Func2 keySelector, Func2 elementSelector, IEqualityComparer1 comparer) at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable1 source, Func2 keySelector, Func2 elementSelector)
at Natsurainko.FluentLauncher.Components.FluentCore.GameCore.GetSuitableJava()
at Natsurainko.FluentLauncher.Components.FluentCore.GameCore.GetLaunchSetting()
at Natsurainko.FluentLauncher.Models.LaunchArrangement..ctor(GameCore core)
at Natsurainko.FluentLauncher.Models.LaunchArrangement.StartNew(GameCore core)
at Natsurainko.FluentLauncher.ViewModels.Pages.Home.b__8_0()
at System.Threading.Tasks.Task.InnerInvoke()
at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location ---
at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread)
--- End of stack trace from previous location ---
at CommunityToolkit.Mvvm.Input.AsyncRelayCommand.AwaitAndThrowIfFailed(Task executionTask)
at System.Threading.Tasks.Task.<>c.b__128_0(Object state)
at Microsoft.UI.Dispatching.DispatcherQueueSynchronizationContext.<>c__DisplayClass2_0.b__0()
System.IO.FileNotFoundException
System.IO.FileNotFoundException: C:\Windows\system32\信息: 用提供的模式无法找到文件。
at System.Diagnostics.FileVersionInfo.GetVersionInfo(String fileName)
at Natsurainko.FluentCore.Extension.Windows.Service.JavaHelper.GetJavaRuntimeInfo(String file)
at Natsurainko.FluentLauncher.Components.FluentCore.GameCore.<>c.b__6_1(String x)
at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](List1 source, Func2 keySelector, Func2 elementSelector, IEqualityComparer1 comparer)
at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable1 source, Func2 keySelector, Func2 elementSelector, IEqualityComparer1 comparer)
at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable1 source, Func2 keySelector, Func`2 elementSelector)
at Natsurainko.FluentLauncher.Components.FluentCore.GameCore.GetSuitableJava()
at Natsurainko.FluentLauncher.Components.FluentCore.GameCore.GetLaunchSetting()
at Natsurainko.FluentLauncher.Models.LaunchArrangement..ctor(GameCore core)
at Natsurainko.FluentLauncher.Models.LaunchArrangement.StartNew(GameCore core)
at Natsurainko.FluentLauncher.ViewModels.Pages.Home.b__8_0()
at System.Threading.Tasks.Task.InnerInvoke()
at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location ---
at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread)
--- End of stack trace from previous location ---
at CommunityToolkit.Mvvm.Input.AsyncRelayCommand.AwaitAndThrowIfFailed(Task executionTask)
at System.Threading.Tasks.Task.<>c.b__128_0(Object state)
at Microsoft.UI.Dispatching.DispatcherQueueSynchronizationContext.<>c__DisplayClass2_0.b__0()
FluentLauncher版本:2.1.50

启动模组管理

又是我,发现了个新问题就是修复之后闪退没了就是,版本的模组管理界面没模组了。新建游戏一个往文件夹放入多个模组后也看不见开关。没测试加入多少个模组发生的我放入的100多个模组。

[Infrastructure] 更好的设置系统

您的功能请求是否与问题有关?请描述
目前所有与设置相关的ViewModel都继承自ObservableObject,通过PropertyChanged事件与反射获取需要更新的设置项。这样使得所有与设置访问有关的操作都必须和ViewModel关联,而MVVM设计模式中VM不应该直接处理与平台有关的逻辑。随着设置数量和复杂度的增加,可能在管理设置名称和层级上遇到更多问题。

描述您想要的解决方案
更新:https://github.com/gaviny82/AppSettingsManagement
因为需要使用Source Generator,稍后会发布nuget包

为了使设置的访问与管理更加方便,我设计了以下方案:

  • 建立单例SettingsService,包含所有的设置项与嵌套的子项

    • SettingsService通过ISettingsStorage接口与存储设置内容的数据结构交互。这里可以设置不同的实例以应对Packaged和Unpackaged模式。
    • 需要访问一项设置时,可以直接访问SettingsService中的公开属性
    • 需要更改一项设置时,直接设置SettingsService中的一个属性的值,并自动触发对应这个设置项的事件。
      • 这个事件可以被其它ViewModel监听,并做出响应
    • 每个作为设置项的属性通过SettingItem Attribute标注对应的Key,默认值和对应的数据类型转换(例如:将一个复杂对象序列化为json字符串)
  • 在与设置相关的VM中通过依赖注入SettingsService

    • 在与设置绑定的ObservableProperty上标注[SettingItemBinding],表示绑定到一个指定的设置项
    • 通过Source Generator生成对SettingsService的调用,并监听对应属性被修改的事件

这样也可以允许在其它与UI无关的组件中使用依赖注入,并获取部分设置的内容,并且可以监听某一项设置的改变事件。

计划实现的功能

  • 存储所有原始数据类型
  • 存储自定义类型(支持类型转换,例如:将自定义类型序列化为JSON字符串)
  • 存储任意类型的数组或IList
  • 处理设置项的嵌套
  • SourceGenerator: SettingItem
  • SourceGenerator: SettingItemBinding

API示例

public class SettingsManagerBase : ISettingsManager
{
    public event SettingChangedEventHandler? SettingsChanged;

    public ISettingsStorage Storage { get; init; }

    public SettingsManagerBase(ISettingsStorage storage) { }

    protected T GetValue<T>(string key) where T : notnull

    protected T GetValue<T>(string key, T defaultValue) where T : notnull

    protected void SetValue<T>(string key, T value, ref SettingChangedEventHandler? _event) where T: notnull
}

public class SettingsManagerService : SettingsManagerBase
{
        public SettingsManagerService() : base(new WindowsSettingsStorage()) { }

        #region Username

        [SettingItem(nameof(Username))]
        public string Username // Autogenerate:
        {
            get => GetValue<string>(nameof(Username));
            set => SetValue<string>(nameof(Username), value, ref UsernameChanged);
        }

        // Autogenerate:
        public event SettingChangedEventHandler? UsernameChanged;

        #endregion
}

在ViewModel中的绑定:

public class AccountViewModel : ObservableObject
{
    // Dependency injection
    SettingsManagerService SettingsManager;

    [ObservableProperty]
    [SettingsBinding(nameof(SettingsManager.Username))]
    private string username;
}

一些 UI 问题

一些 UI 方向错了,看起来很别扭
image
image
汉堡包打开后标题栏应该缩回去(这个问题在 WinUI Demo 上也有,可能是微软太懒了
image
image
汉堡包内容部分应该留下标题栏边距,不然看起来很别扭,就像这样,而且标题的颜色有点怪
image
SettingExpander 内部不应该居中,看起来很怪
image
image
ListViewItem 外面不要套别的东西,看起来很怪
image
Java 运行时获取的不全,还差官方启动器的
image
image
应用名忘记改了,看起来很奇怪
image

微软账户无法登录

如图
image
在第一次登陆时邮箱里也收到了“连接到 Microsoft 帐户的新应用”的邮件,应该不是网络的问题,或许,大概?

[Bug] 启动器无法正常打开

请注意:一个issue仅报告一个问题。如果您有很多问题,请创建其他issues
请注意:如果您要反馈一些不重要的错误,请在讨论中发布

FluentLauncher错误报告:

FluentLauncher版本:2.1.5.0
主要大意:启动器无法正常打开
是游戏崩溃的问题吗:否

主要内容:

如标题所言,启动器无法正常启动,而是显示一个“启动器出现错误”的窗口,并提供了日志。

部分附件:

image

System.NullReferenceException
System.NullReferenceException: Object reference not set to an instance of an object.
   at Natsurainko.FluentLauncher.Components.LanguageResources.ApplyLanguage(String language)
   at Natsurainko.FluentLauncher.MainWindow..ctor()
   at Natsurainko.FluentLauncher.App.OnLaunched(LaunchActivatedEventArgs args)
System.NullReferenceException
System.NullReferenceException: Object reference not set to an instance of an object.
   at Natsurainko.FluentLauncher.Components.LanguageResources.ApplyLanguage(String language)
   at Natsurainko.FluentLauncher.MainWindow..ctor()
   at Natsurainko.FluentLauncher.App.OnLaunched(LaunchActivatedEventArgs args)
System.NullReferenceException
System.NullReferenceException: Object reference not set to an instance of an object.
   at Natsurainko.FluentLauncher.Components.LanguageResources.ApplyLanguage(String language)
   at Natsurainko.FluentLauncher.MainWindow..ctor()
   at Natsurainko.FluentLauncher.App.OnLaunched(LaunchActivatedEventArgs args)

这个问题严重嘛:10 分

启动器正版验证有些问题

如题,当我使用启动器的微软登录进入游戏时加入正版服务器,提示登入无效(如图),而使用pcl就没有这个问题。启动器版本2.0.7
O}9{OD{YC11Q%IX8XIE7OBT

[Bug]外置登录时 当拥有多个角色时报错

FluentLauncher错误报告:

FluentLauncher版本:2.1.30
主要大意:外置登录报错
是游戏崩溃的问题吗:否

主要内容:

使用外置登录时报错

部分附件:

2023-02-19.13-49-53.mp4

严重程度:
5

[Feature] 设置 UI 重构计划

功能说明

这个 Issue 用于汇总所有与设置界面 UI 相关的问题,并跟踪开发进度。

CommunityToolkit Labs - Settings 项目中的 SettingsExpanderSettingsCard 还原了 Windows 11 设置页面中的 UI 布局,使用这个包可以更好的构建设置页面并简化代码。

感谢 @bsdayo 的建议

相关问题

Discussion #40

开发计划

由于需要升级到 .NET 7 ,并且对 UI 更改较多,我会先在单独的分支上开发,等确认表现比较稳定后再提交 PR 。

开发进度将会在这里更新。

阶段一:使用新 UI 库重写所有设置页面

  • 升级到 .NET 7 并引入 CommunityToolkit.Labs.WinUI.SettingsControl nuget 包
  • 重构全局启动设置页面
  • 重构账户设置页面
  • 重构下载设置页面
  • 重构关于页面

阶段二:调整细节问题

  • 响应式布局(缩小窗口时的布局)
  • 调整部分选项的位置
  • 重写部分 ComboBox 的模板
    • Java信息模板
      image
    • 账号模板
      image

阶段三:准备合并

  • 语言与本地化
  • 等待 CommunityToolkit.Labs.WinUI.SettingsControls 功能稳定

附件

Animation1
Animation1
Animation1
Animation1
Animation1

[Feature]游戏crash日志分析或跳转

描述您想要的解决方案
当游戏crash时能像pcl那样分析日志给出一个更加直观的崩溃原因

描述您考虑的备选方案
添加一个按钮像打开running log那样打开本次运行的crash report

[Bug] 快速缩放窗口时出现闪烁

FluentLauncher错误报告:

FluentLauncher版本:2.1.5.0
主要大意:快速缩放窗口时出现闪烁
是游戏崩溃的问题吗:否

部分附件:

gif看起来不明显,主要是快速改变窗口大小的时候会闪
Animation1

这个问题严重嘛:(1-10 分)

3

[Bug] FileVersionInfo.GetVersionInfo 引起的 Java检查 错误

请注意:一个issue仅报告一个问题。如果您有很多问题,请创建其他issues
请注意:如果您要反馈一些不重要的错误,请在讨论中发布

FluentLauncher错误报告:

FluentLauncher版本:2.1.50
主要大意:无法启动游戏
是游戏崩溃的问题吗:否

主要内容:

无法启动游戏

部分附件:

System.IO.FileNotFoundException
System.IO.FileNotFoundException: C:\Windows\system32\信息: 用提供的模式无法找到文件。
at System.Diagnostics.FileVersionInfo.GetVersionInfo(String fileName)
at Natsurainko.FluentCore.Extension.Windows.Service.JavaHelper.GetJavaRuntimeInfo(String file)
at Natsurainko.FluentLauncher.Components.FluentCore.GameCore.<>c.b__6_1(String x)
at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](List1 source, Func2 keySelector, Func2 elementSelector, IEqualityComparer1 comparer)
at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable1 source, Func2 keySelector, Func2 elementSelector, IEqualityComparer1 comparer)
at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable1 source, Func2 keySelector, Func2 elementSelector) at Natsurainko.FluentLauncher.Components.FluentCore.GameCore.GetSuitableJava() at Natsurainko.FluentLauncher.Components.FluentCore.GameCore.GetLaunchSetting() at Natsurainko.FluentLauncher.Models.LaunchArrangement..ctor(GameCore core) at Natsurainko.FluentLauncher.Models.LaunchArrangement.StartNew(GameCore core) at Natsurainko.FluentLauncher.ViewModels.Pages.Home.<Launch>b__8_0() at System.Threading.Tasks.Task.InnerInvoke() at System.Threading.Tasks.Task.<>c.<.cctor>b__272_0(Object obj) at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state) --- End of stack trace from previous location --- at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread) --- End of stack trace from previous location --- at CommunityToolkit.Mvvm.Input.AsyncRelayCommand.AwaitAndThrowIfFailed(Task executionTask) at System.Threading.Tasks.Task.<>c.<ThrowAsync>b__128_0(Object state) at Microsoft.UI.Dispatching.DispatcherQueueSynchronizationContext.<>c__DisplayClass2_0.<Post>b__0() System.IO.FileNotFoundException System.IO.FileNotFoundException: C:\Windows\system32\信息: 用提供的模式无法找到文件。 at System.Diagnostics.FileVersionInfo.GetVersionInfo(String fileName) at Natsurainko.FluentCore.Extension.Windows.Service.JavaHelper.GetJavaRuntimeInfo(String file) at Natsurainko.FluentLauncher.Components.FluentCore.GameCore.<>c.<GetSuitableJava>b__6_1(String x) at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](List1 source, Func2 keySelector, Func2 elementSelector, IEqualityComparer1 comparer) at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable1 source, Func2 keySelector, Func2 elementSelector, IEqualityComparer1 comparer) at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable1 source, Func2 keySelector, Func2 elementSelector)
at Natsurainko.FluentLauncher.Components.FluentCore.GameCore.GetSuitableJava()
at Natsurainko.FluentLauncher.Components.FluentCore.GameCore.GetLaunchSetting()
at Natsurainko.FluentLauncher.Models.LaunchArrangement..ctor(GameCore core)
at Natsurainko.FluentLauncher.Models.LaunchArrangement.StartNew(GameCore core)
at Natsurainko.FluentLauncher.ViewModels.Pages.Home.b__8_0()
at System.Threading.Tasks.Task.InnerInvoke()
at System.Threading.Tasks.Task.<>c.<.cctor>b__272_0(Object obj)
at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location ---
at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread)
--- End of stack trace from previous location ---
at CommunityToolkit.Mvvm.Input.AsyncRelayCommand.AwaitAndThrowIfFailed(Task executionTask)
at System.Threading.Tasks.Task.<>c.b__128_0(Object state)
at Microsoft.UI.Dispatching.DispatcherQueueSynchronizationContext.<>c__DisplayClass2_0.b__0()
System.IO.FileNotFoundException
System.IO.FileNotFoundException: C:\Windows\system32\信息: 用提供的模式无法找到文件。
at System.Diagnostics.FileVersionInfo.GetVersionInfo(String fileName)
at Natsurainko.FluentCore.Extension.Windows.Service.JavaHelper.GetJavaRuntimeInfo(String file)
at Natsurainko.FluentLauncher.Components.FluentCore.GameCore.<>c.b__6_1(String x)
at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](List1 source, Func2 keySelector, Func2 elementSelector, IEqualityComparer1 comparer)
at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable1 source, Func2 keySelector, Func2 elementSelector, IEqualityComparer1 comparer)
at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable1 source, Func2 keySelector, Func`2 elementSelector)
at Natsurainko.FluentLauncher.Components.FluentCore.GameCore.GetSuitableJava()
at Natsurainko.FluentLauncher.Components.FluentCore.GameCore.GetLaunchSetting()
at Natsurainko.FluentLauncher.Models.LaunchArrangement..ctor(GameCore core)
at Natsurainko.FluentLauncher.Models.LaunchArrangement.StartNew(GameCore core)
at Natsurainko.FluentLauncher.ViewModels.Pages.Home.b__8_0()
at System.Threading.Tasks.Task.InnerInvoke()
at System.Threading.Tasks.Task.<>c.<.cctor>b__272_0(Object obj)
at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location ---
at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread)
--- End of stack trace from previous location ---
at CommunityToolkit.Mvvm.Input.AsyncRelayCommand.AwaitAndThrowIfFailed(Task executionTask)
at System.Threading.Tasks.Task.<>c.b__128_0(Object state)
at Microsoft.UI.Dispatching.DispatcherQueueSynchronizationContext.<>c__DisplayClass2_0.b__0()

这个问题严重嘛:(10 分)

[Bug] 登录微软账户时 WebView2 自动开启 HDR

FluentLauncher错误报告:

FluentLauncher版本:2.X.XX
主要大意:出现什么问题了
是游戏崩溃的问题吗:否

主要内容:

转自B站评论区
https://www.bilibili.com/video/BV1AM4y1Q7Aw
确实太刺眼了

相关问题:Discussion #48

Unpackage 和新建的 WinUI 项目都没有问题,经测试发现更改 Package ID 后显示正常,怀疑是因为商店分类是游戏导致 Windows 自动开启 HDR

这个问题严重嘛:(1-10 分)

5

[Bug] 在新手指引中登录Microsoft账号出错

FluentLauncher错误报告:

FluentLauncher版本:2.1.6.0
主要大意:在新手指引中登录Microsoft账号出错
是游戏崩溃的问题吗:否

主要内容:

如文章大意所示,截图如下

部分附件:

屏幕截图 2023-03-25 192831

这个问题严重嘛:8

自动识别 游戏版本 和 版本设置 的相关问题

使用启动器添加官方启动器的.minecraft文件夹路径时默认读取的是原版核心,想要MOD的话必须得去手动打开版本隔离选项,虽然不是什么大问题,但总觉得有点影响使用体验
QQ图片20230218102239
QQ图片20230218102250

以及,如果能有给每个客户端设置单独的java版本和内存大小的功能就更好了。

[Feature] 加个跳转jre下载页的按钮吧

官网
https://adoptium.net/ 下载是重定向到github所以可能访问不了或者慢 但有API和镜像
https://bell-sw.com/pages/downloads/ 界面一般 下载是网站直接提供 貌似可以直接下
https://aws.amazon.com/corretto/ 界面不太友好 能直接下 但只有jdk没jre
https://www.azul.com/downloads/?package=jdk 界面一般 下载有cdn
https://sap.github.io/SapMachine/ 界面还行 但下载是github
vscode里就这些 没列出来就是没STS或者要求注册登录

Adoptium官方API
https://api.adoptium.net/
示例: https://api.adoptium.net/v3/assets/latest/19/hotspot?architecture=x64&image_type=jre&os=windows

国内Adoptium镜像
https://mirrors.tuna.tsinghua.edu.cn/Adoptium/
https://mirror.nju.edu.cn/adoptium/
https://mirrors.sustech.edu.cn/Adoptium/
https://mirrors.ustc.edu.cn/adoptium/
可以先从API获取文件名然后拼接出镜像对应的路径 示例: https://jdk-download.gitee.io/

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.