Inno设置:自定义消息

时间:2013-07-29 11:59:04

标签: inno-setup

我们将一些其他第三方软件与我们的安装程序一起打包,并在此期间安装它们 安装我们的产品。我们以静默模式安装它们并捕获它们的退出代码, 所以sotimes,他们成功安装并提供exitcode为“3010”,这是需要重新启动。 因此,在这些情况下,我们希望在最后显示重新启动页面,但是想要提供自定义消息。

在完成页面上显示自定义消息的最佳方式是什么?

[Messages]
#if FileExists("c:\RebootFile.txt")==0 
  FinishedRestartLabel=To complete the installation of ConditionalMessageOnWizard, Setup must restart your computer. Would you like to restart now?
#else
  FinishedRestartLabel=Reboot Required
#endif

我正在使用上面的代码,但我无法使用{sd}或{tmp}之类的动态路径来处理fileexists函数。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

在澄清您的问题之后,我们发现您确实想要检查某个文件是否存在,并在运行时有条件地更改FinishedLabel标题。

预处理器使用#emit或简短的#起始语句。并且在编译之前运行预处理。它允许您有条件地修改脚本,也就是说,在完成此过程之后,编译脚本。因此,使用上面的脚本实际上是检查,如果正在编译设置的机器上存在文件c:\RebootFile.txt,则根据结果,它会选择FinishedRestartLabel消息的值。但它永远不会将两个文本编译成设置二进制文件。

您可以修改代码中的FinishedLabel字幕,例如这条路。在那里你可以毫无问题地扩展常量:

[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program

[Code]
function NeedRestart: Boolean;
begin
  Result := True;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
  if not FileExists(ExpandConstant('{sd}\RebootFile.txt')) then
    WizardForm.FinishedLabel.Caption := 'RebootFile NOT found. Restart ?'
  else
    WizardForm.FinishedLabel.Caption := 'RebootFile WAS found. Restart ?';
end;