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

时间:2009-08-02 08:20:27

标签: inno-setup

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

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

Destination location:
  C:\Program Files\MyProgram

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

5 个答案:

答案 0 :(得分:22)

找到它...... http://www.innosetup.org/ishelp/topic_scriptevents.htm

  

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

     

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

答案 1 :(得分: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;

答案 2 :(得分:5)

此外,如果您只想将预先存在的消息更改为不太通用的消息,可以在[消息]部分更改它们:

[Messages]
ReadyMemoDir=Server location:

默认消息为:

  • WizardReady
  • ReadyLabel1
  • ReadyLabel2a
  • ReadyLabel2b
  • ReadyMemoUserInfo
  • ReadyMemoDir
  • ReadyMemoType
  • ReadyMemoComponents
  • ReadyMemoGroup
  • ReadyMemoTasks

答案 3 :(得分:4)

使用此功能,您可以进入ReadyMemo WizardPage的设置过程:

  

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

     

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

位于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;

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

答案 4 :(得分:0)

现有答案已经显示出来,请实施UpdateReadyMemo event function

要实现此功能,需要重新实现默认备注内容的组合。下面是一种不太重复的实现方式。

procedure AddToReadyMemo(var Memo: string; Info, NewLine: string);
begin
  if Info <> '' then Memo := Memo + Info + Newline + NewLine;
end;

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

  Result := Result + 'Additional custom information';
end;

enter image description here