inno-setup - Inno Setup 使用 Pascal 脚本自定义 FinishedLabel

标签 inno-setup wizard pascalscript

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

以下两种方法不起作用:

  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);
  • 考虑到是否创建了图标(FinishedLabelFinishedLabelNoIcons);
  • 调整标签高度以适合消息;
  • 根据消息高度移动 RunList 位置。

关于inno-setup - Inno Setup 使用 Pascal 脚本自定义 FinishedLabel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64224627/

相关文章:

java - 如何删除 swt/jface 中的向导容器标题栏

inno-setup - 使用 Inno Setup 将 bool 值转换为字符串

windows-installer - 捕获其他安装程序文件的事件,例如 Inno Setup 中的 Notepad++ setup

inno-setup - 使用文件部分自定义页面中的两个/多个选定目录

python - Py2exe、Tkinter 和安装文件有问题吗?

inno-setup - 如何使用 inno setup 重命名文件

windows - 检查 Inno Setup 中是否存在指向特定目标的快捷方式

inno-setup - 从欢迎屏幕中删除版本文本

asp.net-mvc-3 - 在 MVC 和 Razor 中创建向导步骤

drupal - "Drupal way"向导步骤?