Inno Setup FinishedLabel'i Pascal Script ile özelleştirin

Oct 06 2020

Inno Setup 6.x ile amacım, FinishedLabelmetni koddaki, yani Pascal Script'i özelleştirmektir . Pascal Script'i kullanmamın nedeni, etiketi yalnızca IsAdminMode()doğruysa özelleştirmek / değiştirmek istememdir. Bunu nasıl yapabilirim?

Aşağıdaki iki yaklaşım işe yaramıyor:

  1. Komut dosyalı bir sabit kullanın:

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

    Bu, "BLA" yerine "{code: GetFinishedLabel}" i gösterir.

  2. Sihirbazı içinde özelleştirin InitializeWizard.

    Tam (başarısız) örnek:

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

    FinishLabelHala orijinal metin gösterirDefault.isl

Herhangi bir fikir?

Yanıtlar

2 pimpo Oct 06 2020 at 18:25

FinishedLabelÇeşitli faktörlere göre yüklemenin sonunda güncellenir. Böylece InitializeWizard, girdiğiniz değer geçersiz kılınır. Özel mesajınızı aşağıdaki gibi daha sonra ayarlamanız gerekir CurPageChanged(wpFinished):

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

Inno Kurulumunun yapacağı şeyi yapmak için kodu iyileştirmeyi düşünebilirsiniz, örneğin:

  • Yeniden başlatma gerekirse hesaba katılır ( FinishedRestartLabel);
  • Simgeler oluşturulmuşsa ( FinishedLabelvs. FinishedLabelNoIcons) dikkate alındığında ;
  • Mesaja uyacak şekilde etiket yüksekliğini ayarlama;
  • RunListMesaj yüksekliğine göre konum değiştirme .