@@ -63,8 +63,8 @@ Source: "compiler:Setup.e32"; DestDir: "{tmp}"; Flags: deleteafterinstall
6363Source : " compiler:SetupLdr.e32"  ; DestDir : " {tmp} "  ; Flags : deleteafterinstall 
6464
6565[Run] 
66- Filename : " {tmp} \{#OTP_32_EXE}"  ; Flags : hidewizard ; StatusMsg : " Installing {#OTP_32_NAME}..."  ; Tasks: erlang\32 
67- Filename : " {tmp} \{#OTP_64_EXE}"  ; Flags : hidewizard ; StatusMsg : " Installing {#OTP_64_NAME}..."  ; Tasks: erlang\64 
66+ Filename : " {tmp} \{#OTP_32_EXE}"  ; Flags : hidewizard ; StatusMsg : " Installing {#OTP_32_NAME}..."  ; Tasks: erlang\32 ;  AfterInstall : AppendErlangPathIfTaskSelected(False) 
67+ Filename : " {tmp} \{#OTP_64_EXE}"  ; Flags : hidewizard ; StatusMsg : " Installing {#OTP_64_NAME}..."  ; Tasks: erlang\64 ;  AfterInstall : AppendErlangPathIfTaskSelected(True) 
6868Filename : " {tmp} \7za.exe"  ; Parameters : " x -oelixir Precompiled.zip"  ; WorkingDir : " {tmp} "  ; StatusMsg : " Extracting Precompiled.zip archive..." 
6969Filename : " {tmp} \ISCC.exe"  ; Parameters : " /dElixirVersion={code:ConstGetSelectedReleaseVersion} /dSkipWelcome /dNoCompression Elixir.iss"  ; WorkingDir : " {tmp} "  ; StatusMsg : " Compiling Elixir installer..." 
7070Filename : " {tmp} \Output\elixir-v{code:ConstGetSelectedReleaseVersion}-setup.exe"  ; Flags : nowait ; StatusMsg : " Starting Elixir installer..." 
@@ -210,29 +210,29 @@ begin
210210  Result := GetVersion(GetSelectedRelease()); 
211211end ;
212212
213- function  GetErlangPath : String;
213+ function  GetErlangPath (Of64Bit: Boolean) : String;
214214var 
215215  Versions: TArrayOfString; 
216216  Path: String; 
217217begin 
218218  Result := ' '  ; 
219219
220-   if  RegGetSubkeyNames(HKEY_LOCAL_MACHINE, ' SOFTWARE\Ericsson\Erlang'  , Versions) then  begin  
221-     if  RegQueryStringValue(HKEY_LOCAL_MACHINE, ' SOFTWARE\Ericsson\Erlang\'   + ' {#OTP_ERTS_VERSION}'  , ' '  , Path) then  begin  
222-       Result := Path; 
223-     end  else  if  RegQueryStringValue(HKEY_LOCAL_MACHINE, ' SOFTWARE\Ericsson\Erlang\'   + Versions[GetArrayLength(Versions) - 1 ], ' '  , Path) then  begin  
224-       Result := Path; 
225-     end ; 
226-   end ; 
227- 
228-   if  IsWin64 then  begin  
220+   if  Of64Bit then  begin  
229221    if  RegGetSubkeyNames(HKEY_LOCAL_MACHINE, ' SOFTWARE\Wow6432Node\Ericsson\Erlang'  , Versions) then  begin  
230222      if  RegQueryStringValue(HKEY_LOCAL_MACHINE, ' SOFTWARE\Wow6432Node\Ericsson\Erlang\'   + ' {#OTP_ERTS_VERSION}'  , ' '  , Path) then  begin  
231223        Result := Path; 
232224      end  else  if  RegQueryStringValue(HKEY_LOCAL_MACHINE, ' SOFTWARE\Wow6432Node\Ericsson\Erlang\'   + Versions[GetArrayLength(Versions) - 1 ], ' '  , Path) then  begin  
233225        Result := Path; 
234226      end ; 
235227    end ; 
228+   end  else  begin  
229+     if  RegGetSubkeyNames(HKEY_LOCAL_MACHINE, ' SOFTWARE\Ericsson\Erlang'  , Versions) then  begin  
230+       if  RegQueryStringValue(HKEY_LOCAL_MACHINE, ' SOFTWARE\Ericsson\Erlang\'   + ' {#OTP_ERTS_VERSION}'  , ' '  , Path) then  begin  
231+         Result := Path; 
232+       end  else  if  RegQueryStringValue(HKEY_LOCAL_MACHINE, ' SOFTWARE\Ericsson\Erlang\'   + Versions[GetArrayLength(Versions) - 1 ], ' '  , Path) then  begin  
233+         Result := Path; 
234+       end ; 
235+     end ; 
236236  end ; 
237237end ;
238238
@@ -243,14 +243,30 @@ end;
243243
244244function  CheckToInstallErlang : Boolean;
245245begin 
246-   Result := (GetErlangPath = ' '  ); 
246+   Result := (GetErlangPath(False) =  ' ' )  or  (GetErlangPath(True)  = ' '  ); 
247247end ;
248248
249249function  CheckToAddErlangPath : Boolean;
250250begin 
251251  Result := not  ErlangInPath; 
252252end ;
253253
254+ procedure  AppendErlangPathIfTaskSelected (Of64Bit: Boolean);
255+ var 
256+   Path: String; 
257+   RegValue: String; 
258+ begin 
259+   if  IsTaskSelected(' erlpath'  ) then  begin  
260+     Path := GetErlangPath(Of64Bit); 
261+     if  not  (Path = ' '  ) then  begin  
262+       RegQueryStringValue(HKEY_LOCAL_MACHINE, ' SYSTEM\CurrentControlSet\Control\Session Manager\Environment'  , ' Path'  , RegValue); 
263+       if  Pos(Path, RegValue) = 0  then  begin  
264+         RegWriteStringValue(HKEY_LOCAL_MACHINE, ' SYSTEM\CurrentControlSet\Control\Session Manager\Environment'  , ' Path'  , RegValue + ' ;'   + Path + ' \bin'  ); 
265+       end ; 
266+     end ; 
267+   end ; 
268+ end ;
269+ 
254270procedure  CurPageChanged (CurPageID: Integer);
255271begin 
256272  if  CurPageID = wpPreparing then  begin  
0 commit comments