我希望使用命令行构建我的Inno Setup脚本,并且我希望将产品版本号作为参数传递。我试图像这样实现它:
[setup]
VersionInfoVersion={param:version|0.0.0.0}
然而,编译器通知我这对该指令无效。我已阅读this帖子,了解如何从命令行传递自定义参数,并假设我应该能够传递类似的内容:
compil32 /cc "c:\isetup\samples\my script.iss" /version=1.0.0.0
我也尝试过this post的建议并尝试执行以下操作:
#define PathToMyBinary "C:\bin\x64\Release"
#define ApplicationVersion GetFileVersion('#PathToMyBinary\MyBinary.dll')
VersionInfoVersion={#ApplicationVersion}
但它似乎没有回报任何东西。这两种方法对我来说都是有效的,所以我希望有人可以解释我哪里出错了。
答案 0 :(得分:4)
假设您通过预处理器变量定义版本,如:
[Setup]
VersionInfoVersion={#ApplicationVersion}
要在命令行上设置版本,您必须使用ISCC.exe
command-line compiler及其/D
switch:
ISCC.exe Example1.iss /DApplicationVersion=1.2.3.4
要从二进制文件中读取版本,您正在使用GetFileVersion
pre-processor function。
但是你构成路径的语法是错误的
正确的语法是PathToMyBinary + '\MyBinary.dll'
,如:
#define PathToMyBinary "C:\bin\x64\Release"
#define ApplicationVersion GetFileVersion(PathToMyBinary + '\MyBinary.dll')
答案 1 :(得分:0)
查看了许多不同的选项后,我发现这对我有用。
这是用于编译安装文件的命令行
"C:\Program Files (x86)\Inno Setup 5\iscc.exe" "MySetup.iss" /DVersion=1.2.3.4
在安装文件中,我添加了以下几行,第一行是让您仍然可以在编辑器中运行脚本,并确保不会出现错误:未声明的标识符:“版本”
#ifndef Version
#define Version = '0.0.0.0';
#endif
[Setup]
VersionInfoVersion={#Version}
答案 2 :(得分:0)
为了让我的安装脚本(iss 文件)工作,我必须从我的脚本中删除 #define ApplicationVersion 行。一旦我这样做了,它就会识别出我的 /DApplicationVersion=8 输入参数。
"C:\Program Files (x86)\Inno Setup 5\iscc.exe" "install.iss" /DApplicationVersion=8