diff --git a/tools/windows/tool_setup/idf_tool_setup.iss b/tools/windows/tool_setup/idf_tool_setup.iss index 7fd8b2f735..13869feaec 100644 --- a/tools/windows/tool_setup/idf_tool_setup.iss +++ b/tools/windows/tool_setup/idf_tool_setup.iss @@ -35,6 +35,7 @@ AppPublisherURL={#MyAppURL} AppSupportURL={#MyAppURL} AppUpdatesURL={#MyAppURL} DefaultDirName={%USERPROFILE}\.espressif +UsePreviousAppDir=no DirExistsWarning=no DefaultGroupName=ESP-IDF DisableProgramGroupPage=yes @@ -78,7 +79,7 @@ Filename: "{group}\{#IDFCmdExeShortcutFile}"; Flags: postinstall shellexec; Desc [Registry] Root: HKCU; Subkey: "Environment"; ValueType: string; ValueName: "IDF_TOOLS_PATH"; \ - ValueData: "{app}"; Flags: preservestringtype createvalueifdoesntexist; + ValueData: "{app}"; Flags: preservestringtype createvalueifdoesntexist uninsdeletevalue deletevalue; [Code] diff --git a/tools/windows/tool_setup/main.iss.inc b/tools/windows/tool_setup/main.iss.inc index 857f448796..a023f14d6d 100644 --- a/tools/windows/tool_setup/main.iss.inc +++ b/tools/windows/tool_setup/main.iss.inc @@ -17,6 +17,23 @@ begin idpDownloadAfter(wpReady); end; +{ If IDF_TOOLS_PATH is set in the environment, + set the default installation directory accordingly. + Note: here we read IDF_TOOLS_PATH using GetEnv rather than + by getting it from registry, in case the user has set + IDF_TOOLS_PATH as a system environment variable manually. } + +procedure UpdateInstallDir(); +var + EnvToolsPath: String; +begin + EnvToolsPath := GetEnv('IDF_TOOLS_PATH'); + if EnvToolsPath <> '' then + begin + WizardForm.DirEdit.Text := EnvToolsPath; + end; +end; + function PreInstallSteps(CurPageID: Integer): Boolean; var @@ -75,6 +92,11 @@ begin Log('Setting PATH for this process: ' + EnvPath); SetEnvironmentVariable('PATH', EnvPath); + { Set IDF_TOOLS_PATH variable, in case it was set to a different value in the environment. + The installer will set the variable to the new value in the registry, but we also need the + new value to be visible to this process. } + SetEnvironmentVariable('IDF_TOOLS_PATH', ExpandConstant('{app}')) + { Log and clear PYTHONPATH variable, as it might point to libraries of another Python version} PythonLibPath := GetEnv('PYTHONPATH') Log('PYTHONPATH=' + PythonLibPath)