From 70d4bb1db88f082cdbfdbf3471a54465f535789b Mon Sep 17 00:00:00 2001 From: Ivan Pashchenko Date: Thu, 28 Mar 2024 13:45:12 +0100 Subject: [PATCH] IJPL-442: ensure windows app data env vars are set consistent with the old launcher behaviour GitOrigin-RevId: 92fd4fb62e6687979b979037eca48ab56b2d2611 --- native/XPlatLauncher/src/lib.rs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/native/XPlatLauncher/src/lib.rs b/native/XPlatLauncher/src/lib.rs index 7b00cc113728..3a659d385268 100644 --- a/native/XPlatLauncher/src/lib.rs +++ b/native/XPlatLauncher/src/lib.rs @@ -110,6 +110,8 @@ fn main_impl(exe_path: PathBuf, remote_dev: bool, debug_mode: bool) -> Result<() } debug!("Current directory: {:?}", env::current_dir()); + ensure_env_vars_set()?; + debug!("** Preparing launch configuration"); let configuration = get_configuration(remote_dev, &exe_path.strip_ns_prefix()?).context("Cannot detect a launch configuration")?; @@ -130,6 +132,21 @@ fn main_impl(exe_path: PathBuf, remote_dev: bool, debug_mode: bool) -> Result<() Ok(()) } +#[cfg(target_os = "windows")] +fn ensure_env_vars_set() -> Result<()> { + let app_data = get_known_folder_path(&Shell::FOLDERID_RoamingAppData, "FOLDERID_RoamingAppData")?; + env::set_var("APPDATA", &app_data.strip_ns_prefix()?.to_string_checked()?); + + let local_app_data = get_known_folder_path(&Shell::FOLDERID_LocalAppData, "FOLDERID_LocalAppData")?; + env::set_var("LOCALAPPDATA", &local_app_data.strip_ns_prefix()?.to_string_checked()?); + Ok(()) +} + +#[cfg(not(target_os = "windows"))] +fn ensure_env_vars_set() -> Result<()> { + Ok(()) +} + #[cfg(target_os = "macos")] fn restore_working_directory() -> Result<()> { let (cwd_res, pwd_var) = (env::current_dir(), env::var("PWD"));