Skip to content

Commit a966943

Browse files
committed
Startup task checker tweaks
1 parent c0d2e4c commit a966943

File tree

2 files changed

+38
-3
lines changed

2 files changed

+38
-3
lines changed

app/Helpers/Startup.cs

Lines changed: 37 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
using GHelper.Helpers;
22
using Microsoft.Win32.TaskScheduler;
3+
using System.Diagnostics;
4+
using System.Reflection;
35
using System.Security.Principal;
46

57
public class Startup
@@ -42,9 +44,42 @@ public static void StartupCheck()
4244
try
4345
{
4446
string action = task.Definition.Actions.FirstOrDefault()!.ToString().Trim();
45-
if (!strExeFilePath.Equals(action, StringComparison.OrdinalIgnoreCase) && !File.Exists(action))
47+
bool needsReschedule = false;
48+
49+
if (!strExeFilePath.Equals(action, StringComparison.OrdinalIgnoreCase))
50+
{
51+
if (!File.Exists(action))
52+
{
53+
Logger.WriteLine("Startup file doesn't exist: " + action);
54+
needsReschedule = true;
55+
}
56+
else
57+
{
58+
try
59+
{
60+
var currentVer = Assembly.GetEntryAssembly().GetName().Version;
61+
var fv = FileVersionInfo.GetVersionInfo(action).FileVersion.Split('.');
62+
var scheduledVer = new Version(
63+
int.Parse(fv[0]),
64+
fv.Length > 1 ? int.Parse(fv[1]) : 0,
65+
fv.Length > 2 ? int.Parse(fv[2]) : 0,
66+
fv.Length > 3 ? int.Parse(fv[3]) : 0
67+
);
68+
if (currentVer > scheduledVer)
69+
{
70+
Logger.WriteLine($"Startup file is older {scheduledVer}, current is {currentVer}");
71+
needsReschedule = true;
72+
}
73+
}
74+
catch (Exception ex)
75+
{
76+
Logger.WriteLine("Can't compare assembly versions: " + ex.Message);
77+
}
78+
}
79+
}
80+
81+
if (needsReschedule)
4682
{
47-
Logger.WriteLine("Startup file doesn't exist: " + action);
4883
if (task.Definition.Principal.RunLevel == TaskRunLevel.Highest && !ProcessHelper.IsUserAdministrator())
4984
{
5085
ProcessHelper.RunAsAdmin();

app/Program.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ public static void Main(string[] args)
178178
});
179179
break;
180180
default:
181-
Startup.StartupCheck();
181+
Task.Run(Startup.StartupCheck);
182182
break;
183183
}
184184

0 commit comments

Comments
 (0)