public static void MainInner(string[] args) {
if (AppUpdater.OnStartup(args)) return;
var appGuid = ((GuidAttribute)Assembly.GetEntryAssembly().GetCustomAttributes(typeof(GuidAttribute), true).GetValue(0)).Value;
var mutexId = $@"Global\{{{appGuid}}}";
if (args.Contains(WindowsHelper.RestartArg)) {
for (var i = 0; i < 999; i++) {
Thread.Sleep(200);
using (var mutex = new Mutex(false, mutexId)) {
if (mutex.WaitOne(0, false)) {
break;
}
}
}
ProcessExtension.Start(MainExecutingFile.Location, args.Where(x => x != WindowsHelper.RestartArg));
return;
}
using (var mutex = new Mutex(false, mutexId)) {
SecondInstanceMessage = User32.RegisterWindowMessage(mutexId);
if (mutex.WaitOne(0, false)) {
App.CreateAndRun();
} else {
PassArgsToRunningInstance(args);
}
}
}