如何在Inno Setup的setup节的Description参数中添加动态文本?

时间:2019-05-02 13:37:37

标签: inno-setup

我的Inno安装脚本中有一个[Tasks]定义,其中应包含一些动态文本:

[CustomMessages]
msgTaskGroupWithFormat=Group Head (Detail: %1) for frobnication

[Tasks]
Name: frobnicateTask; Description: "Frobnicate <dynamic>"; \
  GroupDescription:{cm:msgTaskGroupWithFormat, 'dynamic text to be embedded into CustomMessage'};" \
  Flags: unchecked;

也就是说,Description文本和GroupDescription文本不应在设置脚本中或通过CustomMessage进行硬编码,而应包含一些在运行时解析的动态文本。

理想情况下,我仍然可以通过{cm:msgWithFmt, param}使用CustomMessage,并且只能动态解析参数部分。

在Inno Setup中有可能吗?

1 个答案:

答案 0 :(得分:1)

这可以通过{code:...} constant完成。

它可以直接使用,也可以与{cm:...}常量组合以用于自定义消息:

[Code]
function DynamicText1(p: String): String;
begin
  Result := '...';
end;

function DynamicText2(p: String): String;
begin
  Result := '...';
end;
[CustomMessages]
msgTaskGroupWithFormat=Group Head (Detail: %1) for frobnication

[Tasks]
Name: frobnicateTask; Description: {code:DynamicText1}; \ 
  GroupDescription:{cm:msgTaskGroupWithFormat, {code:DynamicText2}};" \
  Flags: unchecked;

这里唯一需要注意的是,在Inno Setup解析说明文本时,动态文本必须是可计算的!也就是说,与Inno中的所有Code一样,必须检查何时发生回调以及此时是否所有Info均已可用。