Inno Setup personalizza FinishedLabel con Pascal Script

Oct 06 2020

Il mio obiettivo con Inno Setup 6.x è personalizzare il FinishedLabeltesto nel codice, cioè Pascal Script. Il motivo per cui sto usando Pascal Script è che voglio solo personalizzare / cambiare l'etichetta se IsAdminMode()è vero. Come lo posso fare?

I due approcci seguenti non funzionano:

  1. Usa una costante con script:

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

    Questo mostra "{code: GetFinishedLabel}" invece di "BLA".

  2. Personalizza la procedura guidata in InitializeWizard.

    Esempio completo (non riuscito):

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

    Il FinishLabelancora mostra il testo originale daDefault.isl

Qualche idea?

Risposte

2 pimpo Oct 06 2020 at 18:25

Il FinishedLabelviene aggiornato al termine dell'installazione in base a vari fattori. Quindi il valore impostato in InitializeWizardviene sovrascritto. Devi impostare il tuo messaggio personalizzato in un secondo momento, ad esempio in CurPageChanged(wpFinished):

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

Potresti considerare di migliorare il codice per fare ciò che farebbe Inno Setup, come:

  • Tenendo conto, se è necessario riavviare ( FinishedRestartLabel);
  • Tenendo conto, se le icone sono state create ( FinishedLabelvs. FinishedLabelNoIcons);
  • Regolazione dell'altezza dell'etichetta per adattarla al messaggio;
  • RunListPosizione di spostamento in base all'altezza del messaggio.