private void CheckUpdates(ChocoUpdater updater)
        {
            Task.Run(async() =>
            {
                if (await updater.IsNewVersionAvailable())
                {
                    var mySettings = new MetroDialogSettings()
                    {
                        DefaultButtonFocus       = MessageDialogResult.Affirmative,
                        AffirmativeButtonText    = "Update",
                        NegativeButtonText       = "Do not update",
                        FirstAuxiliaryButtonText = "Cancel"
                    };

                    var result = await _dialogCoordinator.ShowMessageAsync(this, "Newer version was detected!", "Do you want to update dependency-scanner?",
                                                                           MessageDialogStyle.AffirmativeAndNegativeAndSingleAuxiliary, mySettings);

                    if (result == MessageDialogResult.Affirmative)
                    {
                        updater.Update();

                        await DispatcherHelper.RunAsync(() =>
                        {
                            Application.Current.Shutdown();
                        }).Task;
                    }
                }
            });
        }
        public MainViewModel(IEnumerable <IPlugin> plugins,
                             ObservableProgress progress,
                             EventSink eventSink,
                             MainSettings settings,
                             CommandManagerSettings commandSettings,
                             string logPath,
                             IDialogCoordinator dialogCoordinator,
                             ChocoUpdater chocoUpdater)
        {
            _dialogCoordinator = dialogCoordinator;

            CommandSettings = commandSettings;
#if DEBUG
            CheckUpdates(chocoUpdater);
#endif
            Plugins = plugins.OrderBy(a => a.Order);

            Settings = settings;

            // build settings list
            SettingsList = new List <SettingsViewModel>()
            {
                new SettingsViewModel("View settings", new MainSettingsView
                {
                    DataContext = settings
                })
            }
            .Concat(ReadSettings(Plugins));

            Progress = progress;

            LogPath = logPath;

            // subscribe to errors from serilog
            eventSink.NotifyEvent += (s, e) =>
            {
                Notification = e;
            };

            foreach (var plugin in Plugins)
            {
                plugin.OnStarted();
            }

            Services.CommandManager.Settings = commandSettings;
        }