2010-02-17 20 views
6

Quiero ejecutar algún código si un usuario marca una casilla de verificación correspondiente durante la instalación. Después de leer el archivo de ayuda, parece que la única forma de usar la tarea es asociarla con una entrada en los Archivos/Iconos/etc. sección. Realmente me gustaría asociarlo con un procedimiento en la sección Código. ¿Se puede hacer esto? Y si se puede, cómo?Ejecutar código personalizado a través de tareas en Inno Setup

Respuesta

4

a hacer eso mediante la adición de una página de asistente personalizado que tiene casillas de verificación, y ejecutar el código para todas las casillas de verificación seleccionadas cuando el usuario hace clic en "Siguiente" en esa página:

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

Las casillas de verificación Puede ser controles estándar o elementos en un cuadro de lista, consulte la documentación Inno Setup en Pascal Scripting para más detalles.

Si desea que su código se ejecute dependiendo de si se ha seleccionado un determinado componente o tarea, utilice las funciones IsComponentSelected() y IsTaskSelected().

11

No necesita definir su propia página de asistente. Simplemente puede agregarlos a la página de tareas adicionales.

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

crédito va a Tlama para this post.

Cuestiones relacionadas