@@ -51,8 +51,8 @@ Source: "compiler:SetupLdr.e32"; DestDir: "{tmp}\_offlineinstaller"; Flags: dele
5151
5252[Run]
5353Filename : " powershell.exe" ; Parameters : " -File {tmp} \extract-zip.ps1 {tmp} \Precompiled.zip {tmp} \_offlineinstaller\elixir" ; Flags : waituntilterminated runhidden ; StatusMsg : " Extracting precompiled package..."
54- Filename : " {tmp} \_offlineinstaller\ISCC.exe" ; Parameters : " /dElixirVersion={code:ConstGetTargetReleaseVersion } /dSkipPages /dNoCompression Elixir.iss" ; WorkingDir : " {tmp} \_offlineinstaller" ; Flags : waituntilterminated runhidden ; StatusMsg : " Preparing Elixir installer..."
55- Filename : " {tmp} \_offlineinstaller\Output\elixir-v{code:ConstGetTargetReleaseVersion }-setup.exe" ; Flags : nowait ; StatusMsg : " Running Elixir installer..."
54+ Filename : " {tmp} \_offlineinstaller\ISCC.exe" ; Parameters : " /dElixirVersion={code:ConstGetSelectedReleaseVersion } /dSkipPages /dNoCompression Elixir.iss" ; WorkingDir : " {tmp} \_offlineinstaller" ; Flags : waituntilterminated runhidden ; StatusMsg : " Preparing Elixir installer..."
55+ Filename : " {tmp} \_offlineinstaller\Output\elixir-v{code:ConstGetSelectedReleaseVersion }-setup.exe" ; Flags : nowait ; StatusMsg : " Running Elixir installer..."
5656
5757[Code]
5858type
6161var
6262 PSelRelease: TInputOptionWizardPage;
6363 PSelInstallType: TInputOptionWizardPage;
64-
65- itypeLatestRelease: Integer;
66- itypeLatestPrerelease: Integer;
67- itypeCustom: Integer;
68-
69- TargetRelease: TStrings;
70-
71- i: Integer;
7264 _int: Integer;
7365
7466function SplitStringRec (Str: String; Delim: String; StrList: TStringList): TStringList;
120112
121113function CSVToStringTable (Filename: String): TStringTable;
122114var
123- Rows: TArrayOfString;
115+ Rows: TArrayOfString;
116+ i: Integer;
124117begin
125118 LoadStringsFromFile(Filename, Rows);
126119 SetArrayLength(Result, GetArrayLength(Rows));
@@ -134,6 +127,7 @@ procedure PopulatePSelReleaseListBox(StringTable: TStringTable);
134127var
135128 SelectFirst: Boolean;
136129 ReleaseDesc: String;
130+ i: Integer;
137131begin
138132 PSelRelease.CheckListBox.Items.Clear;
139133 SelectFirst := True;
@@ -151,6 +145,8 @@ begin
151145end ;
152146
153147function GetListBoxSelectedRelease (): TStrings;
148+ var
149+ i: Integer;
154150begin
155151 for i := 0 to PSelRelease.CheckListBox.Items.Count - 1 do begin
156152 if PSelRelease.CheckListBox.Checked[i] then begin
@@ -161,6 +157,8 @@ begin
161157end ;
162158
163159function GetListBoxLatestRelease (Prerelease: Boolean): TStrings;
160+ var
161+ i: Integer;
164162begin
165163 for i := 0 to PSelRelease.CheckListBox.Items.Count - 1 do begin
166164 if Prerelease = IsPrerelease(TStrings(PSelRelease.CheckListBox.ItemObject[i])) then begin
@@ -170,9 +168,25 @@ begin
170168 end ;
171169end ;
172170
173- function ConstGetTargetReleaseVersion (Param: String): String;
171+ function GetSelectedRelease (): TStrings;
172+ var
173+ i: Integer;
174174begin
175- Result := GetVersion(TargetRelease);
175+ for i := 0 to PSelInstallType.CheckListBox.Items.Count - 1 do begin
176+ if PSelInstallType.CheckListBox.Checked[i] then begin
177+ if not (PSelInstallType.CheckListBox.ItemObject[i] = nil ) then begin
178+ Result := TStrings(PSelInstallType.CheckListBox.ItemObject[i]);
179+ end else begin
180+ Result := GetListBoxSelectedRelease();
181+ end ;
182+ break;
183+ end ;
184+ end ;
185+ end ;
186+
187+ function ConstGetSelectedReleaseVersion (Param: String): String;
188+ begin
189+ Result := GetVersion(GetSelectedRelease());
176190end ;
177191
178192function ErlangIsInstalled : Boolean;
@@ -183,23 +197,15 @@ end;
183197procedure CurPageChanged (CurPageID: Integer);
184198begin
185199 if CurPageID = wpPreparing then begin
186- if PSelInstallType.SelectedValueIndex = itypeLatestRelease then begin
187- TargetRelease := GetListBoxLatestRelease(False);
188- end else if (not (itypeLatestPrerelease = -1 )) and (PSelInstallType.SelectedValueIndex = itypeLatestPrerelease) then begin
189- TargetRelease := GetListBoxLatestRelease(True);
190- end else begin
191- TargetRelease := GetListBoxSelectedRelease();
192- end ;
193-
194- idpAddFile(GetURL(TargetRelease), ExpandConstant(' {tmp}\Precompiled.zip' ));
200+ idpAddFile(GetURL(GetSelectedRelease()), ExpandConstant(' {tmp}\Precompiled.zip' ));
195201 idpDownloadAfter(wpPreparing);
196202 end ;
197203end ;
198204
199205function ShouldSkipPage (PageID: Integer): Boolean;
200206begin
201207 if PageID = PSelRelease.ID then begin
202- Result := not (PSelInstallType.SelectedValueIndex = itypeCustom );
208+ Result := (PSelInstallType.CheckListBox.ItemObject[PSelInstallType. SelectedValueIndex] = nil );
203209 end else begin
204210 Result := False;
205211 end ;
@@ -217,6 +223,8 @@ begin
217223end ;
218224
219225procedure InitializeWizard ();
226+ var
227+ LatestRelease, LatestPrerelease: TStrings;
220228begin
221229 idpSetOption(' DetailsButton' , ' 0' );
222230
@@ -225,15 +233,14 @@ begin
225233 PSelRelease := CreateInputOptionPage(PSelInstallType.ID, ' Select Elixir release' , ' Setup will download and install the Elixir release you select.' , ' All releases available to install are listed below, from newest to oldest.' , True, True);
226234
227235 PopulatePSelReleaseListBox(CSVToStringTable(ExpandConstant(' {tmp}\releases.csv' )));
228-
229- itypeLatestRelease := PSelInstallType.Add(' Install the latest stable release (v' + GetVersion(GetListBoxLatestRelease(False)) + ' )' );
230- PSelInstallType.SelectedValueIndex := itypeLatestRelease;
231- if not (GetListBoxLatestRelease(True) = nil ) then begin
232- itypeLatestPrerelease := PSelInstallType.Add(' Install the latest prerelease (v' + GetVersion(GetListBoxLatestRelease(True)) + ' )' );
233- end else begin
234- itypeLatestPrerelease := -1 ;
236+ LatestRelease := GetListBoxLatestRelease(False);
237+ LatestPrerelease := GetListBoxLatestRelease(True);
238+
239+ PSelInstallType.CheckListBox.AddRadioButton(' Install the latest stable release (v' + GetVersion(LatestRelease) + ' )' , ' ' , 0 , True, True, LatestRelease);
240+ if not (LatestPrerelease = nil ) then begin
241+ PSelInstallType.CheckListBox.AddRadioButton(' Install the latest prerelease (v' + GetVersion(LatestPrerelease) + ' )' , ' ' , 0 , False, True, LatestPrerelease);
235242 end ;
236- itypeCustom := PSelInstallType.Add (' Select another release to install' );
243+ PSelInstallType.CheckListBox.AddRadioButton (' Select another release to install' , ' ' , 0 , False, True, nil );
237244end ;
238245
239246function InitializeSetup (): Boolean;
0 commit comments