gpt4 book ai didi

inno-setup - 如何有选择地包含某些功能的某些代码?

转载 作者:行者123 更新时间:2023-12-02 14:51:28 27 4
gpt4 key购买 nike

在 Inno Setup 中,我有一个主脚本,它是“核心系统”,意味着我们的软件安装/运行所绝对需要的一切。此外,我正在为每个主要功能编写脚本文件,这些功能可能会也可能不会编译到安装程序中。在主脚本文件的顶部,我包含其他脚本文件...

#include "AdditionalOption.iss"
#include "AnotherOption.iss"

编译此主脚本时,编译者可以选择是否编译安装程序中的这些某些选项(以出于各种原因节省文件大小)。

当我在主脚本中有特定代码,而该代码依赖于这些附加脚本之一中的某些内容时,就会出现问题。例如...

procedure InitializeWizard();
begin
//Creates custom wizard page only if "AdditionalOption.iss" is compiled
CreatePageForAdditionalOption;
//Creates custom wizard page only if "AnotherOption.iss" is compiled
CreatePageForAnotherOption;
end;

InitializeWizard 只能定义一次,但我需要根据是否包含其他脚本有条件地调用其中的代码。这些过程驻留在适当的脚本文件中,因此如果用户排除其他脚本文件,它们当然不存在。

在 Delphi 中,我可以像这样使用条件:

{$DEFINE ADD_OPT}
{$DEFINE ANO_OPT}

procedure InitializeWizard();
begin
{$IFDEF ADD_OPT}
CreatePageForAdditionalOption;
{$ENDIF}
{$IFDEF ANO_OPT}
CreatePageForAnotherOption;
{$ENDIF}
end;

当然,这实际上并不是 Delphi。我怎样才能在 Inno Setup 中做这样的事情?

最佳答案

Inno Setup 有一个预处理器,使您能够使用 #ifdef#else#endif 您可以通过 iscc.exe /D 命令行参数进行设置)。您可以定义多个#ifdef并通过多个/D进行设置。

; Command line param => /DADD_OPT
#ifdef ADD_OPT
...
#else
...
#endif

我用它们来覆盖默认值:

; Command line param => /DENVIRONMENT=Prod
#ifdef ENVIRONMENT
#define Environment ENVIRONMENT
#else
#define Environment "Beta"
#endif

关于inno-setup - 如何有选择地包含某些功能的某些代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21538278/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com