2010-11-30 23 views
5

Me gustaría crear una página de asistente personalizada después de la página donde selecciona la ubicación de instalación.Inno Setup página personalizada

He visto cómo crear páginas personalizadas y agregarlas al asistente en el procedimiento InitializeWizard.

Mi problema es que cuando creo una página personalizada, la página predeterminada para la selección de la ubicación de instalación ya no aparece.

¿Qué opciones tengo para mantener la página predeterminada (selección de ubicación de instalación) y también agregar una nueva página personalizada?

Gracias

Mi código es como la siguiente (ejemplo CodeClasses.iss proporcionada por Inno):

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; 

......

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 := '&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; 

Respuesta

6

el primer parámetro en wpWelcome este caso, especifica después de la página de bruja que se muestra nuestra página personalizada.

Page := CreateCustomPage(wpWelcome, 'Custom wizard page controls', 'TButton and others'); 
+0

No es una respuesta muy clara; esto en realidad no dice por qué la página original no aparece, o cómo recuperarla. – Nyerguds

Cuestiones relacionadas