Inno Setup ปรับแต่ง FinishedLabel ด้วย Pascal Script
Oct 06 2020
เป้าหมายของฉันกับ Inno Setup 6.x คือการปรับแต่งFinishedLabelข้อความในโค้ดนั่นคือ Pascal Script เหตุผลที่ฉันใช้ Pascal Script คือฉันต้องการปรับแต่ง / เปลี่ยนป้ายกำกับถ้าIsAdminMode()เป็นจริงเท่านั้น ฉันจะทำเช่นนั้นได้อย่างไร?
สองวิธีต่อไปนี้ใช้ไม่ได้:
ใช้ค่าคงที่สคริปต์:
[Messages] FinishedLabel={code:GetFinishedLabel}[Code] function GetFinishedLabel(Param: String): String; begin Result := 'BLA'; end;สิ่งนี้แสดง "{code: GetFinishedLabel}" แทนที่จะเป็น "BLA"
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ตำแหน่งตามความสูงของข้อความ