Как отобразить увеличенное поле лицензии в установщике InnoSetup? - PullRequest
9 голосов
/ 21 декабря 2010

InnoSetup по умолчанию отображает лицензионное соглашение в очень маленькой текстовой области, которую пользователь никак не может увеличить.

Хотя я знаю, что большинство людей не читают их, я чувствую, что предоставление их в формате, который делает его особенно трудным для чтения, является плохой идеей и может стать частью защиты в суде.

Есть ли способ в InnoSetup для отображения лицензии в большом отдельном окне? Возможно, это уже готовый сценарий на Паскале?

Ответы [ 3 ]

13 голосов
/ 21 декабря 2010

Вы можете изменить размер WizardForm и переставить элементы управления в нем, если хотите увеличить его.Я сделал этот пример, чтобы показать вам, как изменить высоту формы для страницы лицензии.

[Setup]
AppName=StackOverflow large license box
AppVersion=1.0
CreateAppDir=no
DisableProgramGroupPage=yes
DefaultGroupName=My Program
UninstallDisplayIcon={app}\MyProg.exe
LicenseFile=license.txt
;OutputDir=userdocs:Inno Setup Examples Output

[Code]

var
  DefaultTop, 
  DefaultLeft, 
  DefaultHeight,
  DefaultBackTop, 
  DefaultNextTop, 
  DefaultCancelTop,
  DefaultBevelTop, 
  DefaultOuterHeight: Integer;

const 
  LicenseHeight = 600;

procedure InitializeWizard();
begin
  DefaultTop := WizardForm.Top;
  DefaultLeft := WizardForm.Left;
  DefaultHeight := WizardForm.Height;
  DefaultBackTop := WizardForm.BackButton.Top;
  DefaultNextTop := WizardForm.NextButton.Top;
  DefaultCancelTop := WizardForm.CancelButton.Top;
  DefaultBevelTop := WizardForm.Bevel.Top;
  DefaultOuterHeight := WizardForm.OuterNotebook.Height;

  WizardForm.InnerPage.Height := WizardForm.InnerPage.Height + (LicenseHeight - DefaultHeight);
  WizardForm.InnerNotebook.Height :=  WizardForm.InnerNotebook.Height + (LicenseHeight - DefaultHeight);
  WizardForm.LicensePage.Height := WizardForm.LicensePage.Height + (LicenseHeight - DefaultHeight);
  WizardForm.LicenseMemo.Height := WizardForm.LicenseMemo.Height + (LicenseHeight - DefaultHeight);
  WizardForm.LicenseNotAcceptedRadio.Top := WizardForm.LicenseNotAcceptedRadio.Top + (LicenseHeight - DefaultHeight);
  WizardForm.LicenseAcceptedRadio.Top := WizardForm.LicenseAcceptedRadio.Top + (LicenseHeight - DefaultHeight);

end;

procedure CurPageChanged(CurPageID: Integer);
begin
  if CurPageID = wpLicense then
  begin
    WizardForm.Top := DefaultTop - (LicenseHeight - DefaultHeight) div 2;
    WizardForm.Height := LicenseHeight;
    WizardForm.OuterNotebook.Height := WizardForm.OuterNotebook.Height + (LicenseHeight - DefaultHeight);
    WizardForm.CancelButton.Top := DefaultCancelTop + (LicenseHeight - DefaultHeight);
    WizardForm.NextButton.Top := DefaultNextTop + (LicenseHeight - DefaultHeight);
    WizardForm.BackButton.Top := DefaultBackTop + (LicenseHeight - DefaultHeight);
    WizardForm.Bevel.Top := DefaultBevelTop + (LicenseHeight - DefaultHeight);
  end
  else 
  begin
    WizardForm.Top := DefaultTop;
    WizardForm.Left := DefaultLeft;
    WizardForm.Height := DefaultHeight;
    WizardForm.OuterNotebook.Height := DefaultOuterHeight;
    WizardForm.CancelButton.Top := DefaultCancelTop;
    WizardForm.NextButton.Top := DefaultNextTop;
    WizardForm.BackButton.Top := DefaultBackTop;
    WizardForm.Bevel.Top := DefaultBevelTop;
  end;
end;

Скопируйте его в новый файл iss и предоставьте действительный файл license.txt для успешной компиляции.Скрипт протестирован с inno 5.4.0, но он должен работать с любым 5.x.

4 голосов
/ 22 января 2012

Изменение размера окна лицензии работало не слишком хорошо, поэтому вместо этого мы предоставили кнопку для просмотра лицензии в WordPad. Это работает на удивление хорошо; Мне скорее понравилось в конце. Код:

procedure ViewLicenseButtonClick(Sender: TObject);
var WordpadLoc: String;
    RetCode: Integer;
begin
  RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\WORDPAD.EXE', '', WordpadLoc);

  // on NT/2000 it's a REG_EXPAND_SZ, so expand constant ProgramFiles
  StringChange(WordpadLoc, '%ProgramFiles%', ExpandConstant('{pf}'));
  // remove " at begin and end pf string
  StringChange(WordpadLoc, '"', '');

  try
    ExtractTemporaryFile('LicenseAgreement.rtf')
  except
    MsgBox('Cannot extract license file.', mbError, mb_Ok);
  end;

  if not Exec(WordpadLoc, '"' + ExpandConstant('{tmp}\LicenseAgreement.rtf') + '"', '', SW_SHOW, ewNoWait, RetCode) then
    MsgBox('Cannot display license file.', mbError, mb_Ok);
end;

procedure CurPageChanged(CurPageID: Integer);
var ViewLicenseButton: TButton;
begin
  if CurPageID = wpLicense then begin
    ViewLicenseButton := TButton.Create(WizardForm.LicenseMemo.Parent);
    ViewLicenseButton.Caption := '&View in WordPad';
    ViewLicenseButton.Width := 120;
    ViewLicenseButton.Left := WizardForm.LicenseMemo.Left +
                        WizardForm.LicenseMemo.Width - ViewLicenseButton.Width;
    ViewLicenseButton.Top := WizardForm.LicenseMemo.Top +
                        WizardForm.LicenseMemo.Height + 16;
    ViewLicenseButton.OnClick := @ViewLicenseButtonClick;
    ViewLicenseButton.Parent := WizardForm.LicenseAcceptedRadio.Parent;
  end;
end;
0 голосов
/ 21 декабря 2010

Если вы используете директиву LicenseFile, то Inno ожидает простой текстовый или RTF-файл. Если вы предоставляете файл RTF, вы можете установить шрифт и другое простое форматирование (полужирный, курсив и т. Д.) По своему усмотрению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...