mirror of
https://git.suyu.dev/suyu/suyu.git
synced 2024-11-27 01:02:48 +01:00
Win32 move default user folder location to AppData
This commit is contained in:
parent
fb13bfe693
commit
29bb82cb8e
2 changed files with 24 additions and 0 deletions
|
@ -26,6 +26,9 @@
|
|||
#define stat _stat64
|
||||
#define fstat _fstat64
|
||||
#define fileno _fileno
|
||||
// Windows version, at least Vista is required to obtain AppData Path
|
||||
#define WINVER 0x0600
|
||||
#define _WIN32_WINNT 0x0600
|
||||
#else
|
||||
#ifdef __APPLE__
|
||||
#include <sys/param.h>
|
||||
|
@ -594,6 +597,21 @@ std::string& GetExeDirectory() {
|
|||
}
|
||||
return exe_path;
|
||||
}
|
||||
|
||||
std::string& AppDataLocalDirectory() {
|
||||
// Windows Vista or later only
|
||||
static std::string local_path;
|
||||
if (local_path.empty()) {
|
||||
PWSTR pw_local_path = 0;
|
||||
wchar_t* wchar_local_path;
|
||||
SHGetKnownFolderPath(FOLDERID_LocalAppData, 0, NULL, &pw_local_path);
|
||||
wchar_local_path = pw_local_path;
|
||||
local_path = Common::UTF16ToUTF8(wchar_local_path);
|
||||
// Freeing memory
|
||||
CoTaskMemFree(static_cast<void*>(pw_local_path));
|
||||
}
|
||||
return local_path;
|
||||
}
|
||||
#else
|
||||
/**
|
||||
* @return The user’s home directory on POSIX systems
|
||||
|
@ -671,6 +689,11 @@ const std::string& GetUserPath(const unsigned int DirIDX, const std::string& new
|
|||
if (paths[D_USER_IDX].empty()) {
|
||||
#ifdef _WIN32
|
||||
paths[D_USER_IDX] = GetExeDirectory() + DIR_SEP USERDATA_DIR DIR_SEP;
|
||||
if (!FileUtil::IsDirectory(paths[D_USER_IDX])) {
|
||||
paths[D_USER_IDX] =
|
||||
AppDataLocalDirectory() + DIR_SEP + EMU_DATA_DIR DIR_SEP USERDATA_DIR DIR_SEP;
|
||||
}
|
||||
|
||||
paths[D_CONFIG_IDX] = paths[D_USER_IDX] + CONFIG_DIR DIR_SEP;
|
||||
paths[D_CACHE_IDX] = paths[D_USER_IDX] + CACHE_DIR DIR_SEP;
|
||||
#else
|
||||
|
|
|
@ -154,6 +154,7 @@ std::string GetBundleDirectory();
|
|||
|
||||
#ifdef _WIN32
|
||||
std::string& GetExeDirectory();
|
||||
std::string& AppDataLocalDirectory();
|
||||
#endif
|
||||
|
||||
size_t WriteStringToFile(bool text_file, const std::string& str, const char* filename);
|
||||
|
|
Loading…
Reference in a new issue