是否有人可以帮助我保护选择组或组件。
查看示例
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;
我不确定是否完全理解了您的问题,但这可能会有所帮助。以下是您只需要添加到Components.iss示例的[code]
部分的几个函数,其中一个组件("Help")仅在用户输入正确密码时才能安装。
[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;
请注意,这使用翻译的密码标题,您可能还需要使其他三个字符串也可翻译。
接下来,如果用户尚未选择要安装的组件,则需要隐藏该页面:
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;