あなたの質問を完全に理解したかどうかはわかりませんが、これが役立つかもしれません。ここでは、 Components.iss[code]
サンプルのセクションに追加する必要がある関数をいくつか示します。コンポーネントの 1 つ (「ヘルプ」) は、ユーザーが正しいパスワードを入力した場合にのみインストールできます。
インストールの後半でパスワードが必要になるため、常にではありませんが、標準のセットアップ パスワード ページは使用できません。代わりに、独自のページを作成し、コンポーネント選択ページの後に挿入します。
[Code]
var
PasswordPage: TInputQueryWizardPage;
procedure InitializeWizard();
begin
PasswordPage := CreateInputQueryPage(wpSelectComponents,
'Your caption goes here',
'Your description goes here',
'Your subcaption goes here');
PasswordPage.Add(SetupMessage(msgPasswordEditLabel), True);
end;
これは翻訳されたパスワード キャプションを使用することに注意してください。他の 3 つの文字列も翻訳可能にする必要がある場合があります。
次に、ユーザーがインストールするコンポーネントを選択していない場合は、そのページを非表示にする必要があります。
function ShouldSkipPage(PageID: Integer): Boolean;
begin
Result := False;
if PageID = PasswordPage.ID then begin
// show password page only if help file is selected for installation
Result := not IsComponentSelected('help');
end;
end;
最後に、パスワードを確認し、パスワードが間違っている場合にユーザーが次のページに移動できないようにする必要があります。
function NextButtonClick(CurPageID: Integer): Boolean;
begin
Result := True;
if CurPageID = PasswordPage.ID then begin
// stay on this page if password is wrong
if PasswordPage.Edits[0].Text <> 'my-secret-password' then begin
MsgBox(SetupMessage(msgIncorrectPassword), mbError, MB_OK);
Result := False;
end;
end;
end;