Inno-setup: Custom Wizard page based on existing page type

I decided to create a custom wizard page in my installation installation installer. But I do not want to create it from scratch. I want to take the TInputDirWizardPage and change it, for example. add combo box. Is it possible? How to do it?

+6
source share
1 answer

I figured it out myself. Therefore, I will answer my question. Here is an example code:

[Code] const DB_PAGE_CAPTION='Select Application Database Folder'; DB_PAGE_DESCRIPTION='Where should application database files be installed or where your database files already are?'; DB_PAGE_SUBCAPTION='In case of new installation select the folder in which Setup should install application database files, then click Next. Or select folder where previous version of application stored database files, then click Next'; var databasePage : TInputDirWizardPage;//this is predefined form declaration CheckListBox : TNewCheckListBox; //this is new element i'm about to add to page procedure createDatabaseWizardPage; //creating page begin databasePage :=CreateInputDirPage(wpSelectDir, DB_PAGE_CAPTION, DB_PAGE_DESCRIPTION, DB_PAGE_SUBCAPTION, False, ''); databasePage.Add(''); databasePage.buttons[0].Top:=databasePage.buttons[0].Top+ScaleY(70);//moving predefined databasePage.edits[0].Top:=databasePage.edits[0].Top+ScaleY(70); //elements down. databasePage.edits[0].Text:=ExpandConstant('{commonappdata}\my app');//default value CheckListBox := TNewCheckListBox.Create(databasePage);//creating and modifying new checklistbox CheckListBox.Top := 40 + ScaleY(8); CheckListBox.Width := databasePage.SurfaceWidth; CheckListBox.Height := ScaleY(50); CheckListBox.BorderStyle := bsNone; CheckListBox.ParentColor := True; CheckListBox.MinItemHeight := WizardForm.TasksList.MinItemHeight; CheckListBox.ShowLines := False; CheckListBox.WantTabs := True; CheckListBox.Parent := databasePage.Surface;//setting control parent element CheckListBox.AddRadioButton('New Installation', '', 0, True, True, nil); CheckListBox.AddRadioButton('Update existing copy', '', 0, False, True, nil); end; procedure InitializeWizard; begin createDatabaseWizardPage(); end; 

Thanks to everyone! :-)

+6
source

Source: https://habr.com/ru/post/906315/


All Articles