macros - 将 Inno Setup 预处理器 #define 与其他 #define 结合起来

标签 macros installation inno-setup

我有一个 Inno Setup 脚本。

在此 Inno Setup 脚本中是 #defineInstallParameters 。这是程序的命令行参数所在的位置。命令行参数将是四个标志中的任何一个: /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 Setup脚本的东西。我在谷歌上的尝试没有得到任何有值(value)的结果,因为我对这两种语言/脚本都没有足够的了解来提出有值(value)的查询。

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

最佳答案

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

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

#define InstallParameters Connection + " " + IPaddress + " " + DeviceName + " " + CustName
<小时/>

另请参阅Inno Setup Preprocessor: Expression Syntax 。尽管它只是部分有帮助。

关于macros - 将 Inno Setup 预处理器 #define 与其他 #define 结合起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48869006/

相关文章:

inno-setup - Inno Setup 的应用程序发布者使安装程序在 Windows 7 UAC 提示上不显示,但在 Windows 10 上显示

inno-setup - 创新设置 : How to expand preprocessor variable in #error directive message

windows - InnoSetup - 如何将 setup.exe 变成 875kB?以便用户更快地下载它并且在下载时它会下载另一个?

c - 避免重复大小写值的宏

installation - 安装 Bootstrap 如何检测是否安装了先决条件?

linux - 找不到 chmod[metasploit 安装]

c# - 安装 Visual Studio 2015 更新 1 给我很多 : "package did not load correctly"

macros - 如何匹配宏中的方法?

C++使用宏定义单个类的类成员

macros - dbt_project config-version :2 中宏的使用