Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Inno setup 如何读取安装程序的版本信息以与现有版本进行比较_Inno Setup - Fatal编程技术网

Inno setup 如何读取安装程序的版本信息以与现有版本进行比较

Inno setup 如何读取安装程序的版本信息以与现有版本进行比较,inno-setup,Inno Setup,在我的安装程序中,我必须检查正在安装的版本是否低于计算机上已安装的应用程序的版本 如果是这样,我必须在不允许安装的情况下关闭安装程序 因此,我有以下代码: if GetVersionNumbersString(ExpandConstant('{app}\bin\application.exe'), Version) then begin ... end; 这将返回给我,计算机上应用程序的版本号。 我的问题是: 如何读取mySetup的VersionInfo中的信息?要正确比较版本号,您需要对版

在我的安装程序中,我必须检查正在安装的版本是否低于计算机上已安装的应用程序的版本

如果是这样,我必须在不允许安装的情况下关闭安装程序

因此,我有以下代码:

if GetVersionNumbersString(ExpandConstant('{app}\bin\application.exe'), Version) then
begin
...
end;
这将返回给我,计算机上应用程序的版本号。 我的问题是:


如何读取mySetup的
VersionInfo
中的信息?

要正确比较版本号,您需要对版本号的每个组件进行数字比较

您可以使用ISPP获取编译时安装的文本版本号,并
{emit…}
将其转换为PascalScript字符串变量,或者在运行时使用PascalScript并传递
ExpandConstants('{srcexe}')
。然后,您可以再次使用PascalScript的
GetVersionNumbersString()
函数来获取要替换的应用程序的文本版本


当PascalScript字符串变量中包含这两个变量时,可以使用该函数进行实际比较。

请注意,文本版本包含非数字标记(如代码名)是合法的。如果您选择对应用程序和/或安装程序执行此操作,则必须直接比较二进制版本,而不是尝试解析文本版本。(一般来说,我认为比较二进制版本更好。)你可以通过
GetVersionNumbers()
@Miral
getversionnumberstring()
获取数字版本作为虚线字符串,不是吗?我不确定,但我不这么认为。@Miral我刚刚测试过,它得到了二进制/数字文件版本,并将其格式化为带点的四元字符串。