如何向自定义 Inno Setup 欢迎标签添加可点击链接?

问题描述 投票:0回答:1

我有一个带有自定义

WelcomeLabel2
消息的 Inno Setup 程序。

[Messages]
WelcomeLabel2=Lorem ipsum dolor sit amet CLICK_HERE consectetur adipiscing elit.

我正在尝试将

CLICK_HERE
设为可点击的网站链接。

我想知道的另一件事是如何使这个

CLICK_HERE
文本粗体

我怎样才能实现这个目标?

inno-setup
1个回答
16
投票

这并不容易。

要创建一个整体可点击的标签,您可以使用如下代码:

procedure OpenBrowser(Url: string);
var
  ErrorCode: Integer;
begin
  ShellExec('open', Url, '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode);
end;

procedure LinkClick(Sender: TObject);
begin
  OpenBrowser('https://www.example.com/');
end;

procedure InitializeWizard;
var
  Link: TLabel;
begin
  Link := TLabel.Create(WizardForm);
  Link.Left := ???;
  Link.Top := ???;
  Link.Parent := WizardForm.WelcomePage;
  Link.Caption := 'CLICK_HERE';
  Link.OnClick := @LinkClick;
  Link.ParentFont := True;
  Link.Font.Style := Link.Font.Style + [fsUnderline, fsBold];
  Link.Font.Color := clBlue;
  Link.Cursor := crHand;
end;

另请参阅安装时在 Inno Setup 中显示许可协议链接


尽管创建一个只有部分文本可点击的标签要困难得多。如果文本适合一行,则可以通过将三个标签彼此相邻堆叠(首先是前导静态文本,然后是链接,然后是尾随静态文本)来实现。但如果文本无法容纳在一行中,则这是不可行的,因为标签会相互重叠。


或者,您可以创建带有链接的 RTF 文档并使用只读格式呈现它

TRichEditViewer
:

procedure InitializeWizard;
var
  RichViewer: TRichEditViewer;
begin
  RichViewer := TRichEditViewer.Create(WizardForm);
  RichViewer.Left := WizardForm.WelcomeLabel2.Left;
  RichViewer.Top := WizardForm.WelcomeLabel2.Top;
  RichViewer.Width := WizardForm.WelcomeLabel2.Width;
  RichViewer.Height := WizardForm.WelcomeLabel2.Height;
  RichViewer.Parent := WizardForm.WelcomeLabel2.Parent;
  RichViewer.BorderStyle := bsNone;
  RichViewer.TabStop := False;
  RichViewer.ReadOnly := True;
  WizardForm.WelcomeLabel2.Visible := False;
   
  RichViewer.RTFText :=
    '{\rtf1 Lorem ipsum dolor sit amet ' +
    '{\b {\field{\*\fldinst{HYPERLINK "https://www.example.com/" }}' + 
    '{\fldrslt{CLICK_HERE}}}} ' +
    'consectetur adipiscing elit.}';
end;

您需要 Unicode 版本(从 Inno Setup 6 开始的唯一版本),请参阅 如何使用 RichEditViewer 在 Inno Setup 中添加可点击的链接到自定义页面?

要更改链接颜色,请参阅如何在 Inno Setup 中更改 RTF 文本中超链接的颜色


正如 @Bill_Stewart 评论的那样,您应该避免以提升的权限启动浏览器。解决方案请参见非提升模式卸载后如何打开网站?

© www.soinside.com 2019 - 2024. All rights reserved.