@@ -51,8 +51,8 @@ Source: "compiler:SetupLdr.e32"; DestDir: "{tmp}\_offlineinstaller"; Flags: dele
51
51
52
52
[Run]
53
53
Filename : " 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..."
56
56
57
57
[Code]
58
58
type
61
61
var
62
62
PSelRelease: TInputOptionWizardPage;
63
63
PSelInstallType: TInputOptionWizardPage;
64
-
65
- itypeLatestRelease: Integer;
66
- itypeLatestPrerelease: Integer;
67
- itypeCustom: Integer;
68
-
69
- TargetRelease: TStrings;
70
-
71
- i: Integer;
72
64
_int: Integer;
73
65
74
66
function SplitStringRec (Str: String; Delim: String; StrList: TStringList): TStringList;
120
112
121
113
function CSVToStringTable (Filename: String): TStringTable;
122
114
var
123
- Rows: TArrayOfString;
115
+ Rows: TArrayOfString;
116
+ i: Integer;
124
117
begin
125
118
LoadStringsFromFile(Filename, Rows);
126
119
SetArrayLength(Result, GetArrayLength(Rows));
@@ -134,6 +127,7 @@ procedure PopulatePSelReleaseListBox(StringTable: TStringTable);
134
127
var
135
128
SelectFirst: Boolean;
136
129
ReleaseDesc: String;
130
+ i: Integer;
137
131
begin
138
132
PSelRelease.CheckListBox.Items.Clear;
139
133
SelectFirst := True;
@@ -151,6 +145,8 @@ begin
151
145
end ;
152
146
153
147
function GetListBoxSelectedRelease (): TStrings;
148
+ var
149
+ i: Integer;
154
150
begin
155
151
for i := 0 to PSelRelease.CheckListBox.Items.Count - 1 do begin
156
152
if PSelRelease.CheckListBox.Checked[i] then begin
@@ -161,6 +157,8 @@ begin
161
157
end ;
162
158
163
159
function GetListBoxLatestRelease (Prerelease: Boolean): TStrings;
160
+ var
161
+ i: Integer;
164
162
begin
165
163
for i := 0 to PSelRelease.CheckListBox.Items.Count - 1 do begin
166
164
if Prerelease = IsPrerelease(TStrings(PSelRelease.CheckListBox.ItemObject[i])) then begin
@@ -170,9 +168,25 @@ begin
170
168
end ;
171
169
end ;
172
170
173
- function ConstGetTargetReleaseVersion (Param: String): String;
171
+ function GetSelectedRelease (): TStrings;
172
+ var
173
+ i: Integer;
174
174
begin
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());
176
190
end ;
177
191
178
192
function ErlangIsInstalled : Boolean;
@@ -183,23 +197,15 @@ end;
183
197
procedure CurPageChanged (CurPageID: Integer);
184
198
begin
185
199
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' ));
195
201
idpDownloadAfter(wpPreparing);
196
202
end ;
197
203
end ;
198
204
199
205
function ShouldSkipPage (PageID: Integer): Boolean;
200
206
begin
201
207
if PageID = PSelRelease.ID then begin
202
- Result := not (PSelInstallType.SelectedValueIndex = itypeCustom );
208
+ Result := (PSelInstallType.CheckListBox.ItemObject[PSelInstallType. SelectedValueIndex] = nil );
203
209
end else begin
204
210
Result := False;
205
211
end ;
@@ -217,6 +223,8 @@ begin
217
223
end ;
218
224
219
225
procedure InitializeWizard ();
226
+ var
227
+ LatestRelease, LatestPrerelease: TStrings;
220
228
begin
221
229
idpSetOption(' DetailsButton' , ' 0' );
222
230
@@ -225,15 +233,14 @@ begin
225
233
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);
226
234
227
235
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);
235
242
end ;
236
- itypeCustom := PSelInstallType.Add (' Select another release to install' );
243
+ PSelInstallType.CheckListBox.AddRadioButton (' Select another release to install' , ' ' , 0 , False, True, nil );
237
244
end ;
238
245
239
246
function InitializeSetup (): Boolean;
0 commit comments