Inno Setup 检测已安装的.NET Framework 版本

翻译自:http://kynosarges.org/DotNetVersion.html

由 Jordan Russell 写的 Inno Setup 是一个伟大的安装脚本程序,但缺乏一个内置的函数来确定安装在目标机器上的.NET Framework版本。幸运的是,它很容易使用 Pascal 脚本语言来实现这样的功能。

脚本

在下面的 Inno Setup的 脚本代码块,函数 IsDotNetDetected 检查指定的.NET Framework 版本和至少指定的服务包级别是否被安装了。所有列出的版本字符串是最终的发行版本; 测试版和发布候选通常具有不同的版本号。函数 InitializeSetup 演示了如何使用 IsDotNetDetected 检查 .NET Framework 4.6 是否有服务包。

我把在公共域代码这个小一点,这样你可以将它嵌入到自己的项目,修改和重新发布它,你认为合适。

 1 [Code]
 2 function IsDotNetDetected(version: string; service: cardinal): boolean;
 3 // Indicates whether the specified version and service pack of the .NET Framework is installed.
 4 //
 5 // version -- Specify one of these strings for the required .NET Framework version:
 6 //    ‘v1.1‘          .NET Framework 1.1
 7 //    ‘v2.0‘          .NET Framework 2.0
 8 //    ‘v3.0‘          .NET Framework 3.0
 9 //    ‘v3.5‘          .NET Framework 3.5
10 //    ‘v4\Client‘     .NET Framework 4.0 Client Profile
11 //    ‘v4\Full‘       .NET Framework 4.0 Full Installation
12 //    ‘v4.5‘          .NET Framework 4.5
13 //    ‘v4.5.1‘        .NET Framework 4.5.1
14 //    ‘v4.5.2‘        .NET Framework 4.5.2
15 //    ‘v4.6‘          .NET Framework 4.6
16 //    ‘v4.6.1‘        .NET Framework 4.6.1
17 //    ‘v4.6.2‘        .NET Framework 4.6.2
18 //
19 // service -- Specify any non-negative integer for the required service pack level:
20 //    0               No service packs required
21 //    1, 2, etc.      Service pack 1, 2, etc. required
22 var
23     key, versionKey: string;
24     install, release, serviceCount, versionRelease: cardinal;
25     success: boolean;
26 begin
27     versionKey := version;
28     versionRelease := 0;
29
30     // .NET 1.1 and 2.0 embed release number in version key
31     if version = ‘v1.1‘ then begin
32         versionKey := ‘v1.1.4322‘;
33     end else if version = ‘v2.0‘ then begin
34         versionKey := ‘v2.0.50727‘;
35     end
36
37     // .NET 4.5 and newer install as update to .NET 4.0 Full
38     else if Pos(‘v4.‘, version) = 1 then begin
39         versionKey := ‘v4\Full‘;
40         case version of
41           ‘v4.5‘:   versionRelease := 378389;
42           ‘v4.5.1‘: versionRelease := 378675; // 378758 on Windows 8 and older
43           ‘v4.5.2‘: versionRelease := 379893;
44           ‘v4.6‘:   versionRelease := 393295; // 393297 on Windows 8.1 and older
45           ‘v4.6.1‘: versionRelease := 394254; // 394271 on Windows 8.1 and older
46           ‘v4.6.2‘: versionRelease := 394802; // 394806 on Windows 8.1 and older
47         end;
48     end;
49
50     // installation key group for all .NET versions
51     key := ‘SOFTWARE\Microsoft\NET Framework Setup\NDP\‘ + versionKey;
52
53     // .NET 3.0 uses value InstallSuccess in subkey Setup
54     if Pos(‘v3.0‘, version) = 1 then begin
55         success := RegQueryDWordValue(HKLM, key + ‘\Setup‘, ‘InstallSuccess‘, install);
56     end else begin
57         success := RegQueryDWordValue(HKLM, key, ‘Install‘, install);
58     end;
59
60     // .NET 4.0 and newer use value Servicing instead of SP
61     if Pos(‘v4‘, version) = 1 then begin
62         success := success and RegQueryDWordValue(HKLM, key, ‘Servicing‘, serviceCount);
63     end else begin
64         success := success and RegQueryDWordValue(HKLM, key, ‘SP‘, serviceCount);
65     end;
66
67     // .NET 4.5 and newer use additional value Release
68     if versionRelease > 0 then begin
69         success := success and RegQueryDWordValue(HKLM, key, ‘Release‘, release);
70         success := success and (release >= versionRelease);
71     end;
72
73     result := success and (install = 1) and (serviceCount >= service);
74 end;
75
76
77 function InitializeSetup(): Boolean;
78 begin
79     if not IsDotNetDetected(‘v4.6‘, 0) then begin
80         MsgBox(‘MyApp requires Microsoft .NET Framework 4.6.‘#13#13
81             ‘Please use Windows Update to install this version,‘#13
82             ‘and then re-run the MyApp setup program.‘, mbInformation, MB_OK);
83         result := false;
84     end else
85         result := true;
86 end;
时间: 2024-10-14 15:20:28

Inno Setup 检测已安装的.NET Framework 版本的相关文章

检测电脑安装的net framework版本

https://msdn.microsoft.com/en-us/library/hh925568(v=vs.110).aspx To find .NET Framework versions by viewing the registry (.NET Framework 1-4) On the Start menu, choose Run. In the Open box, enter regedit.exe. You must have administrative credentials

检测是否安装了 .NET Framework 3.5

此脚本是为 Internet Explorer 设计的.    其他浏览器可能在 UserAgent 字符串中不包含 .NET CLR 信息. <HTML> <HEAD> <TITLE>Test for the .NET Framework 3.5</TITLE> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8" /> &l

Inno setup中定制安装路径

原文:Inno setup中定制安装路径 我的程序修改了安装界面,所以我的界面中提供了更改安装路径的方法. 用户修改后的路径会被传回inno setup脚本,脚本中需要做的事情如下: 1,写一个函数,来返回新的安装路径,如: function MyDestDir(SubDir:String):String; begin if SubDir = '' then Result := RootDestFolder else Result := RootDestFolder + '\'+ SubDir;

Windows查看电脑上安装的.Net Framework版本的五种方法(转)

1.查看安装文件判断Framwork版本号 打开资源管理器,比如我的电脑,再地址栏输入%systemroot%\Microsoft.NET\Framework后单击“转到”或者按回车. 在新文件夹中查看v字开头的下级文件夹名,最大的数字就是当前计算机上的.Net FrameWork版本号.如文件夹名最大为v4.0.30319,那么本机上安装的.Net Framework版本就是4.0: 2.JavaScript脚本判断.Net Framework版本 在网页浏览器的地址栏输入下面的命令后单击“转

Inno Setup 检测Windows系统版本

如果软件对系统有要求,必须安装在某些系统下,在制作安装包的时候,要检测当前系统版本是否满足要求, 以免安装过程中发生异常,或者安装后,软件运行异常,给客户的感觉就是软件有BUG,客户体验不好. 下面这个Demo是我整理的检测系统版本的代码. 1 ; 脚本由 Inno Setup 脚本向导 生成! 2 ; 有关创建 Inno Setup 脚本文件的详细资料请查阅帮助文档! 3 4 #define MyAppName "我的程序" 5 #define MyAppVersion "

如何使用Inno Setup Compiler制作安装软件包

工具/原料 Inno Setup Compiler汉化版软件 方法/步骤 启动Inno Setup Compiler汉化版软件.   选择创建新的空白脚本文件,按确定.   然后按下一步.   在相应的项目里填上相应的内容,按下一步.   在图中的1处以浏览的方式选择主程序,然后一个个添加目录,添加完后要记得编辑所添加的目录,以免所有文件安装在目标目录下.在图中的2处选添加目录后按编辑.   在下图中的1处填上子目录的名称,在2处下拉选择其他设置.设置之后按确定继续下一步.   按提示内容填写后

Inno Setup命令行安装卸载参数

安装命令行参数安装程序接受可选的命令行参数.这些对于系统管理员以及其它程序调用安装程序时有用./SP- 在安装开始时禁用“这将安装... 你想继续吗?”的提示,当然,如果 [Setup] 段的指令 DisableStartupPrompt 设为 yes 时,这将无效./SILENT , /VERYSILENT 告诉安装程序后台或完全后台运行.当安装程序在后台运行时,向导和背景窗口将不显示,但安装进度窗口显示.当安装程序在完全后台安装时,这个安装进度窗口也不显示.其它的事件被象正常安装一样,例如安

Inno Setup设置在安装Finished页面,点击finish后打开网页

在安装的最后一个页面FinishPage中点击Finished然后打开一个网页 这个功能貌似很简单,不就是在点击finish按钮给它绑定事件,问题立马解决. 在普通的桌面应用程序开发中的确是这样做的,可是这里是InnoSetup 这个事件不是你能控制的, 所以我们应该换一种思维,点击finish后,相当于程序全部安装完毕了,而在InnoSetup的脚本中,我们可以获取到这个状态 先上代码: 1 //这个方法innosetup会自动调用的,当安装步骤有所改变时,它就会被触发 2 procedure

如何查看本机上安装的.NET Framework版本

在开始菜单选择"运行", 或者快捷键 “windows键+R” 在命令窗口输入regedit.exe,打开注册表 在注册表中定位到如下节点 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP 安装过的.NET Framework都列在NDP目录下 对于.NET Framework 4.5或之后的版本查看方法 如上打开注册表并定位到 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET