static NETHelper()
        {
            int          dotNetVersion;
            const string subkey = @"SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\";

            using (RegistryKey baseKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32))
                using (RegistryKey ndpKey = baseKey.OpenSubKey(subkey))
                {
                    if (ndpKey != null && ndpKey.GetValue("Release") != null)
                    {
                        dotNetVersion = (int)ndpKey.GetValue("Release");
                    }
                    else
                    {
                        dotNetVersion = 0;
                    }
                }
            foreach (object ver in Enum.GetValues(typeof(NETVersion)))
            {
                NETVersion nv = (NETVersion)ver;
                if (dotNetVersion >= (int)nv)
                {
                    version = nv;
                }
            }
        }
Esempio n. 2
0
        public new void Run()
        {
            InitLoggers();
            Logger.Log($"Detected .NET {NETHelper.GetVersionString()}");
            NETVersion netVersion = NETHelper.GetVersion();

            NETVersion checkVersion;

            if (File.Exists("ignoredotnet"))
            {
                checkVersion = NETVersion.v4_7_1;
            }
            else
            {
                checkVersion = NETVersion.v4_7_2;
            }

            if (netVersion >= checkVersion)
            {
                if (netVersion < NETVersion.v4_7_2)
                {
                    Logger.Log($"You have .NET Framework that does meet minimal requirement, but does not meet recommended. Crashes may occur.", ELogLevel.WARNING);
                }

                Logger.Log($"User has required .NET Framework version. Launching...", ELogLevel.POSITIVE);
                Logger.Log($"BowieD.Unturned.NPCMaker {Version}. Copyright (C) 2020 Anton 'BowieD' Galakhov");
                Logger.Log("This program comes with ABSOLUTELY NO WARRANTY; for details type `license w'.");
                Logger.Log("This is free software, and you are welcome to redistribute it");
                Logger.Log("under certain conditions; type `license c' for details.");
                Logger.Log("This programs uses 3rd party apps, type `license l' for details.");
                Logger.Log("[EXTRCT] - Extracting libraries...", ELogLevel.DEBUG);
                #region COPY LIBS
                CopyResource(NPCMaker.Properties.Resources.DiscordRPC, Path.Combine(AppConfig.Directory, "DiscordRPC.dll"));
                CopyResource(NPCMaker.Properties.Resources.Newtonsoft_Json, Path.Combine(AppConfig.Directory, "Newtonsoft.Json.dll"));
                CopyResource(NPCMaker.Properties.Resources.ControlzEx, Path.Combine(AppConfig.Directory, "ControlzEx.dll"));
                CopyResource(NPCMaker.Properties.Resources.MahApps_Metro, Path.Combine(AppConfig.Directory, "MahApps.Metro.dll"));
                CopyResource(NPCMaker.Properties.Resources.Microsoft_Xaml_Behaviors, Path.Combine(AppConfig.Directory, "Microsoft.Xaml.Behaviors.dll"));
                CopyResource(NPCMaker.Properties.Resources.MahApps_Metro_IconPacks_Core, Path.Combine(AppConfig.Directory, "MahApps.Metro.IconPacks.Core.dll"));
                CopyResource(NPCMaker.Properties.Resources.MahApps_Metro_IconPacks_Material, Path.Combine(AppConfig.Directory, "MahApps.Metro.IconPacks.Material.dll"));
                CopyResource(NPCMaker.Properties.Resources.Xceed_Wpf_AvalonDock, Path.Combine(AppConfig.Directory, "Xceed.Wpf.AvalonDock.dll"));
                CopyResource(NPCMaker.Properties.Resources.Xceed_Wpf_AvalonDock_Themes_Aero, Path.Combine(AppConfig.Directory, "Xceed.Wpf.AvalonDock.Themes.Aero.dll"));
                CopyResource(NPCMaker.Properties.Resources.Xceed_Wpf_AvalonDock_Themes_Metro, Path.Combine(AppConfig.Directory, "Xceed.Wpf.AvalonDock.Themes.Metro.dll"));
                CopyResource(NPCMaker.Properties.Resources.Xceed_Wpf_AvalonDock_Themes_VS2010, Path.Combine(AppConfig.Directory, "Xceed.Wpf.AvalonDock.Themes.VS2010.dll"));
                CopyResource(NPCMaker.Properties.Resources.Xceed_Wpf_Toolkit, Path.Combine(AppConfig.Directory, "Xceed.Wpf.Toolkit.dll"));
                CopyResource(NPCMaker.Properties.Resources.Steamworks_NET, Path.Combine(AppConfig.Directory, "Steamworks.NET.dll"));
                CopyResource(NPCMaker.Properties.Resources.steam_api, Path.Combine(AppConfig.Directory, "steam_api.dll"));
                CopyResource(NPCMaker.Properties.Resources.UnturnedWorkshopCLI, Path.Combine(AppConfig.Directory, "UnturnedWorkshopCLI.exe"));
                File.WriteAllText(Path.Combine(AppConfig.Directory, "steam_appid.txt"), NPCMaker.Properties.Resources.steam_appid);
                #endregion
                Logger.Log("[EXTRCT] - Extraction complete!", ELogLevel.DEBUG);
                AppConfig.Instance.Load();
                #region SCALE
                Resources["Scale"] = AppConfig.Instance.scale;
                #endregion
#if !FAST
                App.UpdateManager = new GitHubUpdateManager();
                var result = App.UpdateManager.CheckForUpdates(IsPreviewVersion || AppConfig.Instance.downloadPrerelease).GetAwaiter().GetResult();
                if (result == UpdateAvailability.AVAILABLE)
                {
                    if (AppConfig.Instance.autoUpdate)
                    {
                        App.UpdateManager.StartUpdate();
                        return;
                    }
                    else
                    {
                        LocalizationManager.LoadLanguage(AppConfig.Instance.language);
                        var dlg = System.Windows.MessageBox.Show(LocalizationManager.Current.Interface["Update_Available_Body"], LocalizationManager.Current.Interface["Update_Available_Title"], System.Windows.MessageBoxButton.YesNo, MessageBoxImage.Question);
                        if (dlg == MessageBoxResult.Yes)
                        {
                            App.UpdateManager.StartUpdate();
                            return;
                        }
                    }
                }
#else
                Logger.Log("[APP] - DebugFast enabled! Skipping update check...", ELogLevel.DEBUG);
#endif
                if (!LocalizationManager.IsLoaded)
                {
                    LocalizationManager.LoadLanguage(AppConfig.Instance.language);
                }

                PostRun();
                base.Run();
            }
            else
            {
                Logger.Log("You have to install .NET Framework 4.7.1 to run this app properly.", ELogLevel.CRITICAL);
                Console.ReadKey(true);
            }
        }