Inno Setup personalizza FinishedLabel con Pascal Script
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:
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".
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
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.