Inno Setup menyesuaikan FinishedLabel dengan Pascal Script

Oct 06 2020

Tujuan saya dengan Inno Setup 6.x adalah untuk menyesuaikan FinishedLabelteks dalam kode, yaitu Pascal Script. Alasan mengapa saya menggunakan Pascal Script adalah karena saya hanya ingin menyesuaikan / mengubah label jika IsAdminMode()benar. Bagaimana saya bisa melakukan itu?

Dua pendekatan berikut tidak berhasil:

  1. Gunakan konstanta skrip:

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

    Ini menunjukkan "{code: GetFinishedLabel}" bukan "BLA".

  2. Sesuaikan wizard di InitializeWizard.

    Contoh lengkap (gagal):

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

    Gambar FinishLabeldiam menunjukkan teks asli dariDefault.isl

Ada ide?

Jawaban

2 pimpo Oct 06 2020 at 18:25

Ini FinishedLabeldiperbarui di akhir penginstalan menurut berbagai faktor. Jadi nilai yang Anda tetapkan InitializeWizarddiganti. Anda harus mengatur pesan khusus Anda nanti, seperti di CurPageChanged(wpFinished):

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

Anda dapat mempertimbangkan untuk meningkatkan kode untuk melakukan apa yang akan dilakukan Inno Setup, seperti:

  • Memperhatikan, jika restart diperlukan ( FinishedRestartLabel);
  • Memperhatikan, jika ikon dibuat ( FinishedLabelvs. FinishedLabelNoIcons);
  • Menyesuaikan tinggi label agar sesuai dengan pesan;
  • Menggeser RunListposisi sesuai dengan tinggi pesan.