2010-11-30 6 views
5

Je voudrais créer une page d'assistant personnalisée après la page où vous sélectionnez l'emplacement d'installation.Page personnalisée d'Inno Setup

J'ai vu comment créer des pages personnalisées et les ajouter à l'assistant dans la procédure InitializeWizard.

Mon problème est que lorsque je crée une page personnalisée, la page par défaut pour la sélection de l'emplacement d'installation n'apparaît plus.

De quelles options ai-je besoin pour conserver la page par défaut (sélection de l'emplacement d'installation) et ajouter une nouvelle page personnalisée?

Merci

Mon code ressemble à ceci (exemple fourni par CodeClasses.iss 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; 

Répondre

6

Le premier paramètre wpWelcome dans ce cas, spécifie après la page sorcière notre page personnalisée est affichée.

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

Pas une réponse très claire; cela ne dit pas pourquoi la page d'origine n'apparaît pas, ou comment la récupérer. – Nyerguds