@@ -54,19 +54,92 @@ Filename: "{tmp}\_offlineinstaller\ISCC.exe"; Parameters: "/dElixirVersion=0.14.
54
54
Filename : " {tmp} \_offlineinstaller\Output\elixir-v0.14.1-setup.exe" ; Flags : waituntilterminated ; StatusMsg : " Running Elixir installer..."
55
55
56
56
[Code]
57
+ type
58
+ TElixirVersion = record
59
+ Version: String;
60
+ URL: String;
61
+ Prerelease: Boolean;
62
+ CompatType: Integer;
63
+ end ;
64
+ TArrayOfElixirVersion = array of TElixirVersion;
65
+
57
66
var
58
67
PSelectVerPage: TWizardPage;
59
68
PSelectVerFetchText: TNewStaticText;
60
69
PSelectVerFetchProgress: TNewProgressBar;
70
+ PSelectVerListBox: TNewCheckListBox;
71
+
72
+ ElixirVersions: TArrayOfElixirVersion;
73
+
74
+ function SplitStringRec (Str: String; Delim: String; StrList: TStringList): TStringList;
75
+ var
76
+ StrHead: String;
77
+ StrTail: String;
78
+ DelimPos: Integer;
79
+ begin
80
+ DelimPos := Pos(Delim, Str);
81
+ if (DelimPos = 0 ) then begin
82
+ StrList.Add(Str);
83
+ Result := StrList;
84
+ end else begin
85
+ StrHead := Str;
86
+ StrTail := Str;
87
+
88
+ Delete(StrHead, DelimPos, Length(StrTail));
89
+ Delete(StrTail, 1 , DelimPos);
90
+
91
+ StrList.Add(StrHead);
92
+ Result := SplitStringRec(StrTail, Delim, StrList);
93
+ end ;
94
+ end ;
95
+
96
+ function SplitString (Str: String; Delim: String): TStringList;
97
+ var
98
+ StrList: TStringList;
99
+ begin
100
+ StrList := TStringList.Create;
101
+ Result := SplitStringRec(Str, Delim, StrList)
102
+ end ;
103
+
104
+ procedure GetVersionsFromFile (FileName: String);
105
+ var
106
+ VersionStrings: TArrayOfString;
107
+ NumVersions: Integer;
108
+ i: Integer;
109
+ LineValues: TStringList;
110
+ begin
111
+ LoadStringsFromFile(FileName, VersionStrings);
112
+ NumVersions := GetArrayLength(VersionStrings);
113
+ SetArrayLength(ElixirVersions, NumVersions);
114
+
115
+ for i := 0 to NumVersions - 1 do begin
116
+ LineValues := SplitString(VersionStrings[i], ' ,' );
117
+ ElixirVersions[i].Version := LineValues.Strings[0 ];
118
+ ElixirVersions[i].URL := LineValues.Strings[1 ];
119
+ if LineValues.Strings[2 ] = ' true' then begin
120
+ ElixirVersions[i].Prerelease := True;
121
+ end else begin
122
+ ElixirVersions[i].Prerelease := False;
123
+ end ;
124
+ ElixirVersions[i].CompatType := StrToInt(LineValues.Strings[3 ]);
125
+ end ;
126
+ end ;
61
127
62
128
procedure DoPSelectVer ();
129
+ var
130
+ ElixirVersions: TArrayOfElixirVersion;
63
131
begin
64
132
WizardForm.NextButton.Enabled := False;
65
-
66
133
PSelectVerFetchProgress.Visible := True;
67
- MsgBox(' Fetching version PLACEHOLDER' , mbInformation, MB_OK);
68
- PSelectVerFetchProgress.Visible := False;
69
-
134
+
135
+ if not (FileExists(ExpandConstant(' {tmp}\releases.csv' ))) then begin
136
+ idpDownloadFile(' http://elixir-lang.org/releases.csv' , ExpandConstant(' {tmp}\releases.csv' ));
137
+ GetVersionsFromFile(ExpandConstant(' {tmp}\releases.csv' ));
138
+ end ;
139
+
140
+
141
+
142
+ PSelectVerFetchProgress.Visible := False;
70
143
WizardForm.NextButton.Enabled := True;
71
144
end ;
72
145
0 commit comments