Inno setup Inno设置:自定义消息

Inno setup Inno设置:自定义消息,inno-setup,Inno Setup,我们将其他一些第三方软件与安装程序一起打包,并在安装过程中安装它们 我们产品的安装。我们以静默模式安装它们并捕获它们的退出代码, 因此,有时,它们会成功安装,并将exitcode设置为“3010”,这是需要重新启动的。 因此,在这些情况下,我们希望在最后显示重新启动页面,但希望给出一条自定义消息 在完成页面上显示自定义消息的最佳方式是什么 [Messages] #if FileExists("c:\RebootFile.txt")==0 FinishedRestartLabel=To co

我们将其他一些第三方软件与安装程序一起打包,并在安装过程中安装它们 我们产品的安装。我们以静默模式安装它们并捕获它们的退出代码, 因此,有时,它们会成功安装,并将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
我使用的是上面的代码,但是我无法为fileexists函数使用像{sd}或{tmp}这样的动态路径


有人能帮忙吗?

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

预处理器使用或简言之
#
起始语句。预处理在编译之前运行。它允许您有条件地修改脚本,在这个过程完成后,脚本将被编译。因此,使用上面的脚本,您实际上是在检查文件
c:\RebootFile.txt
是否存在于编译安装程序的机器上,并根据结果选择
finishedrestartabel
消息的值。但它从不将这两个文本编译成setup二进制文件

您可以从代码中修改
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;

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

预处理器使用或简言之
#
起始语句。预处理在编译之前运行。它允许您有条件地修改脚本,在这个过程完成后,脚本将被编译。因此,使用上面的脚本,您实际上是在检查文件
c:\RebootFile.txt
是否存在于编译安装程序的机器上,并根据结果选择
finishedrestartabel
消息的值。但它从不将这两个文本编译成setup二进制文件

您可以从代码中修改
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;

{tmp}
常量值在预处理时将是无用的…等等,您确定要通过预处理来实现这一点吗?您不想在运行时有条件地更改该消息吗?脚本将选择
finishedrestartabel
文本,这取决于该文件是否存在于安装程序的构建时,而不是在客户端计算机上的运行时。请编辑您的问题,并根据您的要求进行说明,好吗?如果需要重新启动,我们将在wpfinishedpage期间更改运行时的FinishedLabel消息。很好,但是只有一条消息文本将被编译到设置中(然后分发)。在我看来,使用预处理器检查某个文件是否存在(在编译安装程序的机器上),并根据其存在的结果将消息文本编译到安装程序中,这真的很奇怪。我觉得您想检查该文件是否存在于用户运行安装程序的计算机上,是吗?我们正在检查该文件是否存在,用户运行安装程序的位置,然后我们正在更改finishedlabel消息。
{tmp}
常量值在预处理时将无效…等等,你确定要通过预处理来实现吗?您不想在运行时有条件地更改该消息吗?脚本将选择
finishedrestartabel
文本,这取决于该文件是否存在于安装程序的构建时,而不是在客户端计算机上的运行时。请编辑您的问题,并根据您的要求进行说明,好吗?如果需要重新启动,我们将在wpfinishedpage期间更改运行时的FinishedLabel消息。很好,但是只有一条消息文本将被编译到设置中(然后分发)。在我看来,使用预处理器检查某个文件是否存在(在编译安装程序的机器上),并根据其存在的结果将消息文本编译到安装程序中,这真的很奇怪。我觉得您想检查用户运行安装程序的计算机上是否存在该文件,是吗?我们正在检查该文件是否存在,用户运行安装程序的位置,然后我们正在更改finishedlabel消息。