Управление пользовательской страницей для показа после определенных задач
После нескольких часов, гуглящих и борющихся, и не найденных, я решаю обратиться за помощью здесь.
То, что я пытаюсь выполнить, я пытаюсь получить 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;