Inno setup 使用Inno设置检查是否存在框架4.6.2

Inno setup 使用Inno设置检查是否存在框架4.6.2,inno-setup,Inno Setup,我有以下自定义代码来检查Microsoft Framework的安装: 函数preparetoall(var-NeedsRestart:Boolean):字符串; 变量 已安装:红衣主教; 开始 结果:=''; dotNetNeeded:=true; {检查所需的netfx安装} { http://msdn.microsoft.com/en-us/library/hh925568%28v=vs.110%29.aspx#net_b } 如果是(IS64BIInstallMode()),则开始 如果

我有以下自定义代码来检查Microsoft Framework的安装:

函数preparetoall(var-NeedsRestart:Boolean):字符串;
变量
已安装:红衣主教;
开始
结果:='';
dotNetNeeded:=true;
{检查所需的netfx安装}
{ http://msdn.microsoft.com/en-us/library/hh925568%28v=vs.110%29.aspx#net_b }
如果是(IS64BIInstallMode()),则开始
如果(RegValueExists(HKLM,'SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v4\Full,'Release'))存在,则开始
RegQueryWordValue(HKLM,“软件\Wow6432Node\Microsoft\NET框架设置\NDP\v4\Full”,“发布”,已安装);
如果(已安装>=378675),则开始
dotNetNeeded:=false;
DownloadRequired:=false;
结束;
结束;
结束
否则开始
如果(RegValueExists(HKLM,'SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full','Release'))存在,则开始
RegQueryWordValue(HKLM,“软件\Microsoft\NET框架安装程序\NDP\v4\Full”,“发布”,已安装);
如果(已安装>=378675),则开始
dotNetNeeded:=false;
DownloadRequired:=false;
结束;
结束;
结束;
如果需要,则开始
如果(不是isAdminLogedon()),则开始
结果:=ExpandConstant(“{cm:DotNet_NeedAdminRights}”);
结束
否则开始
dotnetRedistPath:=ExpandConstant(“{src}\NDP451-KB2858728-x86-x64-AllOS-ENU.exe”);
如果文件不存在(dotnetRedistPath),则开始
dotnetRedistPath:=ExpandConstant(“{tmp}\NDP451-KB2858728-x86-x64-AllOS-ENU.exe”);
如果文件不存在(dotnetRedistPath),则开始
isxdl_AddFile(dotnetredistur、dotnetRedistPath);
DownloadRequired:=真;
结束;
结束;
如果需要(下载),则开始
如果(MsgBox(ExpandConstant({cm:DotNet_NeedToDownload}')、mbConfirmation、MB_OKCANCEL)=IDCANCEL),则开始
结果:=ExpandConstant(“{cm:DotNet_InstallAborted}”);
结束;
结束;
结束;
结束;
结束;
我正在迁移此代码以支持4.6.2框架,因此我可以将下载路径更改为:

http://go.microsoft.com/fwlink/?LinkId=780600
使用文件名:

NDP462-KB3151800-x86-x64-AllOS-ENU.exe
但是,我有一个问题是关于注册表检查。根据版本4.6.2,密钥的值为:

Windows 10周年纪念更新:394802

在所有其他操作系统版本上:394806


我如何知道在脚本中应该寻找哪个值?或者只使用
>=394802
安全吗?

>=394802
的测试应该足够好了

如果您想安全起见,可以使用此选项测试Windows 10周年更新(build 10.0.14393):

GetWindowsVersion>=$A003839

Ok。但我也需要支持其他数量较少的操作系统平台。美元的前缀号到底是什么?我不明白。对于
GetWindowsVersion>=$A003839
使用
394802
。对于其他版本,请使用
394806
-
$xxxx
是一个十六进制常量。因此,为了安全起见,我实际上可以执行两个GetWindowsVersion调用。我想我将只测试394802。