我的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中有可能吗?
答案 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均已可用。