如何在Inno Setup中显示超链接?

14

我正在制作一个验证程序,在我的Inno Setup安装程序中检查机器上是否安装了Microsoft更新,如果没有安装,则显示一个简单的消息框告诉用户需要更新,这是消息代码:

MsgBox(
  'Your system requires an update supplied by Microsoft. ' +
  'Please follow this link to install it: ' + 
  'http://www.microsoft.com/downloads/details.aspx?FamilyID=1B0BFB35-C252-43CC-8A2A-6A64D6AC4670&displaylang=en',
  mbInformation, MB_OK);

我想把URL变成一个网页超链接,但是我一直没弄明白如何实现,在Inno Setup中是否可以将文本添加为超链接?

谢谢。

1个回答

17

MsgBox()函数在Inno Setup中是标准Windows MessageBox()函数的一个包装器,据我所知它不支持嵌入式链接,因此无法在其中简单地显示链接。

然而,您可以通知用户需要更新,并询问他们是否要在默认浏览器中打开链接。例如:

function InitializeSetup(): Boolean;
var
  ErrCode: integer;
begin
  if MsgBox('Your system requires an update supplied by Microsoft. Would you like to visit the download page now?', mbConfirmation, MB_YESNO) = IDYES
  then begin
    ShellExec('open', 'http://www.microsoft.com/downloads/details.aspx?FamilyID=1B0BFB35-C252-43CC-8A2A-6A64D6AC4670&displaylang=en',
      '', '', SW_SHOW, ewNoWait, ErrCode);
  end;
  Result := False;
end;

这段代码会中止安装,但你可以创建一个自定义页面来检查是否已经安装了更新,并防止导航到下一页。然而,如果更新需要系统重新启动才能安装,则此方法将无效。


1
提供的答案在Windows 7上运行良好,但在Windows 8上无法正常工作(至少在我的设置中是如此)。我不得不将“ShellExec”更改为“ShellExecAsOriginalUser”。 - Jens Holst Schumacher
@JensHolstSchumacher:谢谢你,你可以编辑答案,并加上额外信息,这样更有经验的用户就会批准它。 - Deanna
@JensHolstSchumacher,你知道那是否仍然是这种情况吗?我想测试一下,但我没有Windows 8。 - traveler3468

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接