dotnetfxversion.iss 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. [Code]
  2. type
  3. NetFXType = (NetFx10, NetFx11, NetFx20, NetFx30, NetFx35, NetFx40Client, NetFx40Full, NetFx4x);
  4. const
  5. netfx11plus_reg = 'Software\Microsoft\NET Framework Setup\NDP\';
  6. function dotnetfxinstalled(version: NetFXType; lcid: String): Boolean;
  7. var
  8. regVersion: Cardinal;
  9. regVersionString: String;
  10. begin
  11. if (lcid <> '') then
  12. lcid := '\' + lcid;
  13. case version of
  14. NetFx10:
  15. Result := RegQueryStringValue(HKLM, 'Software\Microsoft\.NETFramework\Policy\v1.0\3705', 'Install', regVersionString) and (regVersionString <> '');
  16. NetFx11:
  17. Result := RegQueryDWordValue(HKLM, netfx11plus_reg + 'v1.1.4322' + lcid, 'Install', regVersion) and (regVersion <> 0);
  18. NetFx20:
  19. Result := RegQueryDWordValue(HKLM, netfx11plus_reg + 'v2.0.50727' + lcid, 'Install', regVersion) and (regVersion <> 0);
  20. NetFx30:
  21. Result := RegQueryDWordValue(HKLM, netfx11plus_reg + 'v3.0\Setup' + lcid, 'InstallSuccess', regVersion) and (regVersion <> 0);
  22. NetFx35:
  23. Result := RegQueryDWordValue(HKLM, netfx11plus_reg + 'v3.5' + lcid, 'Install', regVersion) and (regVersion <> 0);
  24. NetFx40Client:
  25. Result := RegQueryDWordValue(HKLM, netfx11plus_reg + 'v4\Client' + lcid, 'Install', regVersion) and (regVersion <> 0);
  26. NetFx40Full:
  27. Result := RegQueryDWordValue(HKLM, netfx11plus_reg + 'v4\Full' + lcid, 'Install', regVersion) and (regVersion <> 0);
  28. NetFx4x:
  29. Result := RegQueryDWordValue(HKLM, netfx11plus_reg + 'v4\Full' + lcid, 'Release', regVersion) and (regVersion >= 378389); // 4.5.0+
  30. end;
  31. end;
  32. function dotnetfxspversion(version: NetFXType; lcid: String): Integer;
  33. var
  34. regVersion: Cardinal;
  35. begin
  36. if (lcid <> '') then
  37. lcid := '\' + lcid;
  38. case version of
  39. NetFx10:
  40. // not supported
  41. regVersion := -1;
  42. NetFx11:
  43. if (not RegQueryDWordValue(HKLM, netfx11plus_reg + 'v1.1.4322' + lcid, 'SP', regVersion)) then
  44. regVersion := -1;
  45. NetFx20:
  46. if (not RegQueryDWordValue(HKLM, netfx11plus_reg + 'v2.0.50727' + lcid, 'SP', regVersion)) then
  47. regVersion := -1;
  48. NetFx30:
  49. if (not RegQueryDWordValue(HKLM, netfx11plus_reg + 'v3.0' + lcid, 'SP', regVersion)) then
  50. regVersion := -1;
  51. NetFx35:
  52. if (not RegQueryDWordValue(HKLM, netfx11plus_reg + 'v3.5' + lcid, 'SP', regVersion)) then
  53. regVersion := -1;
  54. NetFx40Client:
  55. if (not RegQueryDWordValue(HKLM, netfx11plus_reg + 'v4\Client' + lcid, 'Servicing', regVersion)) then
  56. regVersion := -1;
  57. NetFx40Full:
  58. if (not RegQueryDWordValue(HKLM, netfx11plus_reg + 'v4\Full' + lcid, 'Servicing', regVersion)) then
  59. regVersion := -1;
  60. NetFx4x:
  61. if (RegQueryDWordValue(HKLM, netfx11plus_reg + 'v4\Full' + lcid, 'Release', regVersion)) then begin
  62. if (regVersion >= 528040) then
  63. regVersion := 80 // 4.8.0+
  64. else if (regVersion >= 461808) then
  65. regVersion := 72 // 4.7.2+
  66. else if (regVersion >= 461308) then
  67. regVersion := 71 // 4.7.1+
  68. else if (regVersion >= 460798) then
  69. regVersion := 70 // 4.7.0+
  70. else if (regVersion >= 394802) then
  71. regVersion := 62 // 4.6.2+
  72. else if (regVersion >= 394254) then
  73. regVersion := 61 // 4.6.1+
  74. else if (regVersion >= 393295) then
  75. regVersion := 60 // 4.6.0+
  76. else if (regVersion >= 379893) then
  77. regVersion := 52 // 4.5.2+
  78. else if (regVersion >= 378675) then
  79. regVersion := 51 // 4.5.1+
  80. else if (regVersion >= 378389) then
  81. regVersion := 50 // 4.5.0+
  82. else
  83. regVersion := -1;
  84. end;
  85. end;
  86. Result := regVersion;
  87. end;