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
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.
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.