2010-02-17 15 views
6

Ich möchte Code ausführen, wenn ein Benutzer ein entsprechendes Kontrollkästchen während der Installation überprüft. Beim Lesen der Hilfedatei sieht es so aus, als ob die einzige Möglichkeit zur Verwendung der Aufgabe darin besteht, sie mit einem Eintrag in den Dateien/Symbolen/etc zu verknüpfen. Sektion. Ich würde es gerne mit einer Prozedur im Abschnitt Code verknüpfen. Kann das gemacht werden und wenn ja, wie?Benutzerdefinierten Code über Aufgaben in Inno-Setup starten

Antwort

4

Sie tun das, indem Sie eine benutzerdefinierte Assistentenseite hinzufügen, die Boxen hat zu überprüfen, und führen Sie den Code für alle Kontrollkästchen aktiviert, wenn der Benutzer klickt auf „Weiter“ auf dieser Seite:

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

die Kontrollkästchen können entweder Standardsteuerelemente oder Elemente in einem Listenfeld sind, finden Sie in der Inno Setup-Dokumentation zu Pascal Scripting für Details.

Wenn Sie möchten, dass Ihr Code abhängig davon ausgeführt wird, ob eine bestimmte Komponente oder Aufgabe ausgewählt wurde, verwenden Sie stattdessen die Funktionen und IsTaskSelected().

11

Sie müssen keine eigene Assistentenseite definieren. Sie können sie einfach zur Seite mit den zusätzlichen Aufgaben hinzufügen.

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

Kredit geht an TLama für this post.

Verwandte Themen