Inno setup InnoIDE图标作为参数错误

Inno setup InnoIDE图标作为参数错误,inno-setup,Inno Setup,根据客户的说法,我需要用不同的图标发布我的应用程序。为此,我定义了一个MyIcon参数 [Init] #define Client "BigOne" #if Client="BigOne" #define MyIcon ".\img\bigone\program.ico" #endif [Setup] SetupIconFile={#MyIcon} ;This does not work: the path cannot be found. 但是,如果没有参数定义,它就可以正常工作: [Se

根据客户的说法,我需要用不同的图标发布我的应用程序。为此,我定义了一个
MyIcon
参数

[Init]
#define Client "BigOne"
#if Client="BigOne"
#define MyIcon ".\img\bigone\program.ico"
#endif

[Setup]
SetupIconFile={#MyIcon}
;This does not work: the path cannot be found.
但是,如果没有参数定义,它就可以正常工作:

[Setup]
SetupIconFile=".\img\bigone\program.ico"

我哪里错了?

ISPP使用
==
作为比较运算符:

#if client == "bigone"
#define MyIcon ".\img\bigone\program.ico"
#elif client == "anotherone"
#define MyIcon ".\img\anotherone\program.ico"
#elif client == "someoneelse"
#define MyIcon ".\img\someonelse\program.ico"
#else
#define MyIcon ".\img\program.ico"
#endif
或者,您可以使用:

#define MyIcon ".\img\" + Client + "\program.ico"

无法在Inno设置5.5.4(u)中复制。而且,我看不出你的代码有任何错误。也许在预处理器中有一个问题,很难说,但对我来说你的代码工作得很好。顺便说一句,您使用的是哪个版本?我刚升级到Inno Setup 5.5.4(u),但没有任何更改。那么,我们需要比较一下我的系统和您的系统的不同之处。为了进行测试,我将脚本存储在这个伪文件夹树
C:\1\2\3\4\5\script.iss
,其中每个数字代表一个子文件夹。图标路径显然是
C:\1\2\3\4\5\img\bigone\program.ico
。你能给我看看你的吗?我这里也有,只是有更多的子文件夹:C:\1\2\3\4\5\6\7\8\Script.iss和C:\1\2\3\4\5\6\7\8\img\bigone\programmm.icoAARG,这是一个打字错误!(当然:-)你把
#expr SaveToFile(“C:\prepreprocessedscript.iss”)
放进去的想法很棒。我将无效的
{#MyIcon}
写入我的
DestDir
以查看它。工作得很好。谢谢你,特拉玛!Deanna,如果问题在equal运算符中,则不会声明
MyIcon
变量,预处理器将引发
未声明的标识符:“MyIcon”
错误。单等运算符在这里不是问题。这里有一个非常有趣的问题。编写
if Client=“BigOne”
确实不太管用。在第一个
if
之后是第二个:
if Client=“bigtoo”
。无论
客户机是什么,输入两个
if
。。。我正要写一个关于这个的新问题,但你提前解决了它!:-)@Nicolas然后根据您的描述,
=
赋值,就像大多数其他类似C语言一样,进一步混淆了事情。如果我的回答帮助你解决了你的问题,请将其标记为已接受。迪安娜,你的回答帮助了我,是的,非常感谢,但它没有提供我问题的答案@TLama也帮了我很大的忙,但没有回答我的问题——当然:问题是我实际代码中的一个拼写错误,而不是我发布的示例。非常抱歉,我不能将你们的回答标记为已接受-(