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

Bob*_*Bob 2 macros installation inno-setup

我有一个 Inno Setup 脚本。

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

#define InstallParameters "/v Local Area Connection /i 111.11.11.11"
Run Code Online (Sandbox Code Playgroud)

或者:

#define InstallParameters "/a Device Name /c Customer Name"
Run Code Online (Sandbox Code Playgroud)

或者:

#define InstallParameters "/v Local Area Connection /i 111.11.11.11 /a Device Name /c Customer Name"
Run Code Online (Sandbox Code Playgroud)

或者标志后跟参数的任意组合。

我想做的是将四个参数本身变成变量,将#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}"
Run Code Online (Sandbox Code Playgroud)

唉,我尝试过的盲目尝试都没有奏效(不过,其中一些可以编译,这很好)。

老实说,我不知道这是Pascal 的东西还是Inno Setup 脚本的东西。我在 google 上的尝试没有产生任何有价值的东西,因为我对这两种语言/脚本的了解都不够,无法提出有价值的查询。

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

Mar*_*ryl 5

#define指令后面可以跟一个类似 C 的表达式。

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

#define InstallParameters Connection + " " + IPaddress + " " + DeviceName + " " + CustName
Run Code Online (Sandbox Code Playgroud)

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

  • 哎哟!奥卡姆剃刀切得很深。我尝试了所有我能想到的方法,除了最明显的答案,当然,这个答案是有效的。只需将它们“+”在一起即可! (2认同)