|
15 | 15 |
|
16 | 16 | [Code]
|
17 | 17 |
|
18 |
| -function GetErlangPath(Of64Bit: Boolean; PrefVersion: String): String; |
| 18 | +function GetLatestErlangPathOfArch(Of64Bit: Boolean): String; |
19 | 19 | var
|
20 |
| - Versions: TArrayOfString; |
21 |
| - Path: String; |
22 |
| - KeyPath: String; |
| 20 | + ERTSVersions: TArrayOfString; |
| 21 | + SubKeyName: String; |
23 | 22 | begin
|
24 | 23 | Result := '';
|
25 | 24 |
|
26 | 25 | if Of64Bit then begin
|
27 |
| - KeyPath := 'SOFTWARE\Wow6432Node\Ericsson\Erlang'; |
| 26 | + SubKeyName := 'SOFTWARE\Wow6432Node\Ericsson\Erlang'; |
28 | 27 | end else begin
|
29 |
| - KeyPath := 'SOFTWARE\Ericsson\Erlang'; |
| 28 | + SubKeyName := 'SOFTWARE\Ericsson\Erlang'; |
30 | 29 | end;
|
31 | 30 |
|
32 |
| - if RegGetSubkeyNames(HKEY_LOCAL_MACHINE, KeyPath, Versions) then begin |
33 |
| - if RegQueryStringValue(HKEY_LOCAL_MACHINE, KeyPath + '\' + PrefVersion, '', Path) then begin |
34 |
| - Result := Path; |
35 |
| - end else if RegQueryStringValue(HKEY_LOCAL_MACHINE, KeyPath + '\' + Versions[GetArrayLength(Versions) - 1], '', Path) then begin |
36 |
| - Result := Path; |
37 |
| - end; |
38 |
| - end; |
| 31 | + ERTSVersions := FuncRegGetSubkeyNames(HKEY_LOCAL_MACHINE, SubKeyName); |
| 32 | + if GetArrayLength(ERTSVersions) <> 0 then |
| 33 | + Result := FuncRegQueryStringValue(HKEY_LOCAL_MACHINE, SubKeyName + '\' + GetLatestVersion(ERTSVersions)); |
39 | 34 | end;
|
40 | 35 |
|
41 |
| -function GetExistingErlangPath(PrefVersion: String): String; |
| 36 | +function GetLatestErlangPath: String; |
42 | 37 | begin
|
43 | 38 | Result := '';
|
44 | 39 | if IsWin64 then
|
45 |
| - Result := GetErlangPath(True, PrefVersion); |
| 40 | + Result := GetLatestErlangPathOfArch(True); |
46 | 41 | if Result = '' then
|
47 |
| - Result := GetErlangPath(False, PrefVersion); |
| 42 | + Result := GetLatestErlangPathOfArch(False); |
48 | 43 | end;
|
49 | 44 |
|
50 | 45 | function ErlangInPath: Boolean;
|
|
53 | 48 | begin
|
54 | 49 | Result := Exec('erl.exe', '+V', '', SW_HIDE, ewWaitUntilTerminated, _int);
|
55 | 50 | end;
|
56 |
| -
|
57 |
| -procedure AppendErlangPath(Of64Bit: Boolean; PrefVersion: String); |
58 |
| -var |
59 |
| - Path: String; |
60 |
| - RegValue: String; |
61 |
| -begin |
62 |
| - Path := GetErlangPath(Of64Bit, PrefVersion); |
63 |
| - if not (Path = '') then begin |
64 |
| - RegQueryStringValue(HKEY_LOCAL_MACHINE, 'SYSTEM\CurrentControlSet\Control\Session Manager\Environment', 'Path', RegValue); |
65 |
| - if Pos(Path, RegValue) = 0 then begin |
66 |
| - RegWriteStringValue(HKEY_LOCAL_MACHINE, 'SYSTEM\CurrentControlSet\Control\Session Manager\Environment', 'Path', RegValue + ';' + Path + '\bin'); |
67 |
| - end; |
68 |
| - end; |
69 |
| -end; |
0 commit comments