经过几个小时的谷歌搜索和挣扎,但没有找到任何位置,我决定在这里寻求帮助。
我试图实现的是,我试图从用户那里获得IP,并将其用作[运行]部分中的命令行参数。
所以我有这个:
[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}DriversProgram.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
您可以使用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;