Example #1
0
 public void UninstallLibrary(LibraryListItem libraryListItem)
 {
     if (libraryListItem.Library != null)
     {
         if (TryGetLibraryWithNameAndVersion(libraryListItem.Library, out NodeLibrary library))
         {
             if (!string.IsNullOrEmpty(library.PathOnDisk))
             {
                 _directoryService.Delete(library.PathOnDisk, true);
                 InstalledLibraryItems.Remove(libraryListItem);
             }
         }
     }
 }
Example #2
0
        private void UpdateInstalledLibraries()
        {
            InstalledLibraryItems.Clear();

            var directories = _directoryService.GetDirectories(PluginsDirectory);

            foreach (var directory in directories)
            {
                var directoryName = directory.Remove(0, PluginsDirectory.Length);
                // TODO: Do not pass in null here or you wont be able to uninstall the library.
                var libraryListItem = new LibraryListItem(null, directoryName)
                {
                    ButtonText = "N/A"
                };
                InstalledLibraryItems.Add(libraryListItem);
            }
        }
Example #3
0
        public async Task <bool> InstallLatestVersionOfLibraryAsync(LibraryListItem libraryListItem)
        {
            if (IsLibraryInstalled(libraryListItem.Library))
            {
                return(true);
            }

            libraryListItem.ButtonText = "Installing";
            await LoadSourcesAsync();

            if (!TryGetLibraryWithNameAndVersion(libraryListItem.Library, out var library))
            {
                return(false);
            }

            var absPath = _directoryService.GetDirectoryName(Assembly.GetExecutingAssembly().Location);

            CreateTemporaryDirectory(absPath);

            var zipPath     = "tmp/" + library + ".zip";
            var extractPath = "tmp/" + library;
            var toPath      = PluginsDirectory + library;

            await _webResourceFetcher.DownloadFileAsync(library.DownloadPath, zipPath);

            ExtractDllFromZip(zipPath, extractPath, toPath);
            library.PathOnDisk = toPath;
            _pluginLoader.AddPluginFromDirectory(absPath + "/" + toPath, library);
            UpdateInstalledLibraries();
            InstalledLibraryItems.Add(new LibraryListItem(library, library.Name)
            {
                ButtonText = "Uninstall"
            });
            libraryListItem.ButtonText = "Installed";
            return(true);
        }
Example #4
0
 private bool IsLibraryInstalled(NodeLibrary libraryDescription)
 {
     return(InstalledLibraryItems.Any(i => i.LibraryDisplayName == libraryDescription.ToString()));
 }