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

編集

また、もう 1 つの問題があり/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 に答える