我在安装程序中添加了几个自定义页面。这些页面从用户和磁盘收集一些数据,我想在最终安装步骤开始之前向用户显示这些数据。 Inno Setup完全为此目的准备了“准备安装”页面。
如何在此页面中添加文字?默认情况下,它显示给我:
Destination location:
C:\Program Files\MyProgram
我想在这里附上一些文字。有可能吗?
答案 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:
默认消息为:
答案 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;