如何使用定义的字符串中存在子字符串来控制 Inno Setup 6 脚本中文件的添加

How to control addition of file in Inno Setup 6 script using the presence of a substring in a defined string

我有两个执行相同操作的可执行文件,但一个是针对 DEV 环境构建的,另一个是针对 PROD 环境构建的。

my-app-dev.exe
my-app-prod.exe

一个 VERSION 参数总是传递到包含以下两种格式之一的构建版本的 Inno 构建脚本中:

"1.0.0"
"1.0.0-DEV"

[Files] 部分中,如果 VERSION 的当前值包含 DEV 后缀,但包括 my-app-prod.exe 如果没有?

我认为 Check 参数是解决此问题的方法,但我什至无法使最简单的情况起作用。

例如,尽管 Check 函数明确返回 False.

,但以下代码将文件添加到构建中
[Files]
Source: "my-app-dev.exe"; DestDir: {app}; Check: ShouldIncludeDev

function ShouldIncludeDev: Boolean;
begin
    Result := False;
end;

也许我一定遗漏了一些基本的东西...

基于这个答案 (Inno Setup IDE and ISCC/ISPP passing define) 你可以这样做:

  1. 通过命令行参数传递值:

    /DargDEV="DEV"
    
  2. 在你的 [Files] 部分你可以这样做:

    #ifdef argDEV
        Source: "my-app-dev.exe"; DestDir: {app};
    #else
        Source: "my-app-prod.exe"; DestDir: {app};
    #endif
    

备注

它使用 #ifdef pre-processor 指令。