1 [Code] 2 3 function IsDotNetDetected(version: string; service: cardinal): boolean; 4 5 // Indicates whether the specified version and service pack of the .NET Framework is installed. 6 7 // 8 9 // version -- Specify one of these strings for the required .NET Framework version: 10 11 // 'v1.1.4322' .NET Framework 1.1 12 13 // 'v2.0.50727' .NET Framework 2.0 14 15 // 'v3.0' .NET Framework 3.0 16 17 // 'v3.5' .NET Framework 3.5 18 19 // 'v4\Client' .NET Framework 4.0 Client Profile 20 21 // 'v4\Full' .NET Framework 4.0 Full Installation 22 23 // 'v4.5' .NET Framework 4.5 24 25 // 26 27 // service -- Specify any non-negative integer for the required service pack level: 28 29 // 0 No service packs required 30 31 // 1, 2, etc. Service pack 1, 2, etc. required 32 33 var 34 35 key: string; 36 37 install, release, serviceCount: cardinal; 38 39 check45, success: boolean; 40 41 begin 42 43 // .NET 4.5 installs as update to .NET 4.0 Full 44 45 if version = 'v4.5' then begin 46 47 version := 'v4\Full'; 48 49 check45 := true; 50 51 end else 52 53 check45 := false; 54 55 56 57 // installation key group for all .NET versions 58 59 key := 'SOFTWARE\Microsoft\NET Framework Setup\NDP\' + version; 60 61 62 63 // .NET 3.0 uses value InstallSuccess in subkey Setup 64 65 if Pos('v3.0', version) = 1 then begin 66 67 success := RegQueryDWordValue(HKLM, key + '\Setup', 'InstallSuccess', install); 68 69 end else begin 70 71 success := RegQueryDWordValue(HKLM, key, 'Install', install); 72 73 end; 74 75 76 77 // .NET 4.0/4.5 uses value Servicing instead of SP 78 79 if Pos('v4', version) = 1 then begin 80 81 success := success and RegQueryDWordValue(HKLM, key, 'Servicing', serviceCount); 82 83 end else begin 84 85 success := success and RegQueryDWordValue(HKLM, key, 'SP', serviceCount); 86 87 end; 88 89 90 91 // .NET 4.5 uses additional value Release 92 93 if check45 then begin 94 95 success := success and RegQueryDWordValue(HKLM, key, 'Release', release); 96 97 success := success and (release >= 378389); 98 99 end; 100 101 102 103 result := success and (install = 1) and (serviceCount >= service); 104 105 end; 106 107 108 109 110 111 function InitializeSetup(): Boolean; 112 113 begin 114 115 if not IsDotNetDetected('v4\Client', 0) then begin 116 117 MsgBox('MyApp requires Microsoft .NET Framework 4.0 Client Profile.'#13#13 118 119 'Please use Windows Update to install this version,'#13 120 121 'and then re-run the MyApp setup program.', mbInformation, MB_OK); 122 123 result := false; 124 125 end else 126 127 result := true; 128 129 end;
转载网址:http://www.kynosarges.org/DotNetVersion.html