Пример #1
0
        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));
        }
Пример #2
0
        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);
        }