在Inno Setup中将文本添加到"Ready Page"

Pet*_*aný 15 inno-setup

我在安装程序中添加了几个自定义页面.这些页面从用户和磁盘收集一些数据,我想在最终安装步骤开始之前向用户显示这些数据.Inno Setup完全为此目的准备了"准备安装"页面.

如何在此页面中添加文字?默认情况下,它显示给我:

Destination location:
  C:\Program Files\MyProgram
Run Code Online (Sandbox Code Playgroud)

我想在这里附上一些文字.可能吗?

Pet*_*aný 22

发现它... http://www.innosetup.org/ishelp/topic_scriptevents.htm:

function UpdateReadyMemo(Space, NewLine, MemoUserInfoInfo, MemoDirInfo, MemoTypeInfo, MemoComponentsInfo, MemoGroupInfo, MemoTasksInfo: String): String;

如果安装程序UpdateReadyMemo在Pascal脚本中找到事件函数,则在" 准备安装"向导页面成为活动页面时会自动调用该函数.它应该将要在" 准备安装"向导页面上的设置备忘录中显示的文本作为单个字符串返回,其中行由NewLine参数分隔.参数Space包含带空格的字符串.安装程序使用此字符串缩进设置.其他参数包含安装​​程序将用作设置部分的(可能为空)字符串.MemoDirInfo例如,参数包含Selected Directory部分的字符串.

  • 看到一些例子真是太好了。 (2认同)
  • 有关使用示例,请参阅 https://github.com/jrsoftware/issrc/blob/main/Examples/CodeDlg.iss – 或 [准备安装向导页面看起来为空](https://stackoverflow.com/q /53611072/850848) 或 [Inno Setup - 在“准备安装”页面上显示自定义组件](/sf/ask/4412062581/)。 (2认同)

小智 12

更改以下代码:

procedure CurPageChanged(CurPageID: Integer);
begin
  if CurPageID = wpReady then
  begin
    Wizardform.ReadyMemo.Lines.Add(''); { Empty string }
    Wizardform.ReadyMemo.Lines.Add('Setup HP-UX test created by Armand');
  end;
end;
Run Code Online (Sandbox Code Playgroud)

  • Inno 已经在 `UpdateReadyMemo` 事件函数中提供了这个钩子。 (2认同)
  • 非常优雅的解决方案。比更新备忘录简单得多。有一个小缺点,除非你做一些严肃的伎俩,但你只能在底部添加线条。此外,我认为它将框向下滚动到最后。 (2认同)
  • 仅当“ReadyMemo”备忘录包含任何默认内容时,此功能才有效。没有的话就不会显示。 (2认同)

Mar*_*cel 7

您可以ReadyMemo WizardPage使用此功能挂钩到设置过程:

function UpdateReadyMemo(Space, NewLine, MemoUserInfoInfo, MemoDirInfo, MemoTypeInfo, MemoComponentsInfo, MemoGroupInfo, MemoTasksInfo: String): String;

如果安装程序UpdateReadyMemo在 Pascal 脚本中找到事件函数,则当准备安装向导页面变为活动页面时,它会自动调用。它应该将要显示在准备安装向导页面上的设置备忘录中的文本作为单个字符串返回,各行由NewLine参数分隔。参数Space包含一个带空格的字符串。安装程序使用此字符串来缩进设置。其他参数包含安装​​程序将用作设置部分的(可能为空)字符串。MemoDirInfo例如,该参数包含所选目录部分的字符串。

官方文档:http : //www.innosetup.org/ishelp/topic_scriptevents.htm

这是一个简单的示例实现,它向 的默认内容添加一行ReadyMemo

function UpdateReadyMemo(Space, NewLine, MemoUserInfoInfo, MemoDirInfo, MemoTypeInfo, MemoComponentsInfo, MemoGroupInfo, MemoTasksInfo: String): String;
begin
    Result := ''

    if MemoUserInfoInfo <> '' then begin
        Result := MemoUserInfoInfo + Newline + NewLine;
    end;
    if MemoDirInfo <> '' then begin
        Result := Result + MemoDirInfo + Newline + NewLine;
    end;
    if MemoTypeInfo <> '' then begin
        Result := Result + MemoTypeInfo + Newline + NewLine;
    end;
    if MemoComponentsInfo <> '' then begin
        Result := Result + MemoComponentsInfo + Newline + NewLine;
    end;
    if MemoGroupInfo <> '' then begin
        Result := Result + MemoGroupInfo + Newline + NewLine;
    end;
    if MemoTasksInfo <> '' then begin
        Result := Result + MemoTasksInfo + Newline + NewLine;
    end;

    Result := Result + 'My custom string';
end;
Run Code Online (Sandbox Code Playgroud)

供您参考:我尝试将此代码添加到已接受的答案中,但遭到拒绝,我被告知要写评论或新答案。


who*_*ine 5

另外,如果您只想将现有消息更改为不太通用的消息,则可以在[消息]部分中进行更改:

[Messages]
ReadyMemoDir=Server location:
Run Code Online (Sandbox Code Playgroud)

默认消息是:

  • 向导就绪
  • ReadyLabel1
  • ReadyLabel2a
  • ReadyLabel2b
  • ReadyMemoUserInfo
  • ReadyMemoDir
  • ReadyMemoType
  • ReadyMemoComponents
  • ReadyMemoGroup
  • ReadyMemoTasks