Inno Setup은 Pascal Script로 FinishedLabel을 사용자 정의합니다.

Oct 06 2020

Inno Setup 6.x의 목표 FinishedLabel는 코드 의 텍스트, 즉 Pascal Script 를 사용자 정의하는 것 입니다. 내가 Pascal Script를 사용하는 이유 IsAdminMode()는 true 인 경우에만 레이블을 사용자 정의 / 변경하고 싶기 때문 입니다. 어떻게 할 수 있습니까?

다음 두 가지 방법은 작동하지 않습니다.

  1. 스크립트 상수를 사용하십시오.

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

    "BLA"가 아닌 "{code : GetFinishedLabel}"이 표시됩니다.

  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);
  • 아이콘이 생성 된 경우 ( FinishedLabelvs. FinishedLabelNoIcons);
  • 메시지에 맞게 레이블 높이를 조정합니다.
  • RunList메시지 높이에 따라 위치 이동 .