代码之家  ›  专栏  ›  技术社区  ›  mwolfe02

通过Inno设置中的任务启动自定义代码

  •  6
  • mwolfe02  · 技术社区  · 14 年前

    如果用户在安装期间选中了相应的复选框,我想执行一些代码。从读取帮助文件来看,使用该任务的唯一方法似乎是将其与“文件/图标”部分中的条目相关联。我真的想将它与代码部分中的过程关联起来。可以这样做吗?如果可以,怎么做?

    2 回复  |  直到 11 年前
        1
  •  4
  •   mghie    14 年前

    您可以通过添加一个具有复选框的自定义向导页面来完成此操作,并在用户单击该页面上的“下一步”时为所有选中的复选框执行代码:

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

    复选框可以是标准控件,也可以是列表框中的项目,有关详细信息,请参见有关pascal脚本的Inno设置文档。

    如果希望根据是否选择了某个组件或任务来执行代码,请使用 IsComponentSelected() IsTaskSelected() 而是函数。

        2
  •  11
  •   Community Egal    7 年前

    您不需要定义自己的向导页。您可以将它们添加到“附加任务”页。

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

    信用转到TLAMA this post .