在运行时更改消息/文本(Inno Setup)

时间:2012-02-14 11:03:49

标签: inno-setup

在innosetup脚本中,可以定义如下消息:

[Messages]
WelcomeLabel2=This wizard will update [name] to version [name/ver]

现在我想在运行时更改此消息,如下所示:

procedure InitializeWizard;
begin
    //this doesn't work        
    WelcomeLabel2=NEW MESSAGE 
end;

这样做的正确方法是什么?我想动态更改欢迎页面的内容,以显示安装程序是执行新安装还是更新。基于安装目录中是否存在某些可执行文件。

2 个答案:

答案 0 :(得分:5)

单向;

[Languages]
Name: "en"; MessagesFile: "compiler:Default.isl"

[CustomMessages]
en.WelcomeLabel2_ForInstall=intstall {#SetupSetting("AppName")}, {#SetupSetting("AppVersion")}
en.WelcomeLabel2_ForUpdate=update {#SetupSetting("AppName")} to {#SetupSetting("AppVersion")}

[code]
procedure InitializeWizard(); 
var
  message: string;
begin 
    //some logic
    message := 'WelcomeLabel2_ForUpdate';
    WizardForm.WelcomeLabel2.Caption := CustomMessage(message);
end;

procedure CurPageChanged(CurPageID: Integer);
begin
  case CurPageID of
      wpFinished : WizardForm.FinishedLabel.Caption := 'bla bla';
  end;
end;

答案 1 :(得分:0)

嗯,我认为这不行。一种方法是为安装程序创建两个页面 - 一个包含安装过程的布局,另一个包含更新过程的布局。然后,以手动决定显示哪一个的方式更改页面顺序。

可以在我的回答here中找到将新页面集成到流程中的示例。