我们将一些其他第三方软件与我们的安装程序一起打包,并在此期间安装它们 安装我们的产品。我们以静默模式安装它们并捕获它们的退出代码, 所以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函数。
有人可以帮忙吗?
答案 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;