cosmetic changes only

This commit is contained in:
2021-10-09 02:36:34 +03:00
parent b8f328a458
commit 415838753c

View File

@@ -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());