Inno Setup personaliza FinishedLabel com Pascal Script
Meu objetivo com o Inno Setup 6.x é personalizar o FinishedLabeltexto no código, ou seja, Pascal Script. A razão pela qual estou usando Pascal Script é que só quero personalizar / alterar o rótulo se IsAdminMode()for verdadeiro. Como eu posso fazer isso?
As duas abordagens a seguir não funcionam:
Use uma constante de script:
[Messages] FinishedLabel={code:GetFinishedLabel}[Code] function GetFinishedLabel(Param: String): String; begin Result := 'BLA'; end;Isso mostra "{code: GetFinishedLabel}" em vez de "BLA".
Personalize o assistente em
InitializeWizard.Exemplo completo (com falha):
[Code] procedure InitializeWizard(); begin WizardForm.FinishedLabel.Caption := 'BLA'; end;A imagem
FinishLabelainda mostra o texto original deDefault.isl
Alguma ideia?
Respostas
O FinishedLabelé atualizado no final da instalação de acordo com vários fatores. Portanto, o valor definido em InitializeWizardé substituído. Você deve definir sua mensagem personalizada mais tarde, como em CurPageChanged(wpFinished):
procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID = wpFinished then
begin
WizardForm.FinishedLabel.Caption := 'BLA';
end;
end;
Você pode melhorar o código para fazer o que o Inno Setup faria, como:
- Levando em consideração se é necessário reiniciar (
FinishedRestartLabel); - Levando em consideração, se ícones foram criados (
FinishedLabelvs.FinishedLabelNoIcons); - Ajustar a altura da etiqueta para caber na mensagem;
- Mudança de
RunListposição de acordo com a altura da mensagem.