internal async Task ParseAsync() { if (!File.Exists(LocalCachePath)) { return; } try { using (StreamReader reader = new StreamReader(LocalCachePath)) { string json = await reader.ReadToEndAsync(); JObject root = JObject.Parse(json); foreach (JProperty obj in root.Children <JProperty>()) { JEnumerable <JProperty> child = obj.Children <JProperty>(); ExtensionEntry entry = new ExtensionEntry { Name = obj.Name, Id = (string)root[obj.Name]["id"], MinVersion = new Version((string)root[obj.Name]["minVersion"] ?? "15.0"), MaxVersion = new Version((string)root[obj.Name]["maxVersion"] ?? "16.0") }; Extensions.Add(entry); } } } catch (Exception ex) { Debug.Write(ex); } }
public LogMessage(ExtensionEntry entry, string action) { Id = entry.Id; Name = entry.Name; Action = action; Date = DateTime.Now; }
private void InstallExtension(ExtensionEntry extension, IVsExtensionRepository repository, IVsExtensionManager manager) { GalleryEntry entry = null; OnUpdate(string.Format(ExtensionText.InstallingExtension, extension.Name)); try { Logger.Log($"{Environment.NewLine}{extension.Name}"); Logger.Log(" " + ExtensionText.Verifying, false); entry = repository.GetVSGalleryExtensions <GalleryEntry>(new List <string> { extension.Id }, 1033, false)?.FirstOrDefault(); if (entry != null) { Logger.Log(ExtensionText.Ok); // Marketplace ok Logger.Log(" " + ExtensionText.Downloading, false); #if !DEBUG IInstallableExtension installable = repository.Download(entry); #endif Logger.Log(ExtensionText.Ok); // Download ok Logger.Log(" " + ExtensionText.Installing, false); #if !DEBUG manager.Install(installable, false); #else Thread.Sleep(2000); #endif Logger.Log(ExtensionText.Ok); // Install ok Telemetry.Install(extension.Id, true); } else { Logger.Log(ExtensionText.Failed); // Markedplace failed } } catch (Exception) { Logger.Log(ExtensionText.Failed); Telemetry.Install(extension.Id, false); } finally { if (entry != null) { Store.MarkInstalled(extension); } } }
public void MarkUninstalled(ExtensionEntry extension) { Log.Add(new LogMessage(extension, _uninstalled)); }