From 7f9ce5037ec2f008c0313772227d18e446276c2b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=90e=C3=A4Th?= <55578911+DeaTh-G@users.noreply.github.com> Date: Mon, 24 Mar 2025 19:34:37 +0100 Subject: [PATCH] Explicitly set working directory to executable directory on boot (#1430) * Explicitly set working directory to executable directory on boot * change to GetModuleFileNameW instead * switch to pre-existing implementations of getting the executable path * add argument to use current working directory * use error code variant of current_path --- UnleashedRecomp/main.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/UnleashedRecomp/main.cpp b/UnleashedRecomp/main.cpp index 08ddb66c..0279895b 100644 --- a/UnleashedRecomp/main.cpp +++ b/UnleashedRecomp/main.cpp @@ -199,12 +199,14 @@ int main(int argc, char *argv[]) bool forceInstaller = false; bool forceDLCInstaller = false; + bool useDefaultWorkingDirectory = false; const char *sdlVideoDriver = nullptr; for (uint32_t i = 1; i < argc; i++) { forceInstaller = forceInstaller || (strcmp(argv[i], "--install") == 0); forceDLCInstaller = forceDLCInstaller || (strcmp(argv[i], "--install-dlc") == 0); + useDefaultWorkingDirectory = useDefaultWorkingDirectory || (strcmp(argv[i], "--use-cwd") == 0); if (strcmp(argv[i], "--sdl-video-driver") == 0) { @@ -215,6 +217,13 @@ int main(int argc, char *argv[]) } } + if (!useDefaultWorkingDirectory) + { + // Set the current working directory to the executable's path. + std::error_code ec; + std::filesystem::current_path(os::process::GetExecutablePath().parent_path(), ec); + } + Config::Load(); #if defined(_WIN32) && defined(UNLEASHED_RECOMP_D3D12)