Better way to find exe path

This commit is contained in:
SoftFever 2024-10-08 18:09:03 +08:00
parent 2cc44feb66
commit eb195da546

View file

@ -1908,9 +1908,18 @@ void GUI_App::init_app_config()
// Mac : "~/Library/Application Support/Slic3r"
if (data_dir().empty()) {
// Orca: check if data_dir folder exists in application folder
// use it if it exists
boost::filesystem::path app_data_dir_path = boost::filesystem::current_path() / "data_dir";
// Orca: check if data_dir folder exists in application folder use it if it exists
// Note:wxStandardPaths::Get().GetExecutablePath() return following paths
// Unix: /usr/local/bin/exename
// Windows: "C:\Programs\AppFolder\exename.exe"
// Mac: /Applications/exename.app/Contents/MacOS/exename
// TODO: have no idea what to do with Linux bundles
auto _app_folder = boost::filesystem::path(wxStandardPaths::Get().GetExecutablePath().ToUTF8().data()).parent_path();
#ifdef __APPLE__
// On macOS, the executable is inside the .app bundle.
_app_folder = _app_folder.parent_path().parent_path().parent_path();
#endif
boost::filesystem::path app_data_dir_path = _app_folder / "data_dir";
if (boost::filesystem::exists(app_data_dir_path)) {
set_data_dir(app_data_dir_path.string());
}