private async void Window_Loaded(object sender, RoutedEventArgs e) { var osInfo = OsVersionInfo.GetOsVersionInfo(); if (osInfo.Major < 6 || osInfo.Major == 6 && osInfo.Minor < 2) { GenericMessageDialog.Show(string.Format(Celeste_Launcher_Gui.Properties.Resources.WindowsFeatureHelperUnsupportedOS, osInfo.FullName), DialogIcon.Warning); Close(); return; } try { foreach (var feature in await Dism.GetWindowsFeatureInfo(new[] { "DirectPlay", "NetFx3" })) { if (string.Equals(feature.Key, "DirectPlay", StringComparison.CurrentCultureIgnoreCase)) { var(statusText, colorLabel, canBeEnabled) = GetLabelStatusForDismFeature(feature.Value); DirectPlayStatusLabel.Text = statusText; DirectPlayStatusLabel.Foreground = new SolidColorBrush(colorLabel); EnableDirectPlayBtn.IsEnabled = canBeEnabled; } else if (string.Equals(feature.Key, "NetFx3", StringComparison.CurrentCultureIgnoreCase)) { var(statusText, colorLabel, canBeEnabled) = GetLabelStatusForDismFeature(feature.Value); NetFrameworkStatusLabel.Text = statusText; NetFrameworkStatusLabel.Foreground = new SolidColorBrush(colorLabel); EnableNetFrameworkBtn.IsEnabled = canBeEnabled; } } } catch (Exception ex) { Logger.Error(ex, ex.Message); NetFrameworkStatusLabel.Text = Celeste_Launcher_Gui.Properties.Resources.WindowsFeatureHelperFeatureNotSupportedError; NetFrameworkStatusLabel.Foreground = new SolidColorBrush(Colors.Red); } }
private async void WindowsFeatures_Load(object sender, EventArgs e) { try { if (DwmApi.DwmIsCompositionEnabled()) { DwmApi.DwmExtendFrameIntoClientArea(Handle, new DwmApi.MARGINS(10, 10, 10, 10)); } } catch (Exception) { // } //Windows features try { foreach (var feature in await Dism.GetWindowsFeatureInfo(new[] { "DirectPlay", "NetFx3" })) { if (string.Equals(feature.Key, "DirectPlay", StringComparison.CurrentCultureIgnoreCase)) { // ReSharper disable once SwitchStatementMissingSomeCases switch (feature.Value.FeatureState) { case DismPackageFeatureState.Staged: l_DirectPlayState.Text = @"Staged"; l_DirectPlayState.ForeColor = Color.Chocolate; btn_FixDirectPlay.Enabled = true; break; case DismPackageFeatureState.PartiallyInstalled: l_DirectPlayState.Text = @"Partially installed"; l_DirectPlayState.ForeColor = Color.Chocolate; btn_FixDirectPlay.Enabled = true; break; case DismPackageFeatureState.Installed: l_DirectPlayState.Text = @"Installed"; l_DirectPlayState.ForeColor = Color.DarkGreen; btn_FixDirectPlay.Enabled = false; break; case DismPackageFeatureState.InstallPending: l_DirectPlayState.Text = @"Install pending"; l_DirectPlayState.ForeColor = Color.DarkGreen; btn_FixDirectPlay.Enabled = false; break; default: l_DirectPlayState.Text = $@"Not supported ({feature.Value.FeatureState})"; l_DirectPlayState.ForeColor = Color.Red; btn_FixDirectPlay.Enabled = false; break; } } else if (string.Equals(feature.Key, "NetFx3", StringComparison.CurrentCultureIgnoreCase)) { // ReSharper disable once SwitchStatementMissingSomeCases switch (feature.Value.FeatureState) { case DismPackageFeatureState.Staged: l_NetFx3State.Text = @"Staged"; l_NetFx3State.ForeColor = Color.Chocolate; btn_FixNetFx.Enabled = true; break; case DismPackageFeatureState.PartiallyInstalled: l_NetFx3State.Text = @"Partially installed"; l_NetFx3State.ForeColor = Color.Chocolate; btn_FixNetFx.Enabled = true; break; case DismPackageFeatureState.Installed: l_NetFx3State.Text = @"Installed"; l_NetFx3State.ForeColor = Color.DarkGreen; btn_FixNetFx.Enabled = false; break; case DismPackageFeatureState.InstallPending: l_NetFx3State.Text = @"Install pending"; l_NetFx3State.ForeColor = Color.DarkGreen; btn_FixNetFx.Enabled = false; break; default: l_NetFx3State.Text = $@"Not supported ({feature.Value.FeatureState})"; l_NetFx3State.ForeColor = Color.Red; btn_FixNetFx.Enabled = false; break; } } } } catch (Exception) { l_DirectPlayState.Text = @"Not supported (unknow error)"; l_DirectPlayState.ForeColor = Color.Red; } }