private void EnforcePump() { Task.Run(() => { while (true) { try { var scheduledobject = _objectsToEnforce.Take(); _allowFastReboot = scheduledobject.IsAutoSchedule; SqlCe.SetEnforcedFlag(scheduledobject.Id); if (scheduledobject.EnforcementType.Equals("APP")) { var cmapp = CcmUtils.GetSpecificApp(scheduledobject); if (cmapp == null) { Globals.Log.Warning($"A scheduled enforcement '{scheduledobject.ObjectId}/{scheduledobject.Revision}' could not be performed. Deployment has been removed or changed?"); continue; } if (scheduledobject.Action.Equals("I")) { if (cmapp.IsIpuApplication && _settings.IpuApplication.ShowDialog1 && UnsafeNativeMethods.IsUserLoggedOn()) { if (UnsafeNativeMethods.Run(_userApp, "/ShowIpuDialog1", true) == 0) { //RegistryMethods.SetIpuIsRunning(); //CcmUtils.InstallApplication(cmapp); InstallIpuApplication(cmapp); Globals.Log.Information($"User pressed 'Install' feature updated '{cmapp.Name}'"); } else { SqlCe.DeleteAppSchedule(cmapp.Id, cmapp.Revision); Globals.Log.Warning($"User aborted a scheduled Windows feature upgrade '{cmapp.Name}'"); } } else if (cmapp.IsIpuApplication) { //RegistryMethods.SetIpuIsRunning(); InstallIpuApplication(cmapp); //CcmUtils.InstallApplication(cmapp); } else { CcmUtils.InstallApplication(cmapp); } } else if (scheduledobject.Action.Equals("R")) { CcmUtils.RepairApplication(cmapp); } else { CcmUtils.UninstallApplication(cmapp); } } else if (scheduledobject.EnforcementType.Equals("SUP")) { Globals.Log.Information("Installing updates, disabling component servicing reboot detection until rebooted."); _rebootServicingCheck = false; Set_SupCheckBlocked(); SqlCe.UpdateSupData("STD", string.Empty); CcmUtils.ExecuteInstallUpdates(true); } } catch (Exception ex) { Globals.Log.Error(ex.Message); } } }); }