Inno Setup 使用 Pascal 脚本自定义 FinishedLabel

Inno Setup customize FinishedLabel with Pascal Script

我使用 Inno Setup 6.x 的目标是自定义代码中的 FinishedLabel 文本,即 Pascal 脚本。我使用 Pascal Script 的原因是如果 IsAdminMode() 为真,我只想 customize/change 标签。我该怎么做?

以下两种方法不起作用:

  1. 使用脚本常量:

    [Messages]
    FinishedLabel={code:GetFinishedLabel}
    
    [Code]
    function GetFinishedLabel(Param: String): String;
    begin
      Result := 'BLA';
    end;
    

    这显示“{code:GetFinishedLabel}”而不是“BLA”。

  2. 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位置。