]> granicus.if.org Git - esp-idf/commitdiff
tools: installer: allow changing installation path
authorIvan Grokhotkov <ivan@espressif.com>
Wed, 24 Jul 2019 04:44:30 +0000 (06:44 +0200)
committerIvan Grokhotkov <ivan@espressif.com>
Wed, 24 Jul 2019 04:44:30 +0000 (06:44 +0200)
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 https://github.com/espressif/esp-idf/issues/3806

tools/windows/tool_setup/idf_tool_setup.iss
tools/windows/tool_setup/main.iss.inc

index 7fd8b2f735a739cbe1134433687fa8d30998c503..13869feaecef935202012d0c37e88d0149e0e1b3 100644 (file)
@@ -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]
 
index 857f448796508dd08035785784437f5b996068aa..a023f14d6d11cd096ab4d914814c260ad4cb60a5 100644 (file)
@@ -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
@@ -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)