我使用 Inno Setup 6.x 的目标是自定义代码中的 FinishedLabel
文本,即 Pascal 脚本。我使用 Pascal 脚本的原因是我只想在 IsAdminMode()
为真时自定义/更改标签。我该怎么做?
以下两种方法不起作用:
使用脚本常量:
[Messages] FinishedLabel={code:GetFinishedLabel}
[Code] function GetFinishedLabel(Param: String): String; begin Result := 'BLA'; end;
这显示“{code:GetFinishedLabel}”而不是“BLA”。
在
InitializeWizard
中自定义向导。完整(失败)示例:
[Code] procedure InitializeWizard(); begin WizardForm.FinishedLabel.Caption := 'BLA'; end;
FinishLabel
仍然显示来自Default.isl
的原始文本
有什么想法吗?
最佳答案
FinishedLabel
根据各种因素在安装结束时更新。因此,您在 InitializeWizard
中设置的值被覆盖。您必须稍后设置自定义消息,例如在 CurPageChanged(wpFinished)
中:
procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID = wpFinished then
begin
WizardForm.FinishedLabel.Caption := 'BLA';
end;
end;
您可能会考虑改进代码以执行 Inno Setup 会执行的操作,例如:
- 考虑到,如果需要重启(
FinishedRestartLabel
); - 考虑到是否创建了图标(
FinishedLabel
与FinishedLabelNoIcons
); - 调整标签高度以适合消息;
- 根据消息高度移动
RunList
位置。
关于inno-setup - Inno Setup 使用 Pascal 脚本自定义 FinishedLabel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64224627/