我希望将一个路径(通过命令行arg /D传递给脚本编译器)传递给我的可执行文件,让我的脚本使用GetFileVersion确定应用程序版本号,但是语法不正确。如何将参数传递给GetFileVersion?错误是:输入文件中的非法字符:'#‘(0x23)
#define srcpath SOURCEPATH
#define ApplicationVersion GetFileVersion(#srcpath)//error here!!!!!!
[Setup]
AppVersion={#ApplicationVersion}
[Files]
Source: "MyDllTesting.dll"; Flags: dontcopy
Source: "{srcpath}MyApplication1.exe"; DestDir: "{app}\MyApplication1"发布于 2019-01-25 16:32:51
首先,SOURCEPATH是一个Inno安装程序预定义变量,所以您需要为命令行“变量”使用另一个名称。我将使用SOURCE_PATH。
第二,正确的语法是:
#define ApplicationVersion GetFileVersion(SOURCE_PATH)(即没有散列)
为什么没有散列,在我的回答中
为什么预处理程序在#include指令中的行为不同,然后在[Files]节中的安装脚本中
虽然原因基本上是相同的,但是为什么在SOURCEPATH之前不使用散列呢?
#define srcpath SOURCEPATH相反,您忽略了[Files]节条目中的哈希。正确的语法是:
[Files]
Source: "{#srcpath}MyApplication1.exe"; DestDir: "{app}\MyApplication1"不需要定义srcpath变量。SOURCE_PATH也是可变的。因此,您可以在任何表达式中直接使用它:
#define ApplicationVersion GetFileVersion(SOURCE_PATH)
[Files]
Source: "{#SOURCE_PATH}MyApplication1.exe"; DestDir: "{app}\MyApplication1"发布于 2019-08-30 19:05:48
从安装前处理器:命令行编译器的执行上的文档中,我可以使用/D选项定义一个名为"MyCustomParam"的命令行参数,如下所示:
.\ISCC.exe /DMyCustomParam=MyParamValue "MySetupScript.iss"然后,我编写了我的安装脚本,如下所示,它获得了为命令行上的参数定义的值:
[Setup]
AppName={#MyCustomParam}https://stackoverflow.com/questions/54368198
复制相似问题