Added platform version error handling

This commit is contained in:
Keivan Beigi 2017-01-04 19:15:47 -08:00
parent dd7fdd8ace
commit e6705db743
2 changed files with 45 additions and 34 deletions

View File

@ -37,7 +37,7 @@ namespace NzbDrone.Mono.EnvironmentInfo
} }
catch (Exception ex) catch (Exception ex)
{ {
logger.Error(ex, "Unable to get mono version: " + ex.Message); logger.Error(ex, "Unable to get mono version");
} }
Version = runTimeVersion; Version = runTimeVersion;

View File

@ -1,13 +1,17 @@
using System; using System;
using Microsoft.Win32; using Microsoft.Win32;
using NLog;
using NzbDrone.Common.EnvironmentInfo; using NzbDrone.Common.EnvironmentInfo;
namespace NzbDrone.Windows.EnvironmentInfo namespace NzbDrone.Windows.EnvironmentInfo
{ {
public class DotNetPlatformInfo : PlatformInfo public class DotNetPlatformInfo : PlatformInfo
{ {
public DotNetPlatformInfo() private readonly Logger _logger;
public DotNetPlatformInfo(Logger logger)
{ {
_logger = logger;
var version = GetFrameworkVersion(); var version = GetFrameworkVersion();
Environment.SetEnvironmentVariable("RUNTIME_VERSION", version.ToString()); Environment.SetEnvironmentVariable("RUNTIME_VERSION", version.ToString());
Version = version; Version = version;
@ -15,45 +19,52 @@ namespace NzbDrone.Windows.EnvironmentInfo
public override Version Version { get; } public override Version Version { get; }
private static Version GetFrameworkVersion() private Version GetFrameworkVersion()
{ {
const string subkey = @"SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\"; try
using (var ndpKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).OpenSubKey(subkey))
{ {
if (ndpKey == null) const string subkey = @"SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\";
using (var ndpKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).OpenSubKey(subkey))
{ {
return new Version(4, 0); if (ndpKey == null)
} {
return new Version(4, 0);
}
var releaseKey = (int)ndpKey.GetValue("Release"); var releaseKey = (int)ndpKey.GetValue("Release");
if (releaseKey >= 394802) if (releaseKey >= 394802)
{ {
return new Version(4, 6, 2); return new Version(4, 6, 2);
}
if (releaseKey >= 394254)
{
return new Version(4, 6, 1);
}
if (releaseKey >= 393295)
{
return new Version(4, 6);
}
if (releaseKey >= 379893)
{
return new Version(4, 5, 2);
}
if (releaseKey >= 378675)
{
return new Version(4, 5, 1);
}
if (releaseKey >= 378389)
{
return new Version(4, 5);
}
} }
if (releaseKey >= 394254)
{
return new Version(4, 6, 1);
}
if (releaseKey >= 393295)
{
return new Version(4, 6);
}
if (releaseKey >= 379893)
{
return new Version(4, 5, 2);
}
if (releaseKey >= 378675)
{
return new Version(4, 5, 1);
}
if (releaseKey >= 378389)
{
return new Version(4, 5);
}
return new Version(4, 0);
} }
catch (Exception e)
{
_logger.Error(e, "Couldnt get .NET framework version");
}
return new Version(4, 0);
} }
} }
} }