3

選択グループまたはコンポーネントを保護するのを手伝ってくれる人はいますか?

例えば

If ('Readme.txt').selected or ('compact').selected = True then
begin "Password wizard page";
else
result := true;
end;

この作業スクリプトのようなもの:P

function CheckPassword(Password: String): Boolean;
begin
 result := false;
 if (Password='component') or (Password='type') then
   result := true;
end;
4

1 に答える 1

4

あなたの質問を完全に理解したかどうかはわかりませんが、これが役立つかもしれません。ここでは、 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;
于 2010-09-16T12:09:25.743 に答える