Inno Setup ปรับแต่ง FinishedLabel ด้วย Pascal Script

Oct 06 2020

เป้าหมายของฉันกับ Inno Setup 6.x คือการปรับแต่งFinishedLabelข้อความในโค้ดนั่นคือ Pascal Script เหตุผลที่ฉันใช้ Pascal Script คือฉันต้องการปรับแต่ง / เปลี่ยนป้ายกำกับถ้าIsAdminMode()เป็นจริงเท่านั้น ฉันจะทำเช่นนั้นได้อย่างไร?

สองวิธีต่อไปนี้ใช้ไม่ได้:

  1. ใช้ค่าคงที่สคริปต์:

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

    สิ่งนี้แสดง "{code: GetFinishedLabel}" แทนที่จะเป็น "BLA"

  2. InitializeWizardปรับแต่งวิซาร์ดใน

    ตัวอย่างสมบูรณ์ (ล้มเหลว):

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

    FinishLabelยังคงแสดงข้อความเดิมจากDefault.isl

ความคิดใด ๆ ?

คำตอบ

2 pimpo Oct 06 2020 at 18:25

FinishedLabelมีการปรับปรุงในตอนท้ายของการติดตั้งให้เป็นไปตามปัจจัยต่างๆ ดังนั้นค่าที่ตั้งไว้InitializeWizardจึงถูกลบล้าง คุณต้องตั้งค่าข้อความที่กำหนดเองในภายหลังเช่นในCurPageChanged(wpFinished):

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

คุณอาจพิจารณาปรับปรุงโค้ดเพื่อทำสิ่งที่ Inno Setup จะทำเช่น:

  • คำนึงถึงหากจำเป็นต้องรีสตาร์ท ( FinishedRestartLabel);
  • คำนึงถึงหากมีการสร้างไอคอน ( FinishedLabelเทียบกับFinishedLabelNoIcons);
  • การปรับความสูงของฉลากให้พอดีกับข้อความ
  • เปลี่ยนRunListตำแหน่งตามความสูงของข้อความ