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; } } }
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); } }