public async Task <ExtensionManifest> InstallExtension(NetworkExtensionModel model) { using var client = new HttpClient(); var json = await client.GetStringAsync(Path.Combine(EXTENSION_REMOTE, model.Src, "manifest.json")); var manifest = JsonConvert.DeserializeObject <ExtensionManifest>(json); var cache = await FileCache.Instance.GetFromCacheAsync(new Uri(Path.Combine(EXTENSION_REMOTE, model.Src, manifest.Entry))); var rootFolder = await GetExtensionFolder(); var extensionFolder = await rootFolder.CreateFolderAsync(manifest.Name, CreationCollisionOption.OpenIfExists); await cache.CopyAsync(extensionFolder, manifest.Entry, NameCollisionOption.ReplaceExisting); var manifestFile = await extensionFolder.CreateFileAsync("manifest.json", CreationCollisionOption.ReplaceExisting); await FileIO.WriteTextAsync(manifestFile, json); AddOrUpgradeExtension(extensionFolder.Path, manifest); return(manifest); }
public async Task InstallExtension(NetworkExtensionModel model) { await _manager.InstallExtension(model); NetworkExtensions.Refresh(); }