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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |