|
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