16

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

如何向此页面添加文本?默认情况下,它向我显示:

Destination location:
  C:\Program Files\MyProgram

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

4

5 回答 5

23

找到它... https://jrsoftware.org/ishelp/index.php?topic=scriptevents

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

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

于 2009-08-02T09:01:09.177 回答
13

更改以下代码:

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;
于 2011-01-21T23:36:16.667 回答
7

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

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

如果安装程序UpdateReadyMemo在 Pascal 脚本中找到事件函数,则会在准备安装向导页面变为活动页面时自动调用它。它应该将要在“准备安装”向导页面上的设置备忘录中显示的文本作为单个字符串返回,其中行由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;

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

于 2018-10-11T18:21:26.097 回答
5

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

IE

[Messages]
ReadyMemoDir=Server location:

默认消息是:

  • 向导就绪
  • 就绪标签1
  • ReadyLabel2a
  • ReadyLabel2b
  • ReadyMemo用户信息
  • 就绪备忘录目录
  • ReadyMemoType
  • ReadyMemo 组件
  • ReadyMemo 组
  • ReadyMemoTasks
于 2013-06-26T17:05:16.493 回答
0

正如现有答案已经显示的那样,实现UpdateReadyMemo事件功能

实现该功能需要重新实现默认备忘录内容的程序集。下面是一种不太重复的实现方式。

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;

在此处输入图像描述

于 2020-07-22T13:02:24.127 回答