public static List <string> DISMlist() { List <string> result = new List <string>(220); try { DismApi.Initialize(DismLogLevel.LogErrors); var dismsession = DismApi.OpenOnlineSession(); var listupdate = DismApi.GetPackages(dismsession); int ab = listupdate.Count; //Console.WriteLine("Количество обновлений через DISM: " + ab); string sw = "Количество обновлений через DISM: " + ab; result.Add(sw); foreach (DismPackage feature in listupdate) { result.Add(feature.PackageName); //result.Add($"[Имя пакета] {feature.PackageName}"); //result.Add($"[Дата установки] {feature.InstallTime}"); //result.Add($"[Тип обновления] {feature.ReleaseType}"); } } catch (Exception ex) { result.Add("Что-то пошло не так: " + ex.Message); } return(result); }
public void GetPackageInfoExSimple() { using (DismSession session = DismApi.OpenOnlineSession()) { DismPackage package = DismApi.GetPackages(session).FirstOrDefault(i => i.PackageState == DismPackageFeatureState.Installed); package.ShouldNotBeNull(); DismPackageInfoEx packageInfoEx = DismApi.GetPackageInfoExByName(session, package.PackageName); packageInfoEx.CapabilityId.ShouldNotBeNullOrWhiteSpace(); } }
public static void UninstallPEComponents(string ospath, ProgressCallback progressCallback) { // // Initialize DISM log // string tempLog = Path.GetTempFileName(); DismApi.Initialize(DismLogLevel.LogErrorsWarningsInfo, tempLog); var session = DismApi.OpenOfflineSession(ospath); var packages = DismApi.GetPackages(session); List <DismPackage> componentsToRemove = new List <DismPackage>(); // // Queue components we don't need according to our hardcoded list for removal // foreach (var package in packages) { if (componentsNotInWinPE.Any(x => package.PackageName.StartsWith(x, StringComparison.InvariantCultureIgnoreCase))) { componentsToRemove.Add(package); } } // // Remove components // foreach (var pkg in componentsToRemove) { try { void callback3(DismProgress progress) { progressCallback?.Invoke(false, (int)Math.Round((double)progress.Current / progress.Total * 100), "Removing " + pkg.PackageName); } DismApi.RemovePackageByName(session, pkg.PackageName, callback3); } catch //(Exception ex) { } } // // Clean DISM // DismApi.CloseSession(session); DismApi.Shutdown(); File.Delete(tempLog); }