protected override void OnExecute(CommandProcessor theProcessor) { _storageFile = Path.Combine(_destinationFolder, _sourceFile); _backupFile = Path.Combine(ProcessorContext.TempDirectory, _sourceFile); string baseDirectory = _backupFile.Substring(0, _backupFile.LastIndexOfAny(new [] { Path.AltDirectorySeparatorChar, Path.DirectorySeparatorChar })); if (!Directory.Exists(baseDirectory)) Directory.CreateDirectory(baseDirectory); if (File.Exists(_storageFile)) { File.Move(_storageFile, _backupFile); _fileBackedup = true; } using (var zip = new ZipFile(_zipFile)) { zip.Extract(_sourceFile, _destinationFolder, true); } }