#region License Information /* HeuristicLab * Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL) * * This file is part of HeuristicLab. * * HeuristicLab is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * HeuristicLab is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with HeuristicLab. If not, see . */ #endregion using System; using System.Reflection; using System.Windows.Forms; namespace HeuristicLab.PluginInfrastructure { public partial class FrameworkVersionErrorDialog : Form { public static bool NET4FullProfileInstalled { get { try { return Microsoft.Win32.Registry.LocalMachine.OpenSubKey("Software\\Microsoft\\NET Framework Setup\\NDP\\v4\\Full") != null; } catch (System.Security.SecurityException) { return false; } } } public static bool MonoInstalled { get { return Type.GetType("Mono.Runtime") != null; } } public static bool MonoCorrectVersionInstalled { get { var monoVersion = MonoVersion; var minRequiredVersion = new Version(2, 11, 4); //we need at least mono version 2.11.4 if (monoVersion != null && monoVersion >= minRequiredVersion) { return true; } else { return false; } } } public static Version MonoVersion { get { Type type = Type.GetType("Mono.Runtime"); if (type != null) { MethodInfo dispalayName = type.GetMethod("GetDisplayName", BindingFlags.NonPublic | BindingFlags.Static); if (dispalayName != null) { string versionString = dispalayName.Invoke(null, null) as string; if (versionString != null) { // the version string looks something like: 2.11.4 (master/99d5e54 Thu Sep 6 15:55:44 CEST 2012) var subVerStrings = versionString.Split(' '); if (subVerStrings.Length > 0) { try { return Version.Parse(subVerStrings[0]); } catch { } } } } } return null; } } public FrameworkVersionErrorDialog() { InitializeComponent(); } private void linkLabel_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { try { System.Diagnostics.Process.Start("http://www.microsoft.com/downloads/en/details.aspx?displaylang=en&FamilyID=0a391abd-25c1-4fc0-919f-b21f31ab88b7"); linkLabel.LinkVisited = true; } catch (Exception) { } } private void cancelButton_Click(object sender, EventArgs e) { Application.Exit(); } private void linkLabelMono_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { try { System.Diagnostics.Process.Start("http://www.mono-project.org"); linkLabelMono.LinkVisited = true; } catch (Exception) { } } } }