title: Inno Setup custom page
body: <p>I would like to create a custom wizard page after the page where you select the install location.</p>
  
  <p>I have seen how to create custom pages and add them to the wizard in the <code>InitializeWizard</code> procedure.</p>
  
  <p>My problem is that when I create a custom page the default page for install location selection does not appear any more.</p>
  
  <p>What options do I have to keep the default page(install location selection) and also add a my new custom page?</p>
  
  <p>Thanks</p>
  
  <p>My code looks something like this (CodeClasses.iss example provided by inno ):</p>
  
  <pre><code>procedure CreateTheWizardPages;
  var
    Page: TWizardPage;
    Button, FormButton: TButton;
    CheckBox: TCheckBox;
    Edit: TEdit;
    PasswordEdit: TPasswordEdit;
    Memo: TMemo;
    Lbl, ProgressBarLabel: TLabel;
    ComboBox: TComboBox;
    ListBox: TListBox;
    StaticText: TNewStaticText;
    ProgressBar: TNewProgressBar;
    CheckListBox, CheckListBox2: TNewCheckListBox;
    FolderTreeView: TFolderTreeView;
    BitmapImage, BitmapImage2, BitmapImage3: TBitmapImage;
    BitmapFileName: String;
    RichEditViewer: TRichEditViewer;
  begin
    { TButton and others }
  
    Page := CreateCustomPage(wpWelcome, 'Custom wizard page controls', 'TButton and others');
  
    Button := TButton.Create(Page);
    Button.Width := ScaleX(75);
    Button.Height := ScaleY(23);
    Button.Caption := 'TButton';
    Button.OnClick := @ButtonOnClick;
    Button.Parent := Page.Surface;
  
    CheckBox := TCheckBox.Create(Page);
    CheckBox.Top := Button.Top + Button.Height + ScaleY(8);
    CheckBox.Width := Page.SurfaceWidth;
    CheckBox.Height := ScaleY(17);
    CheckBox.Caption := 'TCheckBox';
    CheckBox.Checked := True;
    CheckBox.Parent := Page.Surface;
  
    Edit := TEdit.Create(Page);
    Edit.Top := CheckBox.Top + CheckBox.Height + ScaleY(8);
    Edit.Width := Page.SurfaceWidth div 2 - ScaleX(8);
    Edit.Text := 'TEdit';
    Edit.Parent := Page.Surface;
  
    PasswordEdit := TPasswordEdit.Create(Page);
    PasswordEdit.Left := Page.SurfaceWidth - Edit.Width;
    PasswordEdit.Top := CheckBox.Top + CheckBox.Height + ScaleY(8);
    PasswordEdit.Width := Edit.Width;
    PasswordEdit.Text := 'TPasswordEdit';
    PasswordEdit.Parent := Page.Surface;
  
    Memo := TMemo.Create(Page);
    Memo.Top := Edit.Top + Edit.Height + ScaleY(8);
    Memo.Width := Page.SurfaceWidth;
    Memo.Height := ScaleY(89);
    Memo.ScrollBars := ssVertical;
    Memo.Text := 'TMemo';
    Memo.Parent := Page.Surface;
  
    Lbl := TLabel.Create(Page);
    Lbl.Top := Memo.Top + Memo.Height + ScaleY(8);
    Lbl.Caption := 'TLabel';
    Lbl.AutoSize := True;
    Lbl.Parent := Page.Surface;
  
    FormButton := TButton.Create(Page);
    FormButton.Top := Lbl.Top + Lbl.Height + ScaleY(8);
    FormButton.Width := ScaleX(75);
    FormButton.Height := ScaleY(23);
    FormButton.Caption := 'TSetupForm';
    FormButton.OnClick := @FormButtonOnClick;
    FormButton.Parent := Page.Surface;
  </code></pre>
  
  <p>......</p>
  
  <pre><code>procedure InitializeWizard();
  var
    AboutButton, CancelButton: TButton;
    URLLabel: TNewStaticText;
    BackgroundBitmapImage: TBitmapImage;
    BackgroundBitmapText: TNewStaticText;
  begin
    { Custom wizard pages }
  
    CreateTheWizardPages;
  
    { Other custom controls }
  
    CancelButton := WizardForm.CancelButton;
  
    AboutButton := TButton.Create(WizardForm);
    AboutButton.Left := WizardForm.ClientWidth - CancelButton.Left - CancelButton.Width;
    AboutButton.Top := CancelButton.Top;
    AboutButton.Width := CancelButton.Width;
    AboutButton.Height := CancelButton.Height;
    AboutButton.Caption := '&amp;About...';
    AboutButton.OnClick := @AboutButtonOnClick;
    AboutButton.Parent := WizardForm;
  
    URLLabel := TNewStaticText.Create(WizardForm);
    URLLabel.Caption := 'www.innosetup.com';
    URLLabel.Cursor := crHand;
    URLLabel.OnClick := @URLLabelOnClick;
    URLLabel.Parent := WizardForm;
    { Alter Font *after* setting Parent so the correct defaults are inherited first }
    URLLabel.Font.Style := URLLabel.Font.Style + [fsUnderline];
    URLLabel.Font.Color := clBlue;
    URLLabel.Top := AboutButton.Top + AboutButton.Height - URLLabel.Height - 2;
    URLLabel.Left := AboutButton.Left + AboutButton.Width + ScaleX(20);
  
    BackgroundBitmapImage := TBitmapImage.Create(MainForm);
    BackgroundBitmapImage.Left := 50;
    BackgroundBitmapImage.Top := 90;
    BackgroundBitmapImage.AutoSize := True;
    BackgroundBitmapImage.Bitmap := WizardForm.WizardBitmapImage.Bitmap;
    BackgroundBitmapImage.Parent := MainForm;
  
    BackgroundBitmapText := TNewStaticText.Create(MainForm);
    BackgroundBitmapText.Left := BackgroundBitmapImage.Left;
    BackgroundBitmapText.Top := BackgroundBitmapImage.Top + BackgroundBitmapImage.Height + ScaleY(8);
    BackgroundBitmapText.Caption := 'TBitmapImage';
    BackgroundBitmapText.Parent := MainForm;
  end;
  </code></pre>