cosmetic changes only
This commit is contained in:
@@ -1,24 +1,20 @@
|
|||||||
using Microsoft.Win32.TaskScheduler;
|
using Microsoft.Win32.TaskScheduler;
|
||||||
using Newtonsoft.Json.Linq;
|
using Newtonsoft.Json.Linq;
|
||||||
namespace Installizer
|
namespace Installizer {
|
||||||
{
|
public class Tasker {
|
||||||
public class Tasker
|
|
||||||
{
|
|
||||||
|
|
||||||
#region Constructors
|
#region Constructors
|
||||||
private string TaskName;
|
private string TaskName;
|
||||||
string TaskPath;
|
private string TaskPath;
|
||||||
TaskService serv;
|
private TaskService serv;
|
||||||
TaskDefinition taskDefinition;
|
private TaskDefinition taskDefinition;
|
||||||
public Tasker(string TaskName, string TaskPath)
|
public Tasker(string TaskName, string TaskPath) {
|
||||||
{
|
|
||||||
this.TaskName = TaskName;
|
this.TaskName = TaskName;
|
||||||
this.TaskPath = TaskPath;
|
this.TaskPath = TaskPath;
|
||||||
this.serv = new();
|
this.serv = new();
|
||||||
this.taskDefinition = this.serv.NewTask();
|
this.taskDefinition = this.serv.NewTask();
|
||||||
}
|
}
|
||||||
public Tasker(string TaskName, string TaskPath, string description)
|
public Tasker(string TaskName, string TaskPath, string description) {
|
||||||
{
|
|
||||||
this.TaskName = TaskName;
|
this.TaskName = TaskName;
|
||||||
this.TaskPath = TaskPath;
|
this.TaskPath = TaskPath;
|
||||||
this.serv = new();
|
this.serv = new();
|
||||||
@@ -31,8 +27,7 @@ namespace Installizer
|
|||||||
/// This function adds description to the scheduled task.
|
/// This function adds description to the scheduled task.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="description"> the description text to add</param>
|
/// <param name="description"> the description text to add</param>
|
||||||
public void TaskDescribe(string description)
|
public void TaskDescribe(string description) {
|
||||||
{
|
|
||||||
this.taskDefinition.RegistrationInfo.Description = description;
|
this.taskDefinition.RegistrationInfo.Description = description;
|
||||||
this.taskDefinition.RegistrationInfo.Author = $"{System.Environment.MachineName}\\{System.Environment.UserName}";
|
this.taskDefinition.RegistrationInfo.Author = $"{System.Environment.MachineName}\\{System.Environment.UserName}";
|
||||||
}
|
}
|
||||||
@@ -43,8 +38,7 @@ namespace Installizer
|
|||||||
/// <param name="enable">enables the task. the default is true</param>
|
/// <param name="enable">enables the task. the default is true</param>
|
||||||
/// <param name="startwhenavailibale">starts the task if it missed, when the computer is availible. the defult is true</param>
|
/// <param name="startwhenavailibale">starts the task if it missed, when the computer is availible. the defult is true</param>
|
||||||
/// <param name="hidden">hides the running. the default is false</param>
|
/// <param name="hidden">hides the running. the default is false</param>
|
||||||
public void TaskSettingsDefine(bool batteries = true, bool enable = true, bool startwhenavailibale = true, bool hidden = false)
|
public void TaskSettingsDefine(bool batteries = true, bool enable = true, bool startwhenavailibale = true, bool hidden = false) {
|
||||||
{
|
|
||||||
this.taskDefinition.Settings.DisallowStartIfOnBatteries = !batteries;
|
this.taskDefinition.Settings.DisallowStartIfOnBatteries = !batteries;
|
||||||
this.taskDefinition.Settings.StopIfGoingOnBatteries = !batteries;
|
this.taskDefinition.Settings.StopIfGoingOnBatteries = !batteries;
|
||||||
this.taskDefinition.Settings.Enabled = enable;
|
this.taskDefinition.Settings.Enabled = enable;
|
||||||
@@ -52,104 +46,78 @@ namespace Installizer
|
|||||||
this.taskDefinition.Settings.Hidden = hidden;
|
this.taskDefinition.Settings.Hidden = hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void TaskPrincipal(bool highest = false, bool service = false, string user = "")
|
public void TaskPrincipal(bool highest = false, bool service = false, string user = "") {
|
||||||
{
|
if (highest) {
|
||||||
if (highest)
|
|
||||||
{
|
|
||||||
this.taskDefinition.Principal.RunLevel = TaskRunLevel.Highest;
|
this.taskDefinition.Principal.RunLevel = TaskRunLevel.Highest;
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
this.taskDefinition.Principal.RunLevel = TaskRunLevel.LUA;
|
this.taskDefinition.Principal.RunLevel = TaskRunLevel.LUA;
|
||||||
}
|
}
|
||||||
if (service)
|
if (service) {
|
||||||
{
|
|
||||||
this.taskDefinition.Principal.LogonType = TaskLogonType.S4U;
|
this.taskDefinition.Principal.LogonType = TaskLogonType.S4U;
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
this.taskDefinition.Principal.LogonType = TaskLogonType.Password;
|
this.taskDefinition.Principal.LogonType = TaskLogonType.Password;
|
||||||
}
|
}
|
||||||
if (user != "")
|
if (user != "") {
|
||||||
{
|
|
||||||
this.taskDefinition.Principal.Id = user;
|
this.taskDefinition.Principal.Id = user;
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
this.taskDefinition.Principal.Id = $"{System.Environment.MachineName}\\{System.Environment.UserName}";
|
this.taskDefinition.Principal.Id = $"{System.Environment.MachineName}\\{System.Environment.UserName}";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public void TaskEventTriggerDefine(string logName, string logSource, int eventID)
|
public void TaskEventTriggerDefine(string logName, string logSource, int eventID) {
|
||||||
{
|
EventTrigger trigger = new();
|
||||||
EventTrigger trigger = new EventTrigger();
|
|
||||||
trigger.Enabled = true;
|
trigger.Enabled = true;
|
||||||
trigger.SetBasic(logName, logSource, eventID);
|
trigger.SetBasic(logName, logSource, eventID);
|
||||||
this.taskDefinition.Triggers.Add(trigger);
|
this.taskDefinition.Triggers.Add(trigger);
|
||||||
}
|
}
|
||||||
|
public void TaskDailyTriggerrDefine(string hour) {
|
||||||
public void TaskDailyTriggerrDefine(string hour)
|
|
||||||
{
|
|
||||||
DailyTrigger trigger = new();
|
DailyTrigger trigger = new();
|
||||||
trigger.Enabled = true;
|
trigger.Enabled = true;
|
||||||
int h = System.Int32.Parse(hour.Split(":")[0]);
|
int h = int.Parse(hour.Split(":")[0]);
|
||||||
int m = System.Int32.Parse(hour.Split(":")[1]);
|
int m = int.Parse(hour.Split(":")[1]);
|
||||||
trigger.StartBoundary = System.DateTime.Today + System.TimeSpan.FromHours(h) + System.TimeSpan.FromMinutes(m);
|
trigger.StartBoundary = System.DateTime.Today + System.TimeSpan.FromHours(h) + System.TimeSpan.FromMinutes(m);
|
||||||
//trigger.Repetition.Duration = System.TimeSpan.FromDays(1);
|
//trigger.Repetition.Duration = System.TimeSpan.FromDays(1);
|
||||||
//trigger.Repetition.Interval = System.TimeSpan.FromMinutes(1);
|
//trigger.Repetition.Interval = System.TimeSpan.FromMinutes(1);
|
||||||
this.taskDefinition.Triggers.Add(trigger);
|
this.taskDefinition.Triggers.Add(trigger);
|
||||||
}
|
}
|
||||||
public void TaskDailyTriggersDefine(string[] hours)
|
public void TaskDailyTriggersDefine(string[] hours) {
|
||||||
{
|
foreach (string hour in hours) {
|
||||||
foreach (string hour in hours)
|
|
||||||
{
|
|
||||||
TaskDailyTriggerrDefine(hour);
|
TaskDailyTriggerrDefine(hour);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public void TaskWeeklyTriggerDefine(string hour, int day)
|
public void TaskWeeklyTriggerDefine(WeeklyTrigger trig) {
|
||||||
{
|
this.taskDefinition.Triggers.Add(trig);
|
||||||
WeeklyTrigger trigger = WeeklyTriggerCreate(hour, day);
|
|
||||||
this.taskDefinition.Triggers.Add(trigger);
|
|
||||||
}
|
}
|
||||||
public void TaskActionsDefine(string app, string? argus, string? location)
|
public void TaskWeeklyTriggerDefine(string hour, int day) {
|
||||||
{
|
this.taskDefinition.Triggers.Add(WeeklyTriggerCreate(hour, day));
|
||||||
|
}
|
||||||
|
public void TaskActionsDefine(string app, string? argus, string? location) {
|
||||||
ExecAction action = new();
|
ExecAction action = new();
|
||||||
action.Path = app;
|
action.Path = app;
|
||||||
if (argus != null)
|
if (argus != null) {
|
||||||
{
|
|
||||||
action.Arguments = argus;
|
action.Arguments = argus;
|
||||||
}
|
}
|
||||||
if (location != null)
|
if (location != null) {
|
||||||
{
|
|
||||||
action.WorkingDirectory = location;
|
action.WorkingDirectory = location;
|
||||||
}
|
}
|
||||||
this.taskDefinition.Actions.Add(action);
|
this.taskDefinition.Actions.Add(action);
|
||||||
}
|
}
|
||||||
public void TaskActionsDefine(string[] apps, string?[] argus, string?[] locations)
|
public void TaskActionsDefine(string[] apps, string?[] argus, string?[] locations) {
|
||||||
{
|
for (int i = 0; i < apps.Length; i++) {
|
||||||
for (int i = 0; i < apps.Length; i++)
|
|
||||||
{
|
|
||||||
TaskActionsDefine(apps[i], argus[i], locations[i]);
|
TaskActionsDefine(apps[i], argus[i], locations[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public void TaskWeeklyTriggerDefine(string hour, int[] days)
|
public void TaskWeeklyTriggerDefine(string hour, int[] days) {
|
||||||
{
|
|
||||||
this.taskDefinition.Triggers.Add(WeeklyTriggerCreate(hour, days));
|
this.taskDefinition.Triggers.Add(WeeklyTriggerCreate(hour, days));
|
||||||
}
|
}
|
||||||
public void TaskWeeklyTriggerDefine(string[] hours, int[] days)
|
public void TaskWeeklyTriggerDefine(string[] hours, int[] days) {
|
||||||
{
|
foreach (string hour in hours) {
|
||||||
foreach (string hour in hours)
|
|
||||||
{
|
|
||||||
TaskWeeklyTriggerDefine(hour, days);
|
TaskWeeklyTriggerDefine(hour, days);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public void RegisterTask()
|
public void RegisterTask() {
|
||||||
{
|
try {
|
||||||
try
|
|
||||||
{
|
|
||||||
this.serv.RootFolder.RegisterTaskDefinition($"{this.TaskPath}\\{this.TaskName}", this.taskDefinition);
|
this.serv.RootFolder.RegisterTaskDefinition($"{this.TaskPath}\\{this.TaskName}", this.taskDefinition);
|
||||||
}
|
} catch {
|
||||||
catch
|
|
||||||
{
|
|
||||||
this.serv.RootFolder.RegisterTaskDefinition(this.TaskPath, this.taskDefinition);
|
this.serv.RootFolder.RegisterTaskDefinition(this.TaskPath, this.taskDefinition);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -160,59 +128,47 @@ namespace Installizer
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Helpers
|
#region Helpers
|
||||||
private System.DateTime Day(int day)
|
private System.DateTime Day(int day) {
|
||||||
{
|
if (day > 0 && day < 8) {
|
||||||
if (day > 0 && day < 8)
|
|
||||||
{
|
|
||||||
return new System.DateTime(1977, 12, 31).AddDays(day);
|
return new System.DateTime(1977, 12, 31).AddDays(day);
|
||||||
}
|
}
|
||||||
return new System.DateTime(1978, 1, 1);
|
return new System.DateTime(1978, 1, 1);
|
||||||
}
|
}
|
||||||
private System.DateTime HourTime(string time)
|
private System.DateTime HourTime(string time) {
|
||||||
{
|
|
||||||
return System.DateTime.Parse(time);
|
return System.DateTime.Parse(time);
|
||||||
}
|
}
|
||||||
private WeeklyTrigger WeeklyTriggerCreate(string hour, int day)
|
private WeeklyTrigger WeeklyTriggerCreate(string hour, int day) {
|
||||||
{
|
|
||||||
|
|
||||||
WeeklyTrigger trigger = new();
|
WeeklyTrigger trigger = new();
|
||||||
DaysOfTheWeek dayS;
|
DaysOfTheWeek dayS;
|
||||||
switch (day)
|
switch (day) {
|
||||||
{
|
case 1: {
|
||||||
case 1:
|
|
||||||
{
|
|
||||||
dayS = DaysOfTheWeek.Sunday;
|
dayS = DaysOfTheWeek.Sunday;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 2:
|
case 2: {
|
||||||
{
|
|
||||||
dayS = DaysOfTheWeek.Monday;
|
dayS = DaysOfTheWeek.Monday;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 3:
|
case 3: {
|
||||||
{
|
|
||||||
dayS = DaysOfTheWeek.Tuesday;
|
dayS = DaysOfTheWeek.Tuesday;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 4:
|
case 4: {
|
||||||
{
|
|
||||||
dayS = DaysOfTheWeek.Wednesday;
|
dayS = DaysOfTheWeek.Wednesday;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
case 5:
|
case 5: {
|
||||||
{
|
|
||||||
dayS = DaysOfTheWeek.Thursday;
|
dayS = DaysOfTheWeek.Thursday;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
case 6:
|
case 6: {
|
||||||
{
|
|
||||||
dayS = DaysOfTheWeek.Friday;
|
dayS = DaysOfTheWeek.Friday;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default: {
|
||||||
{
|
|
||||||
dayS = DaysOfTheWeek.Saturday;
|
dayS = DaysOfTheWeek.Saturday;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -221,57 +177,46 @@ namespace Installizer
|
|||||||
trigger.StartBoundary = System.DateTime.Parse(hour, System.Globalization.CultureInfo.InvariantCulture);
|
trigger.StartBoundary = System.DateTime.Parse(hour, System.Globalization.CultureInfo.InvariantCulture);
|
||||||
return trigger;
|
return trigger;
|
||||||
}
|
}
|
||||||
private WeeklyTrigger WeeklyTriggerCreate(string hour, int[] day)
|
private WeeklyTrigger WeeklyTriggerCreate(string hour, int[] day) {
|
||||||
{
|
|
||||||
|
|
||||||
WeeklyTrigger trigger = new();
|
WeeklyTrigger trigger = new();
|
||||||
DaysOfTheWeek[] dayS = new DaysOfTheWeek[day.Length];
|
DaysOfTheWeek[] dayS = new DaysOfTheWeek[day.Length];
|
||||||
for (int i = 0; i < day.Length; i++)
|
for (int i = 0; i < day.Length; i++) {
|
||||||
{
|
|
||||||
|
|
||||||
switch (day[i])
|
switch (day[i]) {
|
||||||
{
|
case 1: {
|
||||||
case 1:
|
|
||||||
{
|
|
||||||
dayS[i] = DaysOfTheWeek.Sunday;
|
dayS[i] = DaysOfTheWeek.Sunday;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 2:
|
case 2: {
|
||||||
{
|
|
||||||
dayS[i] = DaysOfTheWeek.Monday;
|
dayS[i] = DaysOfTheWeek.Monday;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 3:
|
case 3: {
|
||||||
{
|
|
||||||
dayS[i] = DaysOfTheWeek.Tuesday;
|
dayS[i] = DaysOfTheWeek.Tuesday;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 4:
|
case 4: {
|
||||||
{
|
|
||||||
dayS[i] = DaysOfTheWeek.Wednesday;
|
dayS[i] = DaysOfTheWeek.Wednesday;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
case 5:
|
case 5: {
|
||||||
{
|
|
||||||
dayS[i] = DaysOfTheWeek.Thursday;
|
dayS[i] = DaysOfTheWeek.Thursday;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
case 6:
|
case 6: {
|
||||||
{
|
|
||||||
dayS[i] = DaysOfTheWeek.Friday;
|
dayS[i] = DaysOfTheWeek.Friday;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default: {
|
||||||
{
|
|
||||||
dayS[i] = DaysOfTheWeek.Saturday;
|
dayS[i] = DaysOfTheWeek.Saturday;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
foreach (var d in dayS)
|
foreach (var d in dayS) {
|
||||||
{
|
|
||||||
trigger.DaysOfWeek |= d;
|
trigger.DaysOfWeek |= d;
|
||||||
}
|
}
|
||||||
trigger.StartBoundary = System.DateTime.Parse(hour, System.Globalization.CultureInfo.InvariantCulture);
|
trigger.StartBoundary = System.DateTime.Parse(hour, System.Globalization.CultureInfo.InvariantCulture);
|
||||||
@@ -311,19 +256,16 @@ namespace Installizer
|
|||||||
// trigger.StartBoundary = new DateTime[dates.Length];
|
// trigger.StartBoundary = new DateTime[dates.Length];
|
||||||
//}
|
//}
|
||||||
#region Jsoner
|
#region Jsoner
|
||||||
public static void ExportJson(string path, Tasker task)
|
public static void ExportJson(string path, Tasker task) {
|
||||||
{
|
|
||||||
var tas = Newtonsoft.Json.JsonConvert.SerializeObject(task, Newtonsoft.Json.Formatting.Indented);
|
var tas = Newtonsoft.Json.JsonConvert.SerializeObject(task, Newtonsoft.Json.Formatting.Indented);
|
||||||
System.IO.File.WriteAllText(path, tas);
|
System.IO.File.WriteAllText(path, tas);
|
||||||
}
|
}
|
||||||
public void ExportJson()
|
public void ExportJson() {
|
||||||
{
|
|
||||||
JObject Task = new();
|
JObject Task = new();
|
||||||
Task.Add(new JProperty("TaskName", this.TaskName));
|
Task.Add(new JProperty("TaskName", this.TaskName));
|
||||||
Task.Add(new JProperty("TaskPath", this.TaskPath));
|
Task.Add(new JProperty("TaskPath", this.TaskPath));
|
||||||
JArray actions = new();
|
JArray actions = new();
|
||||||
foreach (var act in this.taskDefinition.Actions)
|
foreach (var act in this.taskDefinition.Actions) {
|
||||||
{
|
|
||||||
|
|
||||||
JArray array = new();
|
JArray array = new();
|
||||||
array.Add(((ExecAction)act).Path);
|
array.Add(((ExecAction)act).Path);
|
||||||
@@ -331,24 +273,21 @@ namespace Installizer
|
|||||||
array.Add(((ExecAction)act).WorkingDirectory);
|
array.Add(((ExecAction)act).WorkingDirectory);
|
||||||
actions.Add(array);
|
actions.Add(array);
|
||||||
}
|
}
|
||||||
foreach (var trig in this.taskDefinition.Triggers)
|
foreach (var trig in this.taskDefinition.Triggers) {
|
||||||
{
|
JArray triggers = new();
|
||||||
JArray triggers = new JArray();
|
|
||||||
// TODO: continue
|
// TODO: continue
|
||||||
}
|
}
|
||||||
//Task.Add(new JProperty())
|
//Task.Add(new JProperty())
|
||||||
}
|
}
|
||||||
public static TriggerCollection GetDailyTrigger(JObject triggers)
|
public static TriggerCollection GetDailyTrigger(JObject triggers) {
|
||||||
{
|
|
||||||
TaskService task = new();
|
TaskService task = new();
|
||||||
|
|
||||||
TriggerCollection result = task.NewTask().Triggers;
|
TriggerCollection result = task.NewTask().Triggers;
|
||||||
|
|
||||||
foreach (var trig in triggers["dayly"])
|
foreach (var trig in triggers["dayly"]) {
|
||||||
{
|
DailyTrigger trigger = new();
|
||||||
DailyTrigger trigger = new DailyTrigger();
|
int h = int.Parse(trig.ToString().Split(":")[0]);
|
||||||
int h = System.Int32.Parse(trig.ToString().Split(":")[0]);
|
int m = int.Parse(trig.ToString().Split(":")[1]);
|
||||||
int m = System.Int32.Parse(trig.ToString().Split(":")[1]);
|
|
||||||
trigger.StartBoundary = System.DateTime.Today + System.TimeSpan.FromHours(h) + System.TimeSpan.FromMinutes(m);
|
trigger.StartBoundary = System.DateTime.Today + System.TimeSpan.FromHours(h) + System.TimeSpan.FromMinutes(m);
|
||||||
trigger.Repetition.Duration = System.TimeSpan.FromDays(1);
|
trigger.Repetition.Duration = System.TimeSpan.FromDays(1);
|
||||||
trigger.Repetition.Interval = System.TimeSpan.FromMinutes(1);
|
trigger.Repetition.Interval = System.TimeSpan.FromMinutes(1);
|
||||||
@@ -366,8 +305,7 @@ namespace Installizer
|
|||||||
|
|
||||||
// }
|
// }
|
||||||
//}
|
//}
|
||||||
public static void ImportTasks(string jsonFile)
|
public static void ImportTasks(string jsonFile) {
|
||||||
{
|
|
||||||
|
|
||||||
JObject SchedTask = (JObject)Newtonsoft.Json.JsonConvert.DeserializeObject(System.IO.File.ReadAllText(jsonFile));
|
JObject SchedTask = (JObject)Newtonsoft.Json.JsonConvert.DeserializeObject(System.IO.File.ReadAllText(jsonFile));
|
||||||
Tasker tasker = new(SchedTask["TaskName"].ToString(), SchedTask["TaskPath"].ToString(), SchedTask["Description"].ToString());
|
Tasker tasker = new(SchedTask["TaskName"].ToString(), SchedTask["TaskPath"].ToString(), SchedTask["Description"].ToString());
|
||||||
|
Reference in New Issue
Block a user