private IEnumerable <ExtensionEntry> GetMissingExtensions(IVsExtensionManager manager) { IEnumerable <IInstalledExtension> installed = manager.GetInstalledExtensions(); IEnumerable <ExtensionEntry> notInstalled = LiveFeed.Extensions.Where(ext => !installed.Any(ins => ins.Header.Identifier == ext.Id)); return(notInstalled.Where(ext => !Store.HasBeenInstalled(ext.Id))); }
private IEnumerable <KeyValuePair <string, string> > GetMissingExtensions(IVsExtensionManager manager, DataStore store) { var installed = manager.GetInstalledExtensions(); var products = ExtensionList.Products(); var notInstalled = products.Where(product => !installed.Any(ins => ins.Header.Identifier == product.Key)).ToArray(); return(notInstalled.Where(ext => !store.HasBeenInstalled(ext.Key))); }
//I have been calling this from the VSPackage's Initilize, passing in the component model public bool CheckForUpdates(IComponentModel componentModel) { _extensionRepository = (IVsExtensionRepository)Microsoft.VisualStudio.Shell.Package.GetGlobalService(typeof(SVsExtensionRepository)); _extensionManager = (IVsExtensionManager)Microsoft.VisualStudio.Shell.Package.GetGlobalService(typeof(SVsExtensionManager)); //Find the extension you're after. var extension = _extensionManager.GetInstalledExtensions().Where(n => n.Header.Name == "Code Connect Alpha").SingleOrDefault(); return(CheckAndInstallNewVersion(extension)); }
public IEnumerable <IInstalledExtension> GetInstalledExtensions() { if (_cache == null) { _cache = _manager.GetInstalledExtensions().Where(e => !e.Header.SystemComponent && !e.Header.AllUsers && !e.Header.InstalledByMsi); } return(_cache); }
public void CheckForUpdates(IVsExtensionManager extensionManager, IVsExtensionRepository repoManager) { var plugin = collectionPluginToPluginMapper.MapFrom(GetCollection().plugin); var updatedExtension = extensionManager.GetInstalledExtensions().FirstOrDefault(x => GlobalConstants.PackageName == x.Header.Name && x.Header.Version < plugin.Version); if (updatedExtension.IsNotNull()) { var dialogParameters = dialogMessageEventFactory.GetInstance(packageUpdateManager, updatedExtension, extensionManager, repoManager); dialogMessagesEvents.OnDialogMessageRequested(this, dialogParameters); } }
public static bool HasExtension(this IVsExtensionManager extensionManager, string name) { IInstalledExtension first = null; foreach (var x in extensionManager.GetInstalledExtensions()) { if (x.Header.Name == name) { first = x; break; } } return(first != null); }
public IEnumerable <Extension> GetInstalledExtensions() { ThreadHelper.ThrowIfNotOnUIThread(); var installed = _manager.GetInstalledExtensions() .Where(i => !i.Header.SystemComponent && !i.IsPackComponent) .Select(i => i.Header.Identifier) .ToList(); // Filter the installed extensions to only be the ones that exist on the Marketplace IEnumerable <GalleryEntry> marketplaceEntries = _repository.GetVSGalleryExtensions <GalleryEntry>(installed, 1033, false); return(marketplaceEntries .Select(e => Extension.FromGalleryExtension(e)) .OrderBy(e => e.Name)); }
private void RunList(string filter) { Console.WriteLine(_version); Console.WriteLine(" {0, -40} - {1}", "Name", "Identifier"); var regex = filter != null ? new Regex(filter, RegexOptions.IgnoreCase) : null; foreach (var extension in _extensionManager.GetInstalledExtensions()) { var header = extension.Header; if (regex == null || regex.IsMatch(header.Name)) { var formattedName = header.Name.Replace(Environment.NewLine, " "); if (formattedName.Length > 35) { formattedName = formattedName.Substring(0, 35) + " ..."; } Console.WriteLine(" {0,-40} - {1}", formattedName, header.Identifier); } } }
public string Get() { var installedExtensions = _manager.GetInstalledExtensions(); var userExtensions = installedExtensions.Where(ext => !ext.Header.SystemComponent && !ext.Header.InstalledByMsi) .OrderBy(ext => ext.Header.Name); using (var writer = new StringWriter()) { var serializer = new XmlSerializer(typeof(Extensions)); serializer.Serialize(writer, new Extensions { Items = userExtensions .Select(e => new Extension { Name = e.Header.Name, Identifier = e.Header.Identifier }) .ToList() }); return(writer.ToString()); } }
/// <summary> /// This function is the callback used to execute the command when the menu item is clicked. /// See the constructor to see how the menu item is associated with this function using /// OleMenuCommandService service and MenuCommand class. /// </summary> /// <param name="sender">Event sender.</param> /// <param name="e">Event args.</param> private void Execute(object sender, EventArgs e) { ThreadHelper.ThrowIfNotOnUIThread(); var exts = new List <string>(); var message = new StringBuilder(); foreach (var ext in _extManager.GetInstalledExtensions().Where(ex => !ex.Header.SystemComponent && !ex.IsPackComponent)) { message.Append($"{{Name = {ext.Header.Name} , Identifier = {ext.Header.Identifier}}}" + Environment.NewLine); } string title = "Extension Identifiers"; // Show a message box to prove we were here VsShellUtilities.ShowMessageBox( this.package, message.ToString(), title, OLEMSGICON.OLEMSGICON_INFO, OLEMSGBUTTON.OLEMSGBUTTON_OK, OLEMSGDEFBUTTON.OLEMSGDEFBUTTON_FIRST); }
public static IEnumerable<IInstalledExtension> GetExtensions(IVsExtensionManager manager) { return from e in manager.GetInstalledExtensions() where !e.Header.SystemComponent && !e.Header.AllUsers && !e.Header.InstalledByMsi && e.State == EnabledState.Enabled select e; }
private RestartReason InstallExtension(ExtensionEntry extension, IVsExtensionRepository repository, IVsExtensionManager manager) { GalleryEntry entry = null; OnUpdate(string.Format("{0} ({1})", _settings.ResourceProvider.InstallingExtension, extension.Name)); var ret = RestartReason.None; try { _logger.Log($"{Environment.NewLine}{extension.Name}"); _logger.Log(" " + _settings.ResourceProvider.Verifying, false); entry = repository.GetVSGalleryExtensions <GalleryEntry>(new List <string> { extension.Id }, 1033, false)?.FirstOrDefault(); if (entry != null) { _logger.Log(_settings.ResourceProvider.Ok); // Marketplace ok #if DEBUG || true var extensionsByAuthor = manager.GetInstalledExtensions().GroupBy(x => x.Header.Author).Select(y => new { y.Key, items = y }).ToArray(); #endif var installed = manager.GetInstalledExtensions().SingleOrDefault(n => n.Header.Identifier == extension.Id); _logger.Log(" " + _settings.ResourceProvider.Verifying, false); IInstallableExtension installable = null; if (installed != null) { if (NewerVersionExists(installed, repository, entry)) { installed = null; } } _logger.Log(" " + _settings.ResourceProvider.Ok); if (installed == null) { _logger.Log(" " + _settings.ResourceProvider.Downloading, false); installable = repository.Download(entry); _logger.Log(_settings.ResourceProvider.Ok); // Download ok } if (installable == null) { _logger.Log(" nothing to do"); } else { _logger.Log(" " + _settings.ResourceProvider.Installing, false); ret = manager.Install(installable, false); _logger.Log(_settings.ResourceProvider.Ok); // Install ok } Telemetry.Install(extension.Id, true); } else { _logger.Log(_settings.ResourceProvider.Failed); // Markedplace failed } } catch (Exception e) { _logger.Log(_settings.ResourceProvider.Failed); _logger.Log("Failed to install package: " + e.Message); _log.Error(e); Telemetry.Install(extension.Id, false); } finally { if (entry != null) { Store.MarkInstalled(extension); } } return(ret); }
private IEnumerable<KeyValuePair<string, string>> GetMissingExtensions(IVsExtensionManager manager, DataStore store) { var installed = manager.GetInstalledExtensions(); var products = ExtensionList.Products(); var notInstalled = products.Where(product => !installed.Any(ins => ins.Header.Identifier == product.Key)).ToArray(); return notInstalled.Where(ext => !store.HasBeenInstalled(ext.Key)); }
public static IEnumerable <IInstalledExtension> GetExtensions(IVsExtensionManager manager) { return(from e in manager.GetInstalledExtensions() where !e.Header.SystemComponent && !e.Header.AllUsers && !e.Header.InstalledByMsi && e.State == EnabledState.Enabled select e); }