Ejemplo n.º 1
0
        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)));
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 5
0
        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);
            }
        }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
        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));
        }
Ejemplo n.º 8
0
        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());
            }
        }
Ejemplo n.º 10
0
        /// <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);
        }
Ejemplo n.º 11
0
 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;
 }
Ejemplo n.º 12
0
        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);
        }
Ejemplo n.º 13
0
        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));

        }
Ejemplo n.º 14
0
 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);
 }