Example #1
0
        //private static List<FrameworkVersion> GetInstalled()
        //{
        //    var list = new List<FrameworkVersion>();
        //    list.Add(GetVersion("1.1.4322"));
        //    list.Add(GetVersion("2.0.50727"));
        //    list.Add(GetVersion("3.0"));
        //    list.Add(GetVersion("3.5"));
        //    list.Add(GetVersion("4", "4.0", FrameworkVariant.Client));
        //    list.Add(GetVersion("4", "4.0", FrameworkVariant.Full));
        //    list.Add(GetVersion("4", "4.5", FrameworkVariant.Client));
        //    list.Add(GetVersion("4", "4.5", FrameworkVariant.Full));
        //    for (var i = list.Count - 1; i >= 0; i--)
        //    {
        //        if (list[i] == null) list.RemoveAt(i);
        //    }
        //    if (list.IsEmpty()) //Unknown version or unix
        //        list.Add(new FrameworkVersion(Environment.Version, FrameworkVariant.Full)); //Hint: mono.net has only the "full" variant

        //    list.Sort();
        //    return list;
        //}

        //private static bool GetInstalled(string path)
        //{
        //    var value = Registry.GetValue(registryBasePath + path, "Install", 0);
        //    return value == null ? false : ((int)value == 0 ? false : true);
        //}

        //private static int GetSP(string path)
        //{
        //    var value = Registry.GetValue(registryBasePath + path, "SP", 0);
        //    return value == null ? 0 : (int)value;
        //}

        //private static string GetExactVersion(string path)
        //{
        //    var value = Registry.GetValue(registryBasePath + path, "Version", "");
        //    return value == null ? "" : (string)value;
        //}

        //public static FrameworkVersion GetVersion(string version, string exactVersion = "", FrameworkVariant variant = FrameworkVariant.Default)
        //{
        //    var path = "v" + version;
        //    if (variant != FrameworkVariant.Default) path += "\\" + variant.ToString();
        //    if (!GetInstalled(path)) return null;

        //    if (exactVersion != "")
        //    {
        //        var exactVer = new Version(exactVersion);
        //        var regVer = new Version(GetExactVersion(path));
        //        if (exactVer.Major == regVer.Major && exactVer.Minor == regVer.Minor)
        //            version = new Version(exactVersion).ToString(2);
        //        else
        //            return null;
        //    }

        //    var sp = GetSP(path);
        //    var ver = new Version(version);
        //    ver = new Version(ver.ToString(2));
        //    return new FrameworkVersion(ver, variant) { ServicePack = sp };
        //}

        public FrameworkVersion(Version version, FrameworkVariant variant = FrameworkVariant.Default)
        {
            this.Version = version;
            this.Variant = variant;
        }
Example #2
0
        public static FrameworkVersion GetVersion(string version, string exactVersion = "", FrameworkVariant variant = FrameworkVariant.Default)
        {
            var path = "v" + version;

            if (variant != FrameworkVariant.Default)
            {
                path += "\\" + variant.ToString();
            }
            if (!GetInstalled(path))
            {
                return(null);
            }

            if (exactVersion != "")
            {
                var exactVer = new Version(exactVersion);
                var regVer   = new Version(GetExactVersion(path));
                if (exactVer.Major == regVer.Major && exactVer.Minor == regVer.Minor)
                {
                    version = new Version(exactVersion).ToString(2);
                }
                else
                {
                    return(null);
                }
            }

            var sp  = GetSP(path);
            var ver = new Version(version);

            ver = new Version(ver.ToString(2));
            return(new FrameworkVersion(ver, variant)
            {
                ServicePack = sp
            });
        }