结合其他#defines的Inno Setup预处理器#define

时间:2018-02-19 15:11:34

标签: macros installer inno-setup

我有一个Inno安装脚本。

在此Inno设置脚本中,#define名为InstallParameters。这是程序的命令行参数所在的位置。命令行参数将是四个标志中的任何一个,/v/i/a/c后跟参数。例如,这里是InstallParameters的平均输入:

#define InstallParameters "/v Local Area Connection /i 111.11.11.11"

或者:

#define InstallParameters "/a Device Name /c Customer Name"

或者:

#define InstallParameters "/v Local Area Connection /i 111.11.11.11 /a Device Name /c Customer Name"

或者后跟参数的任何组合。

我想做的是将四个参数变成变量本身,即#define的合并。

这是我的理想(请注意,用于合并#define的语法完全是虚构的):

#define Connection "/v Local Area Connection"
#define IPaddress "/i 1.1.1.1"
#define DeviceName "/a Device Name"
#define CustName "/c Customer"

#define InstallParameters "{#Connection} {#IPaddress} {#DeviceName} {#CustName}"
唉,我尝试过的盲目尝试都没有奏效(其中一些是编译的,但这很好)。

老实说,我不知道这是 Pascal 的事情还是 Inno安装脚本的事情。我在googles上的尝试并没有带来任何有价值的东西,因为我对这两种语言/文字都不太了解,无法提出有价值的问题。

有谁知道这种事情 - #define的合并 - 是否可能?并且,如果是的话,怎么做?

1 个答案:

答案 0 :(得分:3)

#define directive之后可以跟一个类似C的表达式。

在表达式中,您可以使用+运算符来连接字符串(在C中实际不能使用的字符串)

#define InstallParameters Connection + " " + IPaddress + " " + DeviceName + " " + CustName

另见Inno Setup Preprocessor: Expression Syntax。虽然它只是部分有用。