2010-02-17 11 views
6

Chcę wykonać kod, jeśli użytkownik zaznaczy odpowiednie pole wyboru podczas instalacji. Po przeczytaniu pliku pomocy wygląda na to, że jedynym sposobem użycia tego zadania jest powiązanie go z wpisem w Pliki/Ikony/itd. Sekcja. Naprawdę chciałbym powiązać go z procedurą w sekcji Kod. Czy można to zrobić, a jeśli tak, to w jaki sposób?Uruchamianie niestandardowego kodu za pomocą zadań w konfiguracji Inno

Odpowiedz

4

to zrobić poprzez dodanie niestandardowej strony kreatora, który zawiera pola wyboru i wykonywania kodu dla wszystkich zaznaczonych pól wyboru, gdy użytkownik kliknie przycisk „Dalej” na tej stronie:

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

Pola wyboru mogą albo być standardowymi kontrolkami lub elementami w polu listy, zobacz dokumentację Inno Setup na temat Skrypty Pascala.

Jeśli chcesz, aby kod był wykonywany w zależności od tego, czy został wybrany określony komponent lub zadanie, użyj zamiast tego funkcji IsComponentSelected() i IsTaskSelected().

11

Nie trzeba definiować własnej strony kreatora. Możesz po prostu dodać je do strony dodatkowych zadań.

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

Kredyt trafia do TLama za this post.

Powiązane problemy