@@ -54,19 +54,92 @@ Filename: "{tmp}\_offlineinstaller\ISCC.exe"; Parameters: "/dElixirVersion=0.14.
5454Filename : " {tmp} \_offlineinstaller\Output\elixir-v0.14.1-setup.exe" ; Flags : waituntilterminated ; StatusMsg : " Running Elixir installer..."
5555
5656[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+
5766var
5867 PSelectVerPage: TWizardPage;
5968 PSelectVerFetchText: TNewStaticText;
6069 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 ;
61127
62128procedure DoPSelectVer ();
129+ var
130+ ElixirVersions: TArrayOfElixirVersion;
63131begin
64132 WizardForm.NextButton.Enabled := False;
65-
66133 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;
70143 WizardForm.NextButton.Enabled := True;
71144end ;
72145
0 commit comments