自定义 TLabel 未显示在 Inno Setup 的 FinishedPage 上

Custom TLabel not displaying on FinishedPage in Inno Setup

我一定是遗漏了一些明显的东西。我正在尝试将 link 添加到 wpFinished 的发行说明中,但似乎无法显示:

我有一个文件 finishedPage.iss,我通过 #include "InnoDialogs\finishedPage.iss"; 包含了它 该文件包含以下内容:

[Run]
Filename: "{app}\bin\{#MyAppExeName}"; \
    Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; \
    Flags: nowait postinstall skipifsilen

[Code]
{ procedures to deal with page interaction }
procedure ReleaseNotesClick(Sender: TObject);
var
    errorCode: Integer;
begin
    ShellExec('','https://myUrl.com/Release_Notes', '', '', SW_SHOW, ewNoWait, errorCode)
end;

{ build the page }
procedure FinishedPage_Create;
var
    ReleaseNotesLink: TLabel;

begin

    ReleaseNotesLink := TLabel.Create(WizardForm);
    ReleaseNotesLink.Parent := WizardForm.FinishedPage;
    ReleaseNotesLink.Caption := 'Read the Releasenotes';
    ReleaseNotesLink.Enabled := True;
    ReleaseNotesLink.Visible := True;
    ReleaseNotesLink.AutoSize := True;
    ReleaseNotesLink.Left := WizardForm.FinishedLabel.Left;
    ReleaseNotesLink.Top := WizardForm.FinishedLabel.Top + ScaleY(100);
    ReleaseNotesLink.OnClick := @ReleaseNotesClick;
    ReleaseNotesLink.ParentFont := True;
    ReleaseNotesLink.Font.Style := ReleaseNotesLink.Font.Style + [fsUnderline, fsBold];
    ReleaseNotesLink.Font.Color := clBlue;
    ReleaseNotesLink.Cursor := crHand;

end;

在我的主安装程序文件的 CurPageChanged 过程中,我有:

procedure CurPageChanged(CurPageID: Integer);
begin
    if CurPageID = wpFinished then
        begin
            FinishedPage_Create();
        end;
end;

这编译得很好,但我无法让它显示出来。我也尝试了不同的位置,想也许它只是被其他东西吸引了。我正在使用相同的过程将元素添加到其他页面...

知道我遗漏了什么吗?

您的标签隐藏在 RunList 后面,它占据了页面的其余部分。

你必须缩小列表。例如:

WizardForm.RunList.Height := ScaleY(24);

ReleaseNotesLink.Left := WizardForm.RunList.Left;
ReleaseNotesLink.Top := WizardForm.RunList.Top + WizardForm.RunList.Height + ScaleY(8);