我拨打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),因为它应该
答案 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