Inno setup 控制自定义页面以在特定任务后显示

Inno setup 控制自定义页面以在特定任务后显示,inno-setup,task,custom-pages,Inno Setup,Task,Custom Pages,在谷歌上搜索了几个小时,苦苦挣扎,却找不到任何地方,我决定在这里寻求帮助 我试图完成的是,我试图从用户那里获取IP,并将其用作我的[Run]部分中的命令行参数 所以我有这个: [Task] Name: "License"; Description: "Usb Key License Driver"; GroupDescription: "UsbLicense"; Flags: checkedonce Name: "License/Desktop"; Description: "Desktop L

在谷歌上搜索了几个小时,苦苦挣扎,却找不到任何地方,我决定在这里寻求帮助

我试图完成的是,我试图从用户那里获取IP,并将其用作我的[Run]部分中的命令行参数

所以我有这个:

[Task]
Name: "License"; Description: "Usb Key License Driver"; GroupDescription: "UsbLicense"; Flags: checkedonce
Name: "License/Desktop"; Description: "Desktop License"; GroupDescription: "UsbLicense"; Flags: exclusive
Name: "License/NetworkClient"; Description: "Network Client License Key"; GroupDescription: "UsbLicense"; Flags: exclusive unchecked
现在,如果用户选择网络客户端,我希望能够显示一个自定义页面,并获取IP,然后像这样使用它:

[Run]
Filename: "{app}\Drivers\Program.exe"; Parameters: "/ip:{code:GetIPhere}"; StatusMsg: "Installing drivers..."; Tasks: License/NetworkClient
我成功创建了自己的页面并运行了以下操作:

[Code]
procedure InitializeWizard();
begin
  CustomForm_CreatePage(wpSelectDir);
end;
现在回答我的主要问题:

1) 如何控制自定义表单何时显示,在激活任务页面之前显示

2) 如果我能让它在任务页面后显示?如何编写代码,使其仅在任务的“客户端网络”条件下显示。(如果我在NextButtonClick方法中执行此操作,我如何知道自定义页面的页面id是什么?)

谢谢你们的帮助,我快完成我的安装程序了,但这让我发疯了

----编辑---

我解决了我的问题1,创建自定义页面时有一个pageAfter参数,我们可以使用selectedTask常量确定它显示在任务页面之后:

procedure InitializeWizard();
begin
  Form_CreatePage(wpSelectTasks);
end;
感谢和问候,
Kev84

您可以使用Pascal脚本向导SelectedTasks,它将返回您创建的任务字符串,只需对返回的字符串执行“Pos”,您就可以确定是否选择了特定的任务

[code]
function Form_ShouldSkipPage(Page: TWizardPage): Boolean;
var
 selectedTask : string;
 skipPage : bool;
begin
  skipPage := true;
  selectedTask := WizardSelectedTasks(false);

  if (Pos('client', selectedTask) > 0) then
  begin    
    skipPage := false;
  end;
  Result := skipPage;

end;