2010-02-17 6 views
6

Je souhaite exécuter du code si un utilisateur cocher une case correspondante pendant l'installation. A la lecture du fichier d'aide, il semble que la seule façon d'utiliser la tâche est de l'associer à une entrée dans les fichiers/icônes/etc. section. Je voudrais vraiment l'associer à une procédure dans la section Code. Est-ce possible et si oui comment?Lancer un code personnalisé via des tâches dans Inno Setup

Répondre

4

Vous le faire en ajoutant une page de l'assistant personnalisé qui a des cases à cocher, et exécuter le code pour toutes les cases à cocher sélectionnés lorsque l'utilisateur clique sur « Suivant » sur cette page:

[Code] 
var 
    ActionPage: TInputOptionWizardPage; 

procedure InitializeWizard; 
begin 
    ActionPage := CreateInputOptionPage(wpReady, 
    'Optional Actions Test', 'Which actions should be performed?', 
    'Please select all optional actions you want to be performed, then click Next.', 
    False, False); 

    ActionPage.Add('Action 1'); 
    ActionPage.Add('Action 2'); 
    ActionPage.Add('Action 3'); 

    ActionPage.Values[0] := True; 
    ActionPage.Values[1] := False; 
    ActionPage.Values[2] := False; 
end; 

function NextButtonClick(CurPageID: Integer): Boolean; 
begin 
    Result := True; 
    if CurPageID = ActionPage.ID then begin 
    if ActionPage.Values[0] then 
     MsgBox('Action 1', mbInformation, MB_OK); 
    if ActionPage.Values[1] then 
     MsgBox('Action 2', mbInformation, MB_OK); 
    if ActionPage.Values[2] then 
     MsgBox('Action 3', mbInformation, MB_OK); 
    end; 
end; 

Les cases à cocher pouvez être des contrôles standard ou des éléments dans une zone de liste, consultez la documentation d'Inno Setup sur Pascal Scripting pour plus de détails.

Si vous voulez que votre code à exécuter selon que une certaine composante ou une tâche a été sélectionnée, puis utilisez les IsComponentSelected() et IsTaskSelected() fonctions à la place.

11

Vous n'avez pas besoin de définir votre propre page d'assistant. Vous pouvez simplement les ajouter à la page des tâches supplémentaires.

[Tasks] 
Name: associate; Description:"&Associate .ext files with this version of my program"; GroupDescription: "File association:" 

[Code] 
function NextButtonClick(CurPageID: Integer): Boolean; 
begin 
    Result := True; 
    if CurPageID = wpSelectTasks then 
    begin 
    if WizardForm.TasksList.Checked[1] then 
     MsgBox('First task has been checked.', mbInformation, MB_OK); 
    else 
     MsgBox('First task has NOT been checked.', mbInformation, MB_OK); 
    end; 
end; 

Le crédit va à TLama pour this post.