dotnetfxversion.iss 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  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 netfxinstalled(version: NetFXType; lcid: string): boolean;
  7. var
  8. regVersion: cardinal;
  9. regVersionString: string;
  10. begin
  11. if (lcid <> '') then
  12. lcid := '\' + lcid;
  13. if (version = NetFx10) then begin
  14. RegQueryStringValue(HKLM, 'Software\Microsoft\.NETFramework\Policy\v1.0\3705', 'Install', regVersionString);
  15. Result := regVersionString <> '';
  16. end else begin
  17. case version of
  18. NetFx11:
  19. RegQueryDWordValue(HKLM, netfx11plus_reg + 'v1.1.4322' + lcid, 'Install', regVersion);
  20. NetFx20:
  21. RegQueryDWordValue(HKLM, netfx11plus_reg + 'v2.0.50727' + lcid, 'Install', regVersion);
  22. NetFx30:
  23. RegQueryDWordValue(HKLM, netfx11plus_reg + 'v3.0\Setup' + lcid, 'InstallSuccess', regVersion);
  24. NetFx35:
  25. RegQueryDWordValue(HKLM, netfx11plus_reg + 'v3.5' + lcid, 'Install', regVersion);
  26. NetFx40Client:
  27. RegQueryDWordValue(HKLM, netfx11plus_reg + 'v4\Client' + lcid, 'Install', regVersion);
  28. NetFx40Full:
  29. RegQueryDWordValue(HKLM, netfx11plus_reg + 'v4\Full' + lcid, 'Install', regVersion);
  30. NetFx4x:
  31. begin
  32. RegQueryDWordValue(HKLM, netfx11plus_reg + 'v4\Full' + lcid, 'Release', regVersion);
  33. Result := (regVersion >= 378389); // 4.5.0+
  34. Exit;
  35. end;
  36. end;
  37. Result := (regVersion <> 0);
  38. end;
  39. end;
  40. function netfxspversion(version: NetFXType; lcid: string): integer;
  41. var
  42. regVersion: cardinal;
  43. begin
  44. if (lcid <> '') then
  45. lcid := '\' + lcid;
  46. case version of
  47. NetFx10:
  48. // not supported
  49. regVersion := -1;
  50. NetFx11:
  51. if (not RegQueryDWordValue(HKLM, netfx11plus_reg + 'v1.1.4322' + lcid, 'SP', regVersion)) then
  52. regVersion := -1;
  53. NetFx20:
  54. if (not RegQueryDWordValue(HKLM, netfx11plus_reg + 'v2.0.50727' + lcid, 'SP', regVersion)) then
  55. regVersion := -1;
  56. NetFx30:
  57. if (not RegQueryDWordValue(HKLM, netfx11plus_reg + 'v3.0' + lcid, 'SP', regVersion)) then
  58. regVersion := -1;
  59. NetFx35:
  60. if (not RegQueryDWordValue(HKLM, netfx11plus_reg + 'v3.5' + lcid, 'SP', regVersion)) then
  61. regVersion := -1;
  62. NetFx40Client:
  63. if (not RegQueryDWordValue(HKLM, netfx11plus_reg + 'v4\Client' + lcid, 'Servicing', regVersion)) then
  64. regVersion := -1;
  65. NetFx40Full:
  66. if (not RegQueryDWordValue(HKLM, netfx11plus_reg + 'v4\Full' + lcid, 'Servicing', regVersion)) then
  67. regVersion := -1;
  68. NetFx4x:
  69. if (RegQueryDWordValue(HKLM, netfx11plus_reg + 'v4\Full' + lcid, 'Release', regVersion)) then begin
  70. if (regVersion >= 460798) then
  71. regVersion := 70 // 4.7+
  72. else if (regVersion >= 394802) then
  73. regVersion := 62 // 4.6.2+
  74. else if (regVersion >= 394254) then
  75. regVersion := 61 // 4.6.1+
  76. else if (regVersion >= 393295) then
  77. regVersion := 60 // 4.6+
  78. else if (regVersion >= 379893) then
  79. regVersion := 52 // 4.5.2+
  80. else if (regVersion >= 378675) then
  81. regVersion := 51 // 4.5.1+
  82. else if (regVersion >= 378389) then
  83. regVersion := 50 // 4.5+
  84. else
  85. regVersion := -1;
  86. end;
  87. end;
  88. Result := regVersion;
  89. end;
  90. [Setup]