1

我打电话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,则检查失败(意味着评估为假),这是应该的。

4

1 回答 1

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
于 2012-08-10T09:23:51.560 回答