Управление пользовательской страницей для показа после определенных задач

После нескольких часов, гуглящих и борющихся, и не найденных, я решаю обратиться за помощью здесь.

То, что я пытаюсь выполнить, я пытаюсь получить 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

Теперь, если пользователь выбирает Network client, я хочу показать пользовательскую страницу, получить 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, как я узнаю, каков идентификатор страницы моей пользовательской страницы?)

Спасибо за вашу помощь, я так близко подошел к завершению работы с моим установщиком, но это сводит меня с ума.

---- ----EDITED

Я решил свою проблему 1, при создании пользовательской страницы есть параметр pageAfter, и мы можем использовать константу selectedTask, чтобы определить, что она появляется ПОСЛЕ страницы задач:

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

Спасибо и всего наилучшего, Kev84

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;
Другие вопросы по тегам