private static async Task DownloadAndInstall(CancellationToken token) { var directory = _directory ?? MainExecutingFile.Directory; try { var data = await CmApiProvider.GetStaticDataAsync("visual_cpp", TimeSpan.FromDays(1), cancellation : token); if (data == null) { ManualInstallation(null, directory); } else { await Task.Run(() => { using (var archive = ZipFile.OpenRead(data.Item1)) { foreach (var file in archive.Entries) { var completeFileName = Path.Combine(directory, file.FullName); if (file.Name == "" || File.Exists(completeFileName)) { continue; } FileUtils.EnsureFileDirectoryExists(completeFileName); file.ExtractToFile(completeFileName, true); } } }); FileUtils.TryToDelete(data.Item1); if (ModernDialog.ShowMessage("The package is installed. Now, app needs to be restarted. Restart it now?", "The package is installed", MessageBoxButton.YesNo) == MessageBoxResult.Yes) { WindowsHelper.RestartCurrentApplication(); } } } catch (Exception e) when(e.IsCancelled()) { } catch (Exception e) { ManualInstallation(e, directory); } }