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

sas*_*alm 1 inno-setup

我打电话ISCC /DENABLE_SIGNING=1 MyFile.iss,在MyFile.iss我有:

#if ENABLE_SIGNING == 1
SignedUninstaller=yes
SignTool=mysigntool
#endif
Run Code Online (Sandbox Code Playgroud)

ISPP失败并且错误地在以下行中出现错误#if ENABLE_SIGNING == 1:

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

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

#define ENABLE_SIGNING 1

#if ENABLE_SIGNING == 1
SignedUninstaller=yes
SignTool=mysigntool
#endif
Run Code Online (Sandbox Code Playgroud)

编辑

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

TLa*_*ama 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
Run Code Online (Sandbox Code Playgroud)