3

数時間グーグルで苦労した後、どこにも行かなかったので、ここで助けを求めることにしました。

私が達成しようとしているのは、ユーザーから 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

4

1 に答える 1

2

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-03-07T21:10:28.673 に答える