public static async Task <DismFeatureInfo> EnableWindowsFeatures(string featureName, DismProgressCallback dismProgressCallback) { if (string.IsNullOrWhiteSpace(featureName)) { throw new ArgumentException(); } DismApi.Initialize(DismLogLevel.LogErrors); DismFeatureInfo retVal; try { using (var session = DismApi.OpenOnlineSession()) { DismApi.EnableFeatureByPackageName(session, featureName, null, false, true, new List <string>(), dismProgressCallback); retVal = DismApi.GetFeatureInfo(session, featureName); } } finally { DismApi.Shutdown(); } await Task.Delay(200).ConfigureAwait(false); return(retVal); }
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 static async Task <DismFeatureInfo> GetWindowsFeatureInfo(string featureName) { DismApi.Initialize(DismLogLevel.LogErrors); DismFeatureInfo retVal; try { using (var session = DismApi.OpenOnlineSession()) { retVal = DismApi.GetFeatureInfo(session, featureName); } } finally { DismApi.Shutdown(); } await Task.Delay(200).ConfigureAwait(false); return(retVal); }
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); }
public async Task <bool> IsFeatureEnabledAsync(string featureName) => DismApi.GetFeatureInfo(await GetDismSessionAsync(), featureName).FeatureState == DismPackageFeatureState.Installed;
public static async Task <IEnumerable <KeyValuePair <string, DismFeatureInfo> > > GetWindowsFeatureInfo( IEnumerable <string> featureNames) { var enumerable = featureNames as string[] ?? featureNames.ToArray(); if (!enumerable.Any()) { throw new ArgumentException(); } DismApi.Initialize(DismLogLevel.LogErrors); var retVal = new List <KeyValuePair <string, DismFeatureInfo> >(); try { using (var session = DismApi.OpenOnlineSession()) { retVal.AddRange(enumerable.Where(key => !string.IsNullOrWhiteSpace(key)) .Select(featureName => new KeyValuePair <string, DismFeatureInfo>(featureName, DismApi.GetFeatureInfo(session, featureName)))); } } finally { DismApi.Shutdown(); } await Task.Delay(200).ConfigureAwait(false); return(retVal); }