Отключите следующую кнопку Inno Setup, пока пользователь не выберет переключатель

#installation #inno-setup #pascalscript

#установка #inno-setup #pascalscript

Вопрос:

Я хочу создать установщик, который имеет две версии программного обеспечения. Я реализовал переключатель. Но пользователь также может нажать «Далее», и программа установки ничего не установит.

Я хочу отключить кнопку «Далее», пока пользователь не выберет некоторые параметры на странице.

 [Code]
var
  UsagePage: TInputOptionWizardPage;

function IsProVersion(Mode: Integer): Boolean;
begin
  Result := (UsagePage.SelectedValueIndex = Mode);
end;

procedure InitializeWizard();
begin
  UsagePage :=
    CreateInputOptionPage(
      wpInfoBefore, 'Select Edition', 'Select Edition',
      'Select software edition you want to install on your computer.',
      True, False);
  UsagePage.Add('Free version');
  UsagePage.Add('Pro version (30 Days Trial)');
end;


[Files]
Source: "D:softwarefree*"; DestDir: "{app}"; 
    Flags: ignoreversion recursesubdirs createallsubdirs; Check: IsProVersion(0)
Source: "D:softwarepro*"; DestDir: "{app}"; 
    Flags: ignoreversion recursesubdirs createallsubdirs; Check: IsProVersion(1)
 

Ответ №1:

Используйте UsagePage.CheckListBox.OnClickCheck событие для обнаружения изменения выбора и соответствующего обновления состояния следующей кнопки:

 [Code]

var
  UsagePage: TInputOptionWizardPage;

procedure VerifyUsagePage(Sender: TObject);
var
  AnyChecked: Boolean;
  I: Integer;
begin
  AnyChecked := False;
  for I := 0 to UsagePage.CheckListBox.Items.Count - 1 do
  begin
    if UsagePage.CheckListBox.Checked[I] then
      AnyChecked := True;
  end;
  WizardForm.NextButton.Enabled := AnyChecked;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
  if CurPageID = UsagePage.ID then
  begin
    // Update the Next button state when entering the page
    VerifyUsagePage(nil);
  end;
end;

procedure InitializeWizard();
begin
  UsagePage :=
    CreateInputOptionPage(
      wpInfoBefore, 'Select Edition', 'Select Edition',
      'Select software edition you want to install on your computer.',
      True, False);
  UsagePage.Add('Free version');
  UsagePage.Add('Pro version (30 Days Trial)');
  // Update the Next button state on the selection change
  UsagePage.CheckListBox.OnClickCheck := @VerifyUsagePage;
end;
 

Хотя для выбора того, что устанавливать, вам лучше использовать встроенные механизмы Inno Setup, такие как типы установок и компоненты.