UICommon: Don't check the registry key or use the old user directory path on Windows builds for Steam

This commit is contained in:
OatmealDome 2023-01-17 15:03:11 -05:00
parent 7240290382
commit 234de8af09
1 changed files with 31 additions and 7 deletions

View File

@ -295,7 +295,22 @@ void SetUserDirectory(std::string custom_path)
// -> Use AppData\Roaming\Dolphin Emulator as the User directory path // -> Use AppData\Roaming\Dolphin Emulator as the User directory path
// 6. Default // 6. Default
// -> Use GetExeDirectory()\User // -> Use GetExeDirectory()\User
//
// On Steam builds, we take a simplified approach:
// 1. GetExeDirectory()\portable.txt exists
// -> Use GetExeDirectory()\User
// 2. AppData\Roaming exists
// -> Use AppData\Roaming\Dolphin Emulator (Steam) as the User directory path
// 3. Default
// -> Use GetExeDirectory()\User
// Get AppData path in case we need it.
// TODO: Maybe use WIL when it's available?
PWSTR appdata = nullptr;
bool appdata_found =
SUCCEEDED(SHGetKnownFolderPath(FOLDERID_RoamingAppData, KF_FLAG_DEFAULT, nullptr, &appdata));
#ifndef STEAM
// Check our registry keys // Check our registry keys
// TODO: Maybe use WIL when it's available? // TODO: Maybe use WIL when it's available?
HKEY hkey; HKEY hkey;
@ -325,12 +340,6 @@ void SetUserDirectory(std::string custom_path)
local = local != 0 || File::Exists(File::GetExeDirectory() + DIR_SEP "portable.txt"); local = local != 0 || File::Exists(File::GetExeDirectory() + DIR_SEP "portable.txt");
// Get AppData path in case we need it.
// TODO: Maybe use WIL when it's available?
PWSTR appdata = nullptr;
bool appdata_found =
SUCCEEDED(SHGetKnownFolderPath(FOLDERID_RoamingAppData, KF_FLAG_DEFAULT, nullptr, &appdata));
// Attempt to check if the old User directory exists in My Documents. // Attempt to check if the old User directory exists in My Documents.
// TODO: Maybe use WIL when it's available? // TODO: Maybe use WIL when it's available?
PWSTR documents = nullptr; PWSTR documents = nullptr;
@ -373,8 +382,23 @@ void SetUserDirectory(std::string custom_path)
user_path = File::GetExeDirectory() + DIR_SEP PORTABLE_USER_DIR DIR_SEP; user_path = File::GetExeDirectory() + DIR_SEP PORTABLE_USER_DIR DIR_SEP;
} }
CoTaskMemFree(appdata);
CoTaskMemFree(documents); CoTaskMemFree(documents);
#else // ifndef STEAM
if (File::Exists(File::GetExeDirectory() + DIR_SEP "portable.txt")) // Case 1
{
user_path = File::GetExeDirectory() + DIR_SEP PORTABLE_USER_DIR DIR_SEP;
}
else if (appdata_found) // Case 2
{
user_path = TStrToUTF8(appdata) + DIR_SEP NORMAL_USER_DIR DIR_SEP;
}
else // Case 3
{
user_path = File::GetExeDirectory() + DIR_SEP PORTABLE_USER_DIR DIR_SEP;
}
#endif
CoTaskMemFree(appdata);
#else #else
if (File::IsDirectory(ROOT_DIR DIR_SEP EMBEDDED_USER_DIR)) if (File::IsDirectory(ROOT_DIR DIR_SEP EMBEDDED_USER_DIR))
{ {