Inno Setup passt FinishedLabel mit Pascal Script an

Oct 06 2020

Mein Ziel mit Inno Setup 6.x ist es, den FinishedLabelText im Code anzupassen , dh Pascal Script. Der Grund, warum ich Pascal Script verwende, ist, dass ich das Label nur anpassen / ändern möchte, wenn IsAdminMode()es wahr ist. Wie kann ich das machen?

Die folgenden zwei Ansätze funktionieren nicht:

  1. Verwenden Sie eine Skriptkonstante:

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

    Dies zeigt "{code: GetFinishedLabel}" anstelle von "BLA".

  2. Passen Sie den Assistenten in an InitializeWizard.

    Vollständiges (fehlgeschlagenes) Beispiel:

    [Code]
    procedure InitializeWizard();
    begin
      WizardForm.FinishedLabel.Caption := 'BLA';
    end;
    

    Das FinishLabelzeigt noch den Originaltext vonDefault.isl

Irgendwelche Ideen?

Antworten

2 pimpo Oct 06 2020 at 18:25

Das FinishedLabelwird am Ende der Installation nach verschiedenen Faktoren aktualisiert. Ihr eingestellter Wert InitializeWizardwird also überschrieben. Sie müssen Ihre benutzerdefinierte Nachricht später festlegen, z. B CurPageChanged(wpFinished).:

procedure CurPageChanged(CurPageID: Integer);
begin
  if CurPageID = wpFinished then
  begin
    WizardForm.FinishedLabel.Caption := 'BLA';
  end;
end;

Sie können den Code verbessern, um das zu tun, was Inno Setup tun würde:

  • Berücksichtigt, wenn ein Neustart erforderlich ist ( FinishedRestartLabel);
  • Berücksichtigt, ob Symbole erstellt wurden ( FinishedLabelvs. FinishedLabelNoIcons);
  • Anpassen der Etikettenhöhe an die Nachricht;
  • Schaltposition RunListentsprechend der Nachrichtenhöhe.