public static void Main(string[] args) { try { WindowStartupFix.WindowsCheck(); Application.Init(); QSMain.GuiThread = System.Threading.Thread.CurrentThread; #if DEBUG var errorSettings = new ErrorReportingSettings(false, true, false, null); #else var errorSettings = new ErrorReportingSettings(true, false, true, 300); #endif UnhandledExceptionHandler.SubscribeToUnhadledExceptions(errorSettings); GtkGuiDispatcher.GuiThread = System.Threading.Thread.CurrentThread; UnhandledExceptionHandler.ApplicationInfo = new ApplicationVersionInfo(); //Настройка обычных обработчиков ошибок. UnhandledExceptionHandler.CustomErrorHandlers.Add(CommonErrorHandlers.MySqlException1055OnlyFullGroupBy); UnhandledExceptionHandler.CustomErrorHandlers.Add(CommonErrorHandlers.MySqlException1366IncorrectStringValue); UnhandledExceptionHandler.CustomErrorHandlers.Add(CommonErrorHandlers.NHibernateFlushAfterException); } catch (Exception falalEx) { if (WindowStartupFix.IsWindows) { WindowStartupFix.DisplayWindowsOkMessage(falalEx.ToString(), "Критическая ошибка"); } else { Console.WriteLine(falalEx); } logger.Fatal(falalEx); return; } CreateProjectParam(); try { AutofacClassConfig(); } catch (MissingMethodException ex) when(ex.Message.Contains("System.String System.String.Format")) { WindowStartupFix.DisplayWindowsOkMessage("Версия .Net Framework должна быть не ниже 4.6.1. Установите боллее новую платформу.", "Старая версия .Net"); } // Создаем окно входа Login LoginDialog = new QSProjectsLib.Login(); LoginDialog.Logo = Gdk.Pixbuf.LoadFromResource("CarGlass.icons.logo.png"); LoginDialog.SetDefaultNames("CarGlass"); LoginDialog.DefaultLogin = ""; LoginDialog.DefaultServer = "stekloff.qsolution.ru"; LoginDialog.UpdateFromGConf(); ResponseType LoginResult; LoginResult = (ResponseType)LoginDialog.Run(); if (LoginResult == ResponseType.DeleteEvent || LoginResult == ResponseType.Cancel) { return; } LoginDialog.Destroy(); //Настройка базы CreateBaseConfig(); // Для корректного удаления в справочниках QSOrmProject.OrmMain.DisableLegacyDeletion(); //Запускаем программу MainWin = new MainWindow(); QSMain.ErrorDlgParrent = MainWin; if (QSMain.User.Login == "root") { return; } MainWin.Show(); Application.Run(); }
public static void Main(string[] args) { UnhandledExceptionHandler unhandledExceptionHandler = new UnhandledExceptionHandler(); try { WindowStartupFix.WindowsCheck(); Application.Init(); QSMain.GuiThread = System.Threading.Thread.CurrentThread; GtkGuiDispatcher.GuiThread = System.Threading.Thread.CurrentThread; var builder = new ContainerBuilder(); AutofacStartupConfig(builder); startupContainer = builder.Build(); unhandledExceptionHandler.UpdateDependencies(startupContainer); unhandledExceptionHandler.SubscribeToUnhandledExceptions(); } catch (MissingMethodException ex) when(ex.Message.Contains("System.String System.String.Format")) { WindowStartupFix.DisplayWindowsOkMessage("Версия .Net Framework должна быть не ниже 4.6.1. Установите более новую платформу.", "Старая версия .Net"); return; } catch (Exception fallEx) { if (WindowStartupFix.IsWindows) { WindowStartupFix.DisplayWindowsOkMessage(fallEx.ToString(), "Критическая ошибка"); } else { Console.WriteLine(fallEx); } logger.Fatal(fallEx); return; } ILifetimeScope scopeLoginTime = startupContainer.BeginLifetimeScope(); // Создаем окно входа Login LoginDialog = new Login(); LoginDialog.Logo = Gdk.Pixbuf.LoadFromResource("workwear.icon.logo.png"); LoginDialog.SetDefaultNames("workwear"); LoginDialog.DefaultLogin = "******"; LoginDialog.DefaultServer = "demo.qsolution.ru"; LoginDialog.DefaultConnection = "Демонстрационная база"; Login.ApplicationDemoServer = "demo.qsolution.ru"; LoginDialog.DemoMessage = "Для подключения к демонстрационному серверу используйте следующие настройки:\n" + "\n" + "<b>Сервер:</b> demo.qsolution.ru\n" + "<b>Пользователь:</b> demo\n" + "<b>Пароль:</b> demo\n" + "\n" + "Для установки собственного сервера обратитесь к документации."; Login.CreateDBHelpTooltip = "Инструкция по установке сервера MySQL"; Login.CreateDBHelpUrl = "http://doc.qsolution.ru/workwear/" + new ApplicationVersionInfo().Version.ToString(2) + "/install.html#InstallDBServer"; LoginDialog.GetDBCreator = scopeLoginTime.Resolve <IDBCreator>; LoginDialog.UpdateFromGConf(); ResponseType LoginResult; LoginResult = (ResponseType)LoginDialog.Run(); if (LoginResult == ResponseType.DeleteEvent || LoginResult == ResponseType.Cancel) { return; } LoginDialog.Destroy(); scopeLoginTime.Dispose(); QSSaaS.Session.StartSessionRefresh(); //Прописываем системную валюту CurrencyWorks.CurrencyShortFomat = "{0:C}"; CurrencyWorks.CurrencyShortName = System.Globalization.CultureInfo.CurrentCulture.NumberFormat.CurrencySymbol; CreateBaseConfig(); //Настройка базы AppDIContainer = startupContainer.BeginLifetimeScope(AutofacClassConfig); //Создаем постоянный контейнер unhandledExceptionHandler.UpdateDependencies(AppDIContainer); //Настройка удаления Configure.ConfigureDeletion(); #if !DEBUG //Инициализируем телеметрию var applicationInfo = new ApplicationVersionInfo(); MainTelemetry.Product = applicationInfo.ProductName; MainTelemetry.Edition = applicationInfo.Modification; MainTelemetry.Version = applicationInfo.Version.ToString(); MainTelemetry.IsDemo = Login.ApplicationDemoServer == QSMain.connectionDB.DataSource; var appConfig = QSMachineConfig.MachineConfig.ConfigSource.Configs["Application"]; if (appConfig != null) { MainTelemetry.DoNotTrack = appConfig.GetBoolean("DoNotTrack", false); } MainTelemetry.StartUpdateByTimer(600); #else MainTelemetry.DoNotTrack = true; #endif //Запускаем программу MainWin = new MainWindow(); MainWin.Title += string.Format(" (БД: {0})", LoginDialog.SelectedConnection); if (QSMain.User.Login == "root") { return; } MainWin.Show(); Application.Run(); if (!MainTelemetry.SendingError) { MainTelemetry.SendTimeout = TimeSpan.FromSeconds(2); MainTelemetry.SendTelemetry(); } QSSaaS.Session.StopSessionRefresh(); AppDIContainer.Dispose(); startupContainer.Dispose(); }