Skip to content

Commit

Permalink
tools: installer: allow changing installation path
Browse files Browse the repository at this point in the history
Installation path can now be changed in a subsequent install,
without uninstalling and logging out.
The default value of the installation path is set to
IDF_TOOLS_PATH environment variable, if it was already set by the
previous installation, or by the user.

Closes #3806
  • Loading branch information
igrr committed Jul 24, 2019
1 parent 1271008 commit 80ad09f
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 1 deletion.
3 changes: 2 additions & 1 deletion tools/windows/tool_setup/idf_tool_setup.iss
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={%USERPROFILE}\.espressif
UsePreviousAppDir=no
DirExistsWarning=no
DefaultGroupName=ESP-IDF
DisableProgramGroupPage=yes
Expand Down Expand Up @@ -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]
Expand Down
22 changes: 22 additions & 0 deletions tools/windows/tool_setup/main.iss.inc
Original file line number Diff line number Diff line change
Expand Up @@ -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. }
<event('InitializeWizard')>
procedure UpdateInstallDir();
var
EnvToolsPath: String;
begin
EnvToolsPath := GetEnv('IDF_TOOLS_PATH');
if EnvToolsPath <> '' then
begin
WizardForm.DirEdit.Text := EnvToolsPath;
end;
end;

<event('NextButtonClick')>
function PreInstallSteps(CurPageID: Integer): Boolean;
var
Expand Down Expand Up @@ -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)
Expand Down

0 comments on commit 80ad09f

Please sign in to comment.