diff --git a/Release History.txt b/Release History.txt index 3c30785..ffdca2d 100644 --- a/Release History.txt +++ b/Release History.txt @@ -1,3 +1,7 @@ +18 January 2022 - version 3.5.8 + - Added RAD Studio Alexandria support. + - New checkbox added to prioritize GIT over ZIP, simplifying setup files, the setup files should include ZIP and GIT info. + 24 December 2020 - version 3.5.7 - Added RAD Studio Sydney support. diff --git a/Source/SpComponentInstaller.pas b/Source/SpComponentInstaller.pas index 1b7c669..b6f381f 100644 --- a/Source/SpComponentInstaller.pas +++ b/Source/SpComponentInstaller.pas @@ -1,7 +1,7 @@ unit SpComponentInstaller; {============================================================================== -Version 3.5.7 +Version 3.5.8 The contents of this package are licensed under a disjunctive tri-license giving you the choice of one of the three following sets of free @@ -37,7 +37,7 @@ interface {$WARN UNIT_PLATFORM OFF} {$BOOLEVAL OFF} // Unit depends on short-circuit boolean evaluation -{$R 'SpComponentInstallerRes.res'} +{$R 'SpComponentInstallerRes.res'} // Has EmptyResourceFile.res file as a resource used by TSpDelphiDPKFile.CreateAndCopyEmptyResIfNeeded uses Windows, Messages, SysUtils, Classes, Forms, Contnrs, Generics.Collections; @@ -81,27 +81,28 @@ interface SGitCloneCommand = 'GIT.EXE clone --verbose --progress %s %s'; type - TSpIDEType = ( // [IDE-Change-Update] - ideNone, // - ideDelphi7, // D7 - ideDelphi2005, // D9 - ideDelphi2006, // D10 - ideDelphi2007, // D11 - ideDelphi2009, // D12 - ideDelphi2010, // D14 - ideDelphiXE, // D15 - ideDelphiXE2, // D16 - ideDelphiXE3, // D17 - ideDelphiXE4, // D18 - ideDelphiXE5, // D19 - ideDelphiXE6, // D20 - ideDelphiXE7, // D21 - ideDelphiXE8, // D22 - ideDelphiSeattle,// D23 - ideDelphiBerlin, // D24 - ideDelphiTokyo, // D25 - ideDelphiRio, // D26 - ideDelphiSydney // D27 + TSpIDEType = ( // [IDE-Change-Update] + ideNone, // + ideDelphi7, // D7 + ideDelphi2005, // D9 + ideDelphi2006, // D10 + ideDelphi2007, // D11 + ideDelphi2009, // D12 + ideDelphi2010, // D14 + ideDelphiXE, // D15 + ideDelphiXE2, // D16 + ideDelphiXE3, // D17 + ideDelphiXE4, // D18 + ideDelphiXE5, // D19 + ideDelphiXE6, // D20 + ideDelphiXE7, // D21 + ideDelphiXE8, // D22 + ideDelphiSeattle, // D23 + ideDelphiBerlin, // D24 + ideDelphiTokyo, // D25 + ideDelphiRio, // D26 + ideDelphiSydney, // D27 + ideDelphiAlexandria // D28 ); TSpIDETypeRec = record @@ -133,7 +134,8 @@ TSpIDETypeRec = record (IDEVersion: 'D24'; IDEName: 'RAD Studio 10.1 Berlin'; IDERegistryPath: 'SOFTWARE\Embarcadero\BDS\18.0'; IDERADStudioVersion: '18.0'), (IDEVersion: 'D25'; IDEName: 'RAD Studio 10.2 Tokyo'; IDERegistryPath: 'SOFTWARE\Embarcadero\BDS\19.0'; IDERADStudioVersion: '19.0'), (IDEVersion: 'D26'; IDEName: 'RAD Studio 10.3 Rio'; IDERegistryPath: 'SOFTWARE\Embarcadero\BDS\20.0'; IDERADStudioVersion: '20.0'), - (IDEVersion: 'D26'; IDEName: 'RAD Studio 10.4 Sydney'; IDERegistryPath: 'SOFTWARE\Embarcadero\BDS\21.0'; IDERADStudioVersion: '21.0') + (IDEVersion: 'D27'; IDEName: 'RAD Studio 10.4 Sydney'; IDERegistryPath: 'SOFTWARE\Embarcadero\BDS\21.0'; IDERADStudioVersion: '21.0'), + (IDEVersion: 'D28'; IDEName: 'RAD Studio 11 Alexandria'; IDERegistryPath: 'SOFTWARE\Embarcadero\BDS\22.0'; IDERADStudioVersion: '22.0') ); type @@ -214,7 +216,7 @@ TSpExecuteList = class(TObjectList) TSpComponentPackage = class Name: string; ZipFile: string; - Git : string; + Git: string; Destination: string; SearchPath: string; Includes: string; @@ -1343,7 +1345,6 @@ procedure TSpComponentPackageList.LoadFromIni(Filename: string); end; Entry.ExecuteList.LoadFromIni(Filename, S); - Add(Entry); end; end; diff --git a/Source/unit1.dfm b/Source/unit1.dfm index cd289a2..d165c43 100644 --- a/Source/unit1.dfm +++ b/Source/unit1.dfm @@ -11,7 +11,6 @@ object Form1: TForm1 Font.Height = -11 Font.Name = 'MS Shell Dlg 2' Font.Style = [] - OldCreateOrder = False Position = poScreenCenter OnCreate = FormCreate OnDestroy = FormDestroy @@ -41,22 +40,28 @@ object Form1: TForm1 Left = 8 Top = 24 Width = 473 - Height = 227 - OnClickCheck = CheckListBox1ClickCheck + Height = 201 Style = lbOwnerDrawVariable TabOrder = 0 + OnClickCheck = CheckListBox1ClickCheck OnDrawItem = CheckListBox1DrawItem OnMeasureItem = CheckListBox1MeasureItem end + object CheckBox1: TCheckBox + Left = 8 + Top = 231 + Width = 249 + Height = 17 + Caption = 'Get files from GIT repository when available' + Checked = True + State = cbChecked + TabOrder = 1 + end end object TabSheet2: TTabSheet Caption = 'TabSheet2' ImageIndex = 1 TabVisible = False - ExplicitLeft = 0 - ExplicitTop = 0 - ExplicitWidth = 0 - ExplicitHeight = 0 object Label2: TLabel Left = 8 Top = 16 @@ -105,10 +110,6 @@ object Form1: TForm1 Caption = 'TabSheet3' ImageIndex = 2 TabVisible = False - ExplicitLeft = 0 - ExplicitTop = 0 - ExplicitWidth = 0 - ExplicitHeight = 0 object Label3: TLabel Left = 8 Top = 8 diff --git a/Source/unit1.pas b/Source/unit1.pas index d20757d..e13d6bf 100644 --- a/Source/unit1.pas +++ b/Source/unit1.pas @@ -14,7 +14,7 @@ interface IniFiles, Actions, SpComponentInstaller; const - rvMultiInstallerVersion = 'Silverpoint MultiInstaller 3.5.7'; + rvMultiInstallerVersion = 'Silverpoint MultiInstaller 3.5.8'; rvMultiInstallerLink = 'http://www.silverpointdevelopment.com'; resourcestring @@ -68,6 +68,7 @@ TForm1 = class(TForm) Bevel2: TBevel; PaintBoxLabel: TPaintBox; Image1: TImage; + CheckBox1: TCheckBox; procedure FormCreate(Sender: TObject); procedure aBrowseExecute(Sender: TObject); procedure aBackExecute(Sender: TObject); @@ -213,12 +214,15 @@ procedure TForm1.FillCheckListBox; if G > 0 then begin P := CheckListBox1.Items.IndexOfObject(Pointer(G)); if P > -1 then - CheckListBox1.Items[P] := CheckListBox1.Items[P] + #13#10 + Installer.ComponentPackages[I].Name + CheckListBox1.Items[P] := CheckListBox1.Items[P] + #13#10 + Installer.ComponentPackages[I].Name; end; if P = -1 then begin P := CheckListBox1.Items.AddObject(Installer.ComponentPackages[I].Name, Pointer(G)); CheckListBox1.Checked[P] := True; + if Installer.ComponentPackages[I].Git <> '' then + CheckListBox1.Items[P] := CheckListBox1.Items[P] + #13#10 + + 'GIT: ' + Installer.ComponentPackages[I].Git; end; end; end; @@ -276,7 +280,7 @@ procedure TForm1.CheckListBox1DrawItem(Control: TWinControl; begin if Index > -1 then begin CheckListBox1.Canvas.FillRect(Rect); - OffsetRect(Rect, 8, 2); + OffsetRect(Rect, 8, 2); DrawText(CheckListBox1.Canvas.Handle, PChar(CheckListBox1.Items[Index]), -1, Rect, 0); end; end; @@ -375,18 +379,24 @@ function TForm1.Install: Boolean; if (G > 0) and (Installer.ComponentPackages[J].GroupIndex = G) then Installer.ComponentPackages.Delete(J) else - if CheckListBox1.Items[I] = Installer.ComponentPackages[J].Name then + if CheckListBox1.items[I].Contains(Installer.ComponentPackages[J].Name) then Installer.ComponentPackages.Delete(J); end; - try - aFinish.Visible := True; - aSaveLog.Visible := True; - aBack.Visible := False; - aNext.Visible := False; - aCancel.Visible := False; - Application.ProcessMessages; + // Prioritize GIT over ZIP + if CheckBox1.Checked then begin + for J := 0 to Installer.ComponentPackages.Count - 1 do + if not Installer.ComponentPackages[J].Git.IsEmpty then + Installer.ComponentPackages[J].ZipFile := ''; + end; + aFinish.Visible := True; + aSaveLog.Visible := True; + aBack.Visible := False; + aNext.Visible := False; + aCancel.Visible := False; + Application.ProcessMessages; + try // Check, Unzip, Patch, Compile, Install if Installer.Install(AppPath, InstallFolderEdit.Text, IDE, LogMemo.Lines) then Result := True;