加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-15 09:26:05 所属栏目:大数据 来源:网络整理
导读:在Inno Setup中,我有一个主要脚本是“核心系统”,这意味着我们的软件完全需要安装/运行所需的一切.另外,我正在为每个主要功能编写脚本文件,这些功能可能会也可能不会编译到安装程序中.在主脚本文件的顶部,我包含其他脚本文件… #include "AdditionalOption.i
在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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读