在Inno Setup中测试通过/ D命令行开关传递的参数失败

时间:2012-08-10 09:11:05

标签: inno-setup

我拨打ISCC /DENABLE_SIGNING=1 MyFile.iss,在MyFile.iss中我有:

#if ENABLE_SIGNING == 1
SignedUninstaller=yes
SignTool=mysigntool
#endif

ISPP失败,错误与#if ENABLE_SIGNING == 1

行完全相同
  

[ISPP]运算符不适用于此操作数类型。

但是,如果我在MyFile.iss中定义了ENABLE_SIGNING,那就没事了。此代码通过时没有错误:

#define ENABLE_SIGNING 1

#if ENABLE_SIGNING == 1
SignedUninstaller=yes
SignTool=mysigntool
#endif

修改

另外,还有另一个问题,当我使用/DENABLE_SIGNING=0时,测试#if ENABLE_SIGNING成功,而如果我使用#define ENABLE_SIGNING 0,则检查失败(意味着评估为false),因为它应该

1 个答案:

答案 0 :(得分:5)

从我现在运行的一些测试来看,命令行解释预处理器似乎将定义默认值作为字符串。因此,当您以这种方式修改条件时,它将正常工作:

; just for case when you wouldn't run ISCC from command line
#ifndef ENABLE_SIGNING
  #define ENABLE_SIGNING "1"
#endif

[Setup]
AppName=My Program 1
AppVersion=1.5
DefaultDirName={pf}\My Program

#if ENABLE_SIGNING == "1"
  SignedUninstaller=yes
  SignTool=mysigntool
#endif