Exemple #1
0
        public void PerformTreatment()
        {
            string featureName;

            if (Environment.Is64BitOperatingSystem)
            {
                featureName = IE64BitName;
            }
            else
            {
                featureName = IE32BitName;
            }

            try
            {
                using (DismSession session = DismApi.OpenOnlineSession())
                {
                    DismFeatureInfo info = DismApi.GetFeatureInfo(session, featureName);
                    if (
                        info.FeatureState == DismPackageFeatureState.NotPresent ||
                        info.FeatureState == DismPackageFeatureState.Removed ||
                        info.FeatureState == DismPackageFeatureState.Staged)
                    {
                        logger.Log("Internet Explorer 11 is not present on the system.");
                        return;
                    }

                    if (info.FeatureState == DismPackageFeatureState.UninstallPending)
                    {
                        logger.Log("Internet Explorer 11 is already pending uninstall.");
                        return;
                    }

                    try
                    {
                        logger.Log("Disabling Internet Explorer 11...");
                        DismApi.DisableFeature(session, featureName, null, true);
                    }
                    catch (DismRebootRequiredException ex)
                    {
                        logger.Log("Successfully disabled Internet Explorer 11. {0}", ex.Message);
                        return;
                    }

                    logger.Log("Successfully disabled Internet Explorer 11.");
                }
            }
            catch (Exception ex)
            {
                logger.Log("An error occurred while disabling Internet Explorer: {0}", ex.Message);
            }
        }
 public WindowsFeature(DismFeatureInfo feature)
 {
     this._featureName      = feature.FeatureName;
     this._featureState     = feature.FeatureState;
     this._displayName      = feature.DisplayName;
     this._description      = feature.Description;
     this._restartRequired  = feature.RestartRequired;
     this._customProperties = Utilites.PtrToArray <DismCustomProperty>(
         feature.CustomProperty,
         feature.CustomPropertyCount
         ).ToDictionary(
         f => string.Format("{0}\\{1}", f.Path, f.Name),
         f => f.Value
         );
 }
Exemple #3
0
        public override bool ShouldPerformTreatment()
        {
            try
            {
                using (DismSession session = DismApi.OpenOnlineSession())
                {
                    DismFeatureInfo info = DismApi.GetFeatureInfo(session, resolvedFeatureName);
                    if (
                        info.FeatureState == DismPackageFeatureState.NotPresent ||
                        info.FeatureState == DismPackageFeatureState.Removed ||
                        info.FeatureState == DismPackageFeatureState.Staged ||
                        info.FeatureState == DismPackageFeatureState.UninstallPending)
                    {
                        return(false);
                    }
                }
            }
            catch
            {
                return(false);
            }

            return(true);
        }
Exemple #4
0
        private (string statusText, Color labelColor, bool canBeEnabled) GetLabelStatusForDismFeature(DismFeatureInfo featureInfo)
        {
            switch (featureInfo.FeatureState)
            {
            case DismPackageFeatureState.Staged:
                return(Celeste_Launcher_Gui.Properties.Resources.WindowsFeatureHelperFeatureStaged, Colors.Chocolate, true);

            case DismPackageFeatureState.PartiallyInstalled:
                return(Celeste_Launcher_Gui.Properties.Resources.WindowsFeatureHelperFeaturePartiallyInstalled, Colors.Chocolate, true);

            case DismPackageFeatureState.Installed:
                return(Celeste_Launcher_Gui.Properties.Resources.WindowsFeatureHelperFeatureInstalled, Colors.DarkGreen, false);

            case DismPackageFeatureState.InstallPending:
                return(Celeste_Launcher_Gui.Properties.Resources.WindowsFeatureHelperFeatureIsPendingInstall, Colors.DarkGreen, false);

            default:
                return(string.Format(Celeste_Launcher_Gui.Properties.Resources.WindowsFeatureHelperFeatureUnsupported, featureInfo.FeatureState), Colors.Red, false);
            }
        }