using System.IO.Compression; namespace Updater.Core; /// ZIP-экстрактор с использованием System.IO.Compression. public sealed class ZipExtractor : IExtractor { private readonly ILogger _log; public ZipExtractor(ILogger log) => _log = log; public void Extract(string archivePath, string targetDir) { _log.Info($"Extracting '{archivePath}' to '{targetDir}'..."); if (Directory.Exists(targetDir)) Directory.Delete(targetDir, true); Directory.CreateDirectory(targetDir); ZipFile.ExtractToDirectory(archivePath, targetDir, overwriteFiles: true); } }