我在我的安装程序中添加了一些自定义页面。这些页面从用户和磁盘收集一些数据,我想在最终安装步骤开始之前向用户展示这些数据。Inno Setup 有专门用于此目的的“准备安装”页面。
如何向此页面添加文本?默认情况下,它向我显示:
Destination location:
C:\Program Files\MyProgram
我想在这里附加一些文字。可能吗?
我在我的安装程序中添加了一些自定义页面。这些页面从用户和磁盘收集一些数据,我想在最终安装步骤开始之前向用户展示这些数据。Inno Setup 有专门用于此目的的“准备安装”页面。
如何向此页面添加文本?默认情况下,它向我显示:
Destination location:
C:\Program Files\MyProgram
我想在这里附加一些文字。可能吗?
找到它... 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部分的字符串。
更改以下代码:
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;
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;
供您参考:我尝试将此代码添加到接受的答案中,但它被拒绝了,我被告知要写评论或新答案。
此外,如果您只想将预先存在的消息更改为不那么通用的内容,您可以在 [Messages] 部分中更改它们:
IE
[Messages]
ReadyMemoDir=Server location:
默认消息是:
正如现有答案已经显示的那样,实现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;