Как я могу создать свою собственную форму или страницу в программе установки на основе Inno Setup?

#inno-setup

#inno-setup

Вопрос:

Я новичок в создании установщиков. Мне нужно создать форму с 3 текстовыми полями:

  1. Домен
  2. Имя пользователя
  3. Пароль пользователя

а затем сохранить их в реестре. Я уже знал, как сохранить данные в реестре.

Ответ №1:

Inno имеет гибкий механизм диалога / страницы, который позволяет создавать пользовательские страницы в потоке мастера. Смотрите CodeDlg.iss пример, прилагаемый к программе установки Inno, для получения хорошего примера того, как это сделать.

Ответ №2:

 [Code]
var
  lblDomain: TLabel;
  lblUserName: TLabel;
  lblPassword: TLabel;
  txtDomain: TEdit;
  txtUserName: TEdit;
  txtUserPassword: TPasswordEdit;

procedure frmDomainReg_Activate(Page: TWizardPage);
begin
end;

function frmDomainReg_ShouldSkipPage(Page: TWizardPage): Boolean;
begin
  Result := False;
end;

function frmDomainReg_BackButtonClick(Page: TWizardPage): Boolean;
begin
  Result := True;
end;

function frmDomainReg_NextButtonClick(Page: TWizardPage): Boolean;
begin
  Result := True;
end;

procedure frmDomainReg_CancelButtonClick(Page: TWizardPage; var Cancel, Confirm: Boolean);
begin
end;

function frmDomainReg_CreatePage(PreviousPageId: Integer): Integer;
var
  Page: TWizardPage;
begin
  Page := CreateCustomPage(
    PreviousPageId,
    'Domain Registration',
    'Enter Domain Registration Data'
  );

  { lblDomain }
  lblDomain := TLabel.Create(Page);
  with lblDomain do
  begin
    Parent := Page.Surface;
    Left := ScaleX(24);
    Top := ScaleY(24);
    Width := ScaleX(35);
    Height := ScaleY(13);
    Caption := 'Domain';
  end;

  { lblUserName }
  lblUserName := TLabel.Create(Page);
  with lblUserName do
  begin
    Parent := Page.Surface;
    Left := ScaleX(24);
    Top := ScaleY(56);
    Width := ScaleX(52);
    Height := ScaleY(13);
    Caption := 'User Name';
  end;

  { lblPassword }
  lblPassword := TLabel.Create(Page);
  with lblPassword do
  begin
    Parent := Page.Surface;
    Left := ScaleX(24);
    Top := ScaleY(88);
    Width := ScaleX(46);
    Height := ScaleY(13);
    Caption := 'Password';
  end;

  { txtDomain }
  txtDomain := TEdit.Create(Page);
  with txtDomain do
  begin
    Parent := Page.Surface;
    Left := ScaleX(120);
    Top := ScaleY(16);
    Width := ScaleX(185);
    Height := ScaleY(21);
    TabOrder := 0;
  end;

  { txtUserName }
  txtUserName := TEdit.Create(Page);
  with txtUserName do
  begin
    Parent := Page.Surface;
    Left := ScaleX(120);
    Top := ScaleY(48);
    Width := ScaleX(185);
    Height := ScaleY(21);
    TabOrder := 1;
  end;

  { txtUserPassword }
  txtUserPassword := TPasswordEdit.Create(Page);
  with txtUserPassword do
  begin
    Parent := Page.Surface;
    Left := ScaleX(120);
    Top := ScaleY(80);
    Width := ScaleX(185);
    Height := ScaleY(21);
    TabOrder := 2;
  end;

  with Page do
  begin
    OnActivate := @frmDomainReg_Activate;
    OnShouldSkipPage := @frmDomainReg_ShouldSkipPage;
    OnBackButtonClick := @frmDomainReg_BackButtonClick;
    OnNextButtonClick := @frmDomainReg_NextButtonClick;
    OnCancelButtonClick := @frmDomainReg_CancelButtonClick;
  end;

  Result := Page.ID;
end;

procedure InitializeWizard();
begin
  {this page will come after welcome page}
  frmDomainReg_CreatePage(wpWelcome);
end;
  

Комментарии:

1. Пожалуйста, немного опишите код, а не удаляйте его полностью.

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