默认情况下,InnoSetup会在非常小的文本区域显示许可协议,用户无法以任何方式扩大规模。
虽然我知道大多数人都没有阅读这些内容,但我觉得以一种特别难以阅读的格式提供它是一个坏主意,并且可能成为法庭辩护的一部分。
InnoSetup有什么方法可以在一个大的单独窗口中显示许可证吗?可能是预先推出的Pascal脚本吗?
答案 0 :(得分:13)
如果要将其更大,可以更改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。
答案 1 :(得分:4)
调整许可证框的大小不是很好,所以我们最后提供了一个按钮来查看写字板中的许可证。这非常好用;我最后很喜欢它。代码:
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;
答案 2 :(得分:0)
如果您使用LicenseFile指令,则Inno需要纯文本或RTF文件。如果您提供RTF文件,您可以根据需要设置字体和其他简单格式(粗体,斜体等)。