private static IEnumerable <ScheduledTaskXmlModel> GetInstallerScheduledTasks(DirectoryInfo installDirectory)
        {
            DirectoryInfo directoryInfo = new DirectoryInfo(installDirectory + "\\Config");

            foreach (FileInfo file in directoryInfo.EnumerateFiles("*.xml", SearchOption.TopDirectoryOnly).Where(f => !f.Name.StartsWith("Monet", StringComparison.CurrentCulture)))
            {
                if (TryGetScheduledTaskXDocument(file, out XDocument xDoc))
                {
                    ScheduledTaskXmlModel scheduledTask = new ScheduledTaskXmlModel(file);
                    XNamespace            xNs           = xDoc.Root.GetDefaultNamespace();

                    //Not every file has a URI specified :(
                    XElement uri = xDoc.Root.Element(xNs + "RegistrationInfo").Element(xNs + "URI");
                    if (uri != null)
                    {
                        scheduledTask.Uri = uri.Value;
                    }

                    scheduledTask.Description = xDoc.Root.Element(xNs + "RegistrationInfo").Element(xNs + "Description").Value;
                    scheduledTask.Enabled     = bool.Parse(xDoc.Root.Element(xNs + "Settings").Element(xNs + "Enabled").Value);

                    string command   = xDoc.Root.Element(xNs + "Actions").Element(xNs + "Exec").Element(xNs + "Command").Value;
                    string arguments = xDoc.Root.Element(xNs + "Actions").Element(xNs + "Exec").Element(xNs + "Arguments").Value;
                    scheduledTask.Command = $"{command} {arguments}";

                    StaticViewModel.AddDebugMessage($"Found scheduled task {uri} in {file.FullName}");
                    yield return(scheduledTask);
                }
            }
        }
        public static void SetScheduledTaskStatusAndUnhide(ScheduledTaskXmlModel scheduledTaskToUpdate)
        {
            if (scheduledTaskToUpdate == null)
            {
                throw new ArgumentNullException(nameof(scheduledTaskToUpdate));
            }

            if (!TryGetScheduledTaskXDocument(scheduledTaskToUpdate.GetFile(), out XDocument xDoc))
            {
                throw new IOException();
            }

            XNamespace xNs = xDoc.Root.GetDefaultNamespace();

            xDoc.Root.Element(xNs + "Settings").Element(xNs + "Enabled").Value = scheduledTaskToUpdate.Enabled.ToString();
            xDoc.Root.Element(xNs + "Settings").Element(xNs + "Hidden").Value  = bool.FalseString;

            xDoc.Save(scheduledTaskToUpdate.GetFile().FullName, SaveOptions.None);
        }
Beispiel #3
0
        public static void UnhideAndDisableScheduledTask(ScheduledTaskXmlModel scheduledTaskToRemove)
        {
            if (scheduledTaskToRemove == null)
            {
                throw new NullReferenceException();
            }

            if (!TryGetScheduledTaskXDocument(scheduledTaskToRemove.File, out XDocument xDoc))
            {
                throw new IOException();
            }

            XNamespace xNs = xDoc.Root.GetDefaultNamespace();

            xDoc.Root.Element(xNs + "Settings").Element(xNs + "Enabled").Value = bool.FalseString;
            xDoc.Root.Element(xNs + "Settings").Element(xNs + "Hidden").Value  = bool.FalseString;

            xDoc.Save(scheduledTaskToRemove.File.FullName, SaveOptions.None);
        }