/// <summary> /// Downloads a specific file. /// </summary> public async Task DownloadAndExtract(DownloadProgressChangedEventHandler progressChanged) { // Start the modification download. byte[] data; using (WebClient client = new WebClient()) { client.DownloadProgressChanged += progressChanged; data = await client.DownloadDataTaskAsync(Uri); } /* Extract to Temp Directory */ string temporaryDirectory = GetTemporaryDirectory(); var archiveExtractor = new ArchiveExtractor(); await archiveExtractor.ExtractPackageAsync(data, temporaryDirectory); /* Get name of package. */ var configReader = new ConfigReader <ModConfig>(); var configs = configReader.ReadConfigurations(temporaryDirectory, ModConfig.ConfigFileName); var loaderConfig = LoaderConfigReader.ReadConfiguration(); foreach (var config in configs) { string configId = config.Object.ModId; string configDirectory = Path.GetDirectoryName(config.Path); string targetDirectory = Path.Combine(loaderConfig.ModConfigDirectory, configId); IOEx.MoveDirectory(configDirectory, targetDirectory); } Directory.Delete(temporaryDirectory, true); }
/// <summary> /// Downloads a specific file. /// </summary> public async Task DownloadAndExtract(DownloadProgressChangedEventHandler progressChanged) { // Start the modification download. byte[] data; using (WebClient client = new WebClient()) { client.DownloadProgressChanged += progressChanged; data = await client.DownloadDataTaskAsync(Uri); } /* Extract to Temp Directory */ string temporaryDirectory = GetTemporaryDirectory(); var archiveExtractor = new ArchiveExtractor(); await archiveExtractor.ExtractPackageAsync(data, temporaryDirectory); /* Get name of package. */ var configs = ConfigReader <ModConfig> .ReadConfigurations(temporaryDirectory, ModConfig.ConfigFileName, default, int.MaxValue);