Skip to content
This repository was archived by the owner on May 1, 2024. It is now read-only.

Commit 6b96094

Browse files
committed
Use more ItemObject references to lookup release information
1 parent 3e92d77 commit 6b96094

File tree

1 file changed

+38
-31
lines changed

1 file changed

+38
-31
lines changed

ElixirWeb.iss

Lines changed: 38 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,8 @@ Source: "compiler:SetupLdr.e32"; DestDir: "{tmp}\_offlineinstaller"; Flags: dele
5151

5252
[Run]
5353
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..."
5656

5757
[Code]
5858
type
@@ -61,14 +61,6 @@ type
6161
var
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
7466
function SplitStringRec(Str: String; Delim: String; StrList: TStringList): TStringList;
@@ -120,7 +112,8 @@ end;
120112
121113
function CSVToStringTable(Filename: String): TStringTable;
122114
var
123-
Rows: TArrayOfString;
115+
Rows: TArrayOfString;
116+
i: Integer;
124117
begin
125118
LoadStringsFromFile(Filename, Rows);
126119
SetArrayLength(Result, GetArrayLength(Rows));
@@ -134,6 +127,7 @@ procedure PopulatePSelReleaseListBox(StringTable: TStringTable);
134127
var
135128
SelectFirst: Boolean;
136129
ReleaseDesc: String;
130+
i: Integer;
137131
begin
138132
PSelRelease.CheckListBox.Items.Clear;
139133
SelectFirst := True;
@@ -151,6 +145,8 @@ begin
151145
end;
152146
153147
function GetListBoxSelectedRelease(): TStrings;
148+
var
149+
i: Integer;
154150
begin
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
161157
end;
162158
163159
function GetListBoxLatestRelease(Prerelease: Boolean): TStrings;
160+
var
161+
i: Integer;
164162
begin
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;
171169
end;
172170
173-
function ConstGetTargetReleaseVersion(Param: String): String;
171+
function GetSelectedRelease(): TStrings;
172+
var
173+
i: Integer;
174174
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());
176190
end;
177191
178192
function ErlangIsInstalled: Boolean;
@@ -183,23 +197,15 @@ end;
183197
procedure CurPageChanged(CurPageID: Integer);
184198
begin
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;
197203
end;
198204
199205
function ShouldSkipPage(PageID: Integer): Boolean;
200206
begin
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
217223
end;
218224
219225
procedure InitializeWizard();
226+
var
227+
LatestRelease, LatestPrerelease: TStrings;
220228
begin
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);
237244
end;
238245
239246
function InitializeSetup(): Boolean;

0 commit comments

Comments
 (0)