private void OnStartup(object sender, StartupEventArgs eventArguments)
        {
            try
            {
                ProcessStartupArguments(AdaptStartupArguments(eventArguments.Args));

                Current.ShutdownMode = ShutdownMode.OnExplicitShutdown;

                ApplicationHelpers.InitializeLoggers();

                Log = ApplicationHelpers.CreateActiveLogger(EWpfClientLogCategory.WpfClient);
                Log.Info(ECoreLogMessage.Started);

                try
                {
                    ApplicationHelpers.Initialize(_generateDatabase, _readOnlyJson, _readPreviouslyUnpackedJson);
                }
                catch (SettingsFileRegeneratedException)
                {
                    Log.Warn(EWpfClientLogMessage.SettingsFileRenegenetated_Closing);

                    MessageBox.Show
                    (
                        Current.Windows.OfType <BaseWindow>().LastOrDefault() ?? new Window(),
                        EUnlocalisedMessage.SettingFileRegenerated,
                        EClientApplicationName.WarThunderPresetRandomizer,
                        MessageBoxButton.OK,
                        MessageBoxImage.Warning
                    );
                    Environment.Exit(0);
                }

                ApplicationHelpers.Manager.RemoveOldLogFiles();
                ApplicationHelpers.WindowFactory.CreateLoadingWindow().ShowDialog();

                CreateMainWindow().ShowDialog();
            }
            catch (Exception exception)
            {
                Log?.Fatal(ECoreLogMessage.AnErrorHasOccurred, exception);
                ShowErrorMessage(exception);
                Environment.Exit(1);
            }
        }
        /// <summary> Initializes NLog-based loggers. Repeated initialization is being skipped. </summary>
        public static void InitializeLoggers()
        {
            if (_loggersInitialized)
            {
                return;
            }

            var fileLogger = new ConfiguredNLogger(ELoggerName.FileLogger, new ExceptionFormatter(), ESubdirectory.Logs, true);

            var wpfLogger = new ConfiguredNLogger(ELoggerName.WpfLogger, new ExceptionFormatter());

            wpfLogger.LogInstantiation(fileLogger);

            Loggers = new IConfiguredLogger[]
            {
                fileLogger,
                wpfLogger,
            };

            Log = CreateActiveLogger(EWpfClientLogCategory.ApplicationHelpers);

            Log.Debug(ECoreLogMessage.InstanceInitialised.FormatFluently(EWord.Loggers));
            _loggersInitialized = true;
        }