diff --git a/src/Ryujinx.Common/Configuration/AppDataManager.cs b/src/Ryujinx.Common/Configuration/AppDataManager.cs index cb26be2d5..d1c5bb60f 100644 --- a/src/Ryujinx.Common/Configuration/AppDataManager.cs +++ b/src/Ryujinx.Common/Configuration/AppDataManager.cs @@ -31,6 +31,11 @@ namespace Ryujinx.Common.Configuration public static string KeysDirPath { get; private set; } public static string KeysDirPathUser { get; } + public static string GetKeysDir() => + Mode is LaunchMode.UserProfile && Directory.Exists(KeysDirPathUser) + ? KeysDirPathUser + : KeysDirPath; + public static string LogsDirPath { get; private set; } public const string DefaultNandDir = "bis"; diff --git a/src/Ryujinx.HLE/FileSystem/VirtualFileSystem.cs b/src/Ryujinx.HLE/FileSystem/VirtualFileSystem.cs index 8ed8b2a18..c3508eddc 100644 --- a/src/Ryujinx.HLE/FileSystem/VirtualFileSystem.cs +++ b/src/Ryujinx.HLE/FileSystem/VirtualFileSystem.cs @@ -230,14 +230,19 @@ namespace Ryujinx.HLE.FileSystem string consoleKeyFile = null; string devKeyFile = null; - if (AppDataManager.Mode == AppDataManager.LaunchMode.UserProfile) - { - LoadSetAtPath(AppDataManager.KeysDirPathUser); - } - - LoadSetAtPath(AppDataManager.KeysDirPath); + LoadSetAtPath(AppDataManager.GetKeysDir()); HasKeySet = (prodKeyFile != null && titleKeyFile != null) || prodKeyFile != null; + + + ExternalKeyReader.ReadKeyFile( + KeySet, + prodKeyFile, + devKeyFile, + titleKeyFile, + consoleKeyFile); + + return; void LoadSetAtPath(string basePath) { @@ -266,13 +271,6 @@ namespace Ryujinx.HLE.FileSystem devKeyFile = localDevKeyFile; } } - - ExternalKeyReader.ReadKeyFile( - KeySet, - prodKeyFile, - devKeyFile, - titleKeyFile, - consoleKeyFile); } public void ImportTickets(IFileSystem fs) diff --git a/src/Ryujinx.HLE/HOS/Services/Nfc/AmiiboDecryption/AmiiboBinReader.cs b/src/Ryujinx.HLE/HOS/Services/Nfc/AmiiboDecryption/AmiiboBinReader.cs index 0e11493d5..6ba11d5f9 100644 --- a/src/Ryujinx.HLE/HOS/Services/Nfc/AmiiboDecryption/AmiiboBinReader.cs +++ b/src/Ryujinx.HLE/HOS/Services/Nfc/AmiiboDecryption/AmiiboBinReader.cs @@ -334,7 +334,7 @@ namespace Ryujinx.HLE.HOS.Services.Nfc.AmiiboDecryption private static string GetKeyRetailBinPath() { - return Path.Combine(AppDataManager.KeysDirPath, "key_retail.bin"); + return Path.Combine(AppDataManager.GetKeysDir(), "key_retail.bin"); } public static bool HasAmiiboKeyFile => File.Exists(GetKeyRetailBinPath()); diff --git a/src/Ryujinx/Headless/HeadlessRyujinx.cs b/src/Ryujinx/Headless/HeadlessRyujinx.cs index bba505dbb..9a28fd8a3 100644 --- a/src/Ryujinx/Headless/HeadlessRyujinx.cs +++ b/src/Ryujinx/Headless/HeadlessRyujinx.cs @@ -156,12 +156,9 @@ namespace Ryujinx.Headless option.UserProfile = profile.Name; // Check if keys exists. - if (!File.Exists(Path.Combine(AppDataManager.KeysDirPath, "prod.keys"))) + if (!File.Exists(Path.Combine(AppDataManager.GetKeysDir(), "prod.keys"))) { - if (!(AppDataManager.Mode == AppDataManager.LaunchMode.UserProfile && File.Exists(Path.Combine(AppDataManager.KeysDirPathUser, "prod.keys")))) - { - Logger.Error?.Print(LogClass.Application, "Keys not found"); - } + Logger.Error?.Print(LogClass.Application, "Keys not found"); } ReloadConfig(); diff --git a/src/Ryujinx/Program.cs b/src/Ryujinx/Program.cs index 1bae64d20..dcf9ebf6d 100644 --- a/src/Ryujinx/Program.cs +++ b/src/Ryujinx/Program.cs @@ -189,12 +189,9 @@ namespace Ryujinx.Ava DriverUtilities.InitDriverConfig(ConfigurationState.Instance.Graphics.BackendThreading == BackendThreading.Off); // Check if keys exists. - if (!File.Exists(Path.Combine(AppDataManager.KeysDirPath, "prod.keys"))) + if (!File.Exists(Path.Combine(AppDataManager.GetKeysDir(), "prod.keys"))) { - if (!(AppDataManager.Mode == AppDataManager.LaunchMode.UserProfile && File.Exists(Path.Combine(AppDataManager.KeysDirPathUser, "prod.keys")))) - { - MainWindow.ShowKeyErrorOnLoad = true; - } + MainWindow.ShowKeyErrorOnLoad = true; } if (CommandLineState.LaunchPathArg != null) diff --git a/src/Ryujinx/UI/SetupWizard/Pages/Keys/SetupKeysPageContext.cs b/src/Ryujinx/UI/SetupWizard/Pages/Keys/SetupKeysPageContext.cs index 11203d8bc..1c37f4644 100644 --- a/src/Ryujinx/UI/SetupWizard/Pages/Keys/SetupKeysPageContext.cs +++ b/src/Ryujinx/UI/SetupWizard/Pages/Keys/SetupKeysPageContext.cs @@ -83,16 +83,9 @@ namespace Ryujinx.Ava.UI.SetupWizard.Pages try { - string systemDirectory = AppDataManager.KeysDirPath; - if (AppDataManager.Mode == AppDataManager.LaunchMode.UserProfile && - Directory.Exists(AppDataManager.KeysDirPathUser)) - { - systemDirectory = AppDataManager.KeysDirPathUser; - } - Logger.Info?.Print(LogClass.Application, $"Installing keys from {KeysFolderPath}"); - ContentManager.InstallKeys(KeysFolderPath, systemDirectory); + ContentManager.InstallKeys(KeysFolderPath, AppDataManager.GetKeysDir()); NotificationManager.Information( title: LocaleManager.Instance[LocaleKeys.RyujinxInfo], diff --git a/src/Ryujinx/UI/SetupWizard/RyujinxSetupWizard.cs b/src/Ryujinx/UI/SetupWizard/RyujinxSetupWizard.cs index 18209f0ac..c2513bffa 100644 --- a/src/Ryujinx/UI/SetupWizard/RyujinxSetupWizard.cs +++ b/src/Ryujinx/UI/SetupWizard/RyujinxSetupWizard.cs @@ -1,4 +1,5 @@ using Avalonia; +using Avalonia.Controls; using Avalonia.Controls.Notifications; using Avalonia.Media.Imaging; using Avalonia.Styling; @@ -22,6 +23,12 @@ namespace Ryujinx.Ava.UI.SetupWizard private readonly RyujinxSetupWizardWindow _window; private readonly bool _overwrite; + public void SetWindowTitle(string titleText) + { + _window.Title = titleText; + ToolTip.SetTip(_window.RyuLogo, titleText); + } + public RyujinxSetupWizard(RyujinxSetupWizardWindow wizardWindow, bool overwriteMode) { _window = wizardWindow; @@ -32,6 +39,10 @@ namespace Ryujinx.Ava.UI.SetupWizard UpdateLogoTheme(ConfigurationState.Instance.UI.BaseStyle); RyujinxApp.ThemeChanged += Ryujinx_ThemeChanged; } + else + { + UpdateLogoTheme("Dark"); + } } private SetupWizardPage FirstPage() => new(_window.WizardPresenter, this, isFirstPage: true); diff --git a/src/Ryujinx/UI/SetupWizard/RyujinxSetupWizardWindow.axaml b/src/Ryujinx/UI/SetupWizard/RyujinxSetupWizardWindow.axaml index d04c6f391..ae133d9d7 100644 --- a/src/Ryujinx/UI/SetupWizard/RyujinxSetupWizardWindow.axaml +++ b/src/Ryujinx/UI/SetupWizard/RyujinxSetupWizardWindow.axaml @@ -2,18 +2,16 @@ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" - xmlns:ext="clr-namespace:Ryujinx.Ava.Common.Markup" xmlns:windows="clr-namespace:Ryujinx.Ava.UI.Windows" xmlns:setupWizard="clr-namespace:Ryujinx.Ava.UI.SetupWizard" xmlns:controls="clr-namespace:Ryujinx.Ava.UI.Controls" CanResize="False" mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450" x:Class="Ryujinx.Ava.UI.SetupWizard.RyujinxSetupWizardWindow" - x:DataType="setupWizard:RyujinxSetupWizard" - Title="{ext:Locale SetupWizardFirstPageTitle}"> + x:DataType="setupWizard:RyujinxSetupWizard"> - + diff --git a/src/Ryujinx/UI/SetupWizard/SetupWizardPage.cs b/src/Ryujinx/UI/SetupWizard/SetupWizardPage.cs index bdea37a01..cdd2955b0 100644 --- a/src/Ryujinx/UI/SetupWizard/SetupWizardPage.cs +++ b/src/Ryujinx/UI/SetupWizard/SetupWizardPage.cs @@ -50,6 +50,7 @@ namespace Ryujinx.Ava.UI.SetupWizard public async ValueTask Show() { contentPresenter.Content = new SetupWizardPageView { ViewModel = this }; + ownerWizard.SetWindowTitle(Title); try { diff --git a/src/Ryujinx/UI/ViewModels/MainWindowViewModel.cs b/src/Ryujinx/UI/ViewModels/MainWindowViewModel.cs index 5ca8efaa7..64d4c45cb 100644 --- a/src/Ryujinx/UI/ViewModels/MainWindowViewModel.cs +++ b/src/Ryujinx/UI/ViewModels/MainWindowViewModel.cs @@ -1018,12 +1018,7 @@ namespace Ryujinx.Ava.UI.ViewModels { try { - string systemDirectory = AppDataManager.KeysDirPath; - if (AppDataManager.Mode == AppDataManager.LaunchMode.UserProfile && - Directory.Exists(AppDataManager.KeysDirPathUser)) - { - systemDirectory = AppDataManager.KeysDirPathUser; - } + string systemDirectory = AppDataManager.GetKeysDir(); string dialogTitle = LocaleManager.Instance.UpdateAndGetDynamicValue(LocaleKeys.DialogKeysInstallerKeysInstallTitle);