internal static void Main() { SetUnhandledExceptions(); Info.SetApplicationVersion(); Logging.Info(String.Format("-------------------------------Title: {0} started Version:{1} Date:{2}-------------------------------", Info.TitleVersion, Info.DLLVersion, Info.BuildDate)); Logging.Info("Start state 1 Complete: Unhandled exceptions"); LogGeneralProperties(); Logging.Info("Start state 2 Complete: Log General properties"); SetApplicationProperties(); Logging.Info("Start state 3 Complete: Set application properties"); var settings = Settings.Instance; CommandLineArgs commandLine = ParseCommandline(settings); Logging.Info("Start state 4 Complete: Parse command line"); if (!EnsureDataAreWriteAble()) { return; } Logging.Info("Start state 5 Complete: User account control"); if (commandLine.SingleInstance && SingleInstanceApplication.Instance.NotifyExisting(commandLine)) { return; } Logging.Info("Start state 6 Complete: Set Single instance mode"); var connectionManager = new ConnectionManager(new PluginsLoader(settings)); var favoriteIcons = new FavoriteIcons(connectionManager); var persistenceFactory = new PersistenceFactory(settings, connectionManager, favoriteIcons); // do it before config update, because it may import favorites from previous version IPersistence persistence = persistenceFactory.CreatePersistence(); Logging.Info("Start state 7 Complete: Initilizing Persistence"); TryUpdateConfig(settings, persistence, connectionManager); Logging.Info("Start state 8 Complete: Configuration upgrade"); ShowFirstRunWizard(settings, persistence, connectionManager); var startupUi = new StartupUi(); persistence = persistenceFactory.AuthenticateByMasterPassword(persistence, startupUi, commandLine.masterPassword); PersistenceErrorForm.RegisterDataEventHandler(persistence.Dispatcher); RunMainForm(persistence, connectionManager, favoriteIcons, commandLine); Logging.Info(String.Format("-------------------------------{0} Stopped-------------------------------", Info.TitleVersion)); }
private static IPersistence AuthenticateByMasterPassword(PersistenceFactory persistenceFactory, IPersistence persistence) { IPersistence newPersistence = persistence; PersistenceErrorForm.RegisterDataEventHandler(persistence.Dispatcher); if (!persistence.Security.Authenticate(RequestPassword.KnowsUserPassword)) { if (PersistenceFallback()) { newPersistence = persistenceFactory.FallBackToPrimaryPersistence(persistence.Security); } else { Environment.Exit(-1); } } return(newPersistence); }