2010-11-30 129 views
5

我想在选择安装位置的页面之后创建自定义向导页面。Inno Setup自定义页面

我已经看到如何创建自定义页面并将它们添加到InitializeWizard过程中的向导中。

我的问题是,当我创建一个自定义页面时,安装位置选择的默认页面不再出现。

我必须保留默认页面(安装位置选择)以及添加新的自定义页面吗?

感谢

我的代码看起来是这样的(由Inno提供CodeClasses.iss为例):

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; 

回答

6

中的第一个参数wpWelcome这个案例,在女巫页面显示我们的自定义页面后指定。

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

不是一个非常明确的答案;这实际上并没有说明为什么原始页面不显示,或者如何恢复。 – Nyerguds 2013-03-08 07:40:03