如何在Inno Setup中添加两个自定义页面?

时间:2017-06-30 07:13:46

标签: inno-setup

我想在setup.exe中为两台服务器创建两个授权,但我只得到一个。我使用这段代码:

[Code]
...
procedure InitializeWizard;
begin
    ServerDetailsPage1:= CreateInputQueryPage(wpWelcome, 
      '', '', 'Please enter following data and click Next.');

    ServerDetailsPage1.Add('IP Address (1)', False);                  {0}
    ServerDetailsPage1.Add('Port Number (1)', False);                 {1}
    ServerDetailsPage1.Add('Domain Name\User Name (1)', False);       {2}
    ServerDetailsPage1.Add('Password (1)', True);                     {3}
    ServerDetailsPage1.Values[1] := '';
    ServerDetailsPage1.Values[1] := '\';                     

    ServerDetailsPage2 := CreateInputQueryPage(wpWelcome, 
      '', '', 'Please enter following data for SQL Server and click Next.');

    ServerDetailsPage2.Add('IP Address (2)', False);             {0}
    ServerDetailsPage2.Add('Port Number (2)', False);            {1}
    ServerDetailsPage2.Add('Domain Name\User Name (2)', False);  {2}
    ServerDetailsPage2.Add('Password (2)', True);                {3}
    ServerDetailsPage2.Values[1] := ''; 
    ServerDetailsPage2.Values[2] := '\';
end;

哪里出错?谢谢你的任何想法。

2 个答案:

答案 0 :(得分:2)

添加CustomInputInqueryPage的方法签名:

function CreateInputQueryPage(const AfterID: Integer; const ACaption, ADescription, ASubCaption: String): TInputQueryWizardPage;

在您的情况下,您已将 wpWelcome 作为 AfterID 传递给两个页面, ServerDetailsPage1 ServerDetailsPage2

如果您想在 ServerDetailsPage1 之后显示 ServerDetailsPage2 ,请将代码更改为:

ServerDetailsPage2 := CreateInputQueryPage(ServerDetailsPage1.ID, 
  '', '', 'Please enter following data for SQL Server and click Next.');

答案 1 :(得分:0)

适合我。我按预期得到两页。

也许你会感到困惑,因为你得到了第二个" " first"之前的页面,因为你在" welcome"之后插入了两个页面。页。您稍后添加的页面将在页面之前插入,您首先添加该页面。

要按正确顺序排列,请在第一页之后插入第二页:

ServerDetailsPage2 := CreateInputQueryPage(ServerDetailsPage1.ID, ...);