2010-08-14 30 views
3

Quelqu'un peut-il m'aider à protéger un groupe ou un composant de sélection?Inno Setup: Comment créer une page d'assistant de mot de passe uniquement si le composant "X" est sélectionné

Pour des exemples

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

Quelque chose comme ça pour ce script de travail: P

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

Répondre

4

Je ne suis pas sûr que je bien compris votre question, mais peut-être que cela aide. Voici quelques fonctions qu'il vous suffit d'ajouter à la section [code] de l'exemple Components.iss, et l'un des composants ("help") ne peut être installé que lorsque l'utilisateur saisit le mot de passe correct.

Étant donné que vous avez besoin du mot de passe plus tard dans l'installation, et pas toujours, vous ne pouvez pas utiliser la page de mot de passe de configuration standard. Vous hériterez créer votre propre page et l'insérer après la page de sélection des composants:

[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; 

Notez que celui-ci utilise la légende de mot de passe traduit, vous devrez peut-être faire les trois autres cordes traduisibles aussi bien.

Ensuite, vous aurez besoin de cacher cette page si l'utilisateur n'a pas sélectionné l'appareil pour l'installation:

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; 

Enfin, vous devez vérifier le mot de passe et empêcher l'utilisateur d'aller à la page suivante si la le mot de passe est faux:

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;