Inno setup Inno安装程序使用Pascal脚本自定义FinishedLabel

Inno setup Inno安装程序使用Pascal脚本自定义FinishedLabel,inno-setup,wizard,pascalscript,Inno Setup,Wizard,Pascalscript,Inno Setup 6.x的目标是定制代码中的FinishedLabel文本,即Pascal脚本。我之所以使用Pascal脚本,是因为我只想在IsAdminMode()为true时自定义/更改标签。我该怎么做 以下两种方法不起作用: 使用脚本常量: [Messages] FinishedLabel={code:GetFinishedLabel} [代码] 函数GetFinishedLabel(参数:String):String; 开始 结果:='BLA'; 结束; 这将显示“{code:G

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

以下两种方法不起作用:

  • 使用脚本常量:

    [Messages]
    FinishedLabel={code:GetFinishedLabel}
    
    [代码]
    函数GetFinishedLabel(参数:String):String;
    开始
    结果:='BLA';
    结束;
    
    这将显示“{code:GetFinishedLabel}”,而不是“BLA”

  • InitializeWizard
    中自定义向导

    完整(失败)示例:

    [代码]
    过程初始化Wizard();
    开始
    WizardForm.FinishedLabel.Caption:=“BLA”;
    结束;
    
    FinishLabel
    仍然显示来自
    Default.isl


  • 有什么想法吗?

    安装结束时,会根据各种因素更新
    FinishedLabel
    。因此,您在
    InitializeWizard
    中设置的值将被覆盖。您必须稍后设置自定义消息,例如在
    CurPageChanged(wpfished)
    中:

    过程CurPageChanged(CurPageID:Integer);
    开始
    如果CurPageID=wpFinished,则
    开始
    WizardForm.FinishedLabel.Caption:=“BLA”;
    结束;
    结束;
    

    <>你可以考虑改进代码来做Inno Setup会做的事情,比如:

    • 考虑到是否需要重新启动(
      finishedrestartabel
    • 考虑到是否创建了图标(
      FinishedLabel
      vs.
      FinishedLabelNoIcons
    • 调整标签高度以适应信息
    • 根据消息高度移动
      RunList
      位置