【问题标题】:Controlling Custom Page To Show After Specific Tasks控制自定义页面在特定任务后显示
【发布时间】:2012-03-07 19:26:15
【问题描述】:

经过几个小时的谷歌搜索和挣扎,但无处可寻,我决定在这里寻求帮助。

我想要完成的是,我试图从用户那里获取 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) 如果我可以让它显示 AFTER 任务页面?如何编写代码以使其仅在任务的“客户端网络”条件下显示。 (如果我在 NextButtonClick 方法中这样做,我怎么知道我的自定义页面的页面 id 是什么?)

感谢您提供的所有帮助,我的安装程序即将完成,但这让我抓狂。

----已编辑----

我解决了我的问题1,在创建自定义页面的时候有一个pageAfter参数,我们可以通过selectedTask常量来确定它出现在Task页面之后:

procedure InitializeWizard();
begin
  Form_CreatePage(wpSelectTasks);
end;

感谢和问候, Kev84

【问题讨论】:

    标签: inno-setup task custom-pages


    【解决方案1】:

    您可以使用 Pascal Script WizardSelectedTasks,它将返回您创建的任务字符串,只需对返回的字符串执行“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;
    

    【讨论】:

      猜你喜欢
      • 2012-08-27
      • 1970-01-01
      • 1970-01-01
      • 2019-09-14
      • 1970-01-01
      • 1970-01-01
      • 2017-03-15
      • 1970-01-01
      • 2018-05-28
      相关资源
      最近更新 更多