private async void Button_Install(object sender, RoutedEventArgs e) { AppIsWorking(true); var button = sender as Button; var plugin_status = ((Package)button.DataContext).Status; string plugin = ((Package)button.DataContext).Namespace ?? ((Package)button.DataContext).Modulename; consolestd = ""; consolestdL.Clear(); if (HasWriteAccessToFolder(CurrentPluginPath)) { switch (plugin_status) { case AvsApi.PluginStatus.Installed: if (MessageBox.Show("Uninstall " + ((Package)button.DataContext).Name + "?", "Uninstall?", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes) { await avsrepo.UninstallAsync(plugin); } break; case AvsApi.PluginStatus.InstalledUnknown: if (MessageBox.Show("Your local file (with unknown version) has the same name as " + ((Package)button.DataContext).Name + " and will be overwritten, proceed?", "Force Upgrade?", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes) { await avsrepo.UpgradeAsync(plugin, force : true); } break; case AvsApi.PluginStatus.NotInstalled: await avsrepo.InstallAsync(plugin); break; case AvsApi.PluginStatus.UpdateAvailable: await avsrepo.UpgradeAsync(plugin); break; } ConsoleBox.Focus(); ConsoleBox.CaretIndex = ConsoleBox.Text.Length; ConsoleBox.ScrollToEnd(); await ReloadPluginsAsync(); } else { MessageBox.Show("Can't write to plugins folder. Restart program as admin."); } AppIsWorking(false); }