Is it possible for one .iss file to produce different setup exes at the same time? maybe with multiple [Setup] sections?
2 回答
不能同时创建多个输出设置 exe,但可以从单个脚本创建多个。
关键是使用 ISPP#define
和#ifdef
/或#if
指令来指定脚本的某些部分,这些部分仅在定义特定变量或赋予特定值时才编译。iscc
然后,您可以使用批处理脚本调用/dVAR
or/dVAR="VALUE"
参数(相当于 a #define
)来为每次编译选择不同的条件。
但是,这仅在脚本基本相同时才真正有用(例如,如果您想为应用程序的不同“版本”制作单独的安装程序,而不是包含最大版本的所有文件并在运行时决定安装哪个) . 如果您的脚本彼此完全不同,那么您应该只创建单独的脚本并从批处理文件或自动构建脚本编译它们。
测试结果:
通过运行一个简单的测试......不,这是不可能的。首先,您可以在脚本中的多个位置引入部分。考虑您可以在脚本中执行以下操作:
[Setup]
AppName=My Program 1
AppVersion=1.5
[Files]
Source: "MyProg.exe"; DestDir: "{app}"
[Setup]
DefaultDirName={pf}\My Program
从中可以看出,[Setup]
如果您可以在一个脚本文件中为更多部分编写脚本,编译器将无法识别哪个部分属于哪个设置。
解决方法:
但是,如果您需要在基本级别上自动化构建过程,您可以创建一个批处理文件并通过命令行为所有脚本运行编译器。请参阅the reference
命令行编译器用法。
如果您将使用相同的输出目录编译多个脚本,请不要忘记OutputBaseFilename
为每个脚本文件指定不同的指令值(输出 exe 名称)。