private PatchResult CreateIncrementalPatch() { if (cancel) { return(PatchResult.Failed); } Directory.CreateDirectory(incrementalPatchOutputPath); Directory.CreateDirectory(incrementalPatchTempPath); incrementalPatch = new IncrementalPatchInfo { FromVersion = previousVersion, ToVersion = version }; Log(Localization.Get(StringId.CreatingIncrementalPatch)); Stopwatch timer = Stopwatch.StartNew(); DirectoryInfo rootDirectory = new DirectoryInfo(rootPath); TraverseIncrementalPatchRecursively(rootDirectory, ""); if (cancel) { return(PatchResult.Failed); } Log(Localization.Get(StringId.CompressingPatchIntoOneFile)); string compressedPatchPath = incrementalPatchOutputPath + incrementalPatch.PatchVersion() + PatchParameters.INCREMENTAL_PATCH_FILE_EXTENSION; ZipUtils.CompressFolder(incrementalPatchTempPath, compressedPatchPath, compressionFormatIncrementalPatch); Log(Localization.Get(StringId.WritingIncrementalPatchInfoToXML)); PatchUtils.SerializeIncrementalPatchInfoToXML(incrementalPatch, incrementalPatchOutputPath + incrementalPatch.PatchVersion() + PatchParameters.INCREMENTAL_PATCH_INFO_EXTENSION); versionInfo.IncrementalPatches.Add(new IncrementalPatch(previousVersion, version, new FileInfo(compressedPatchPath), incrementalPatch.Files.Count, compressionFormatIncrementalPatch)); PatchUtils.DeleteDirectory(incrementalPatchTempPath); Log(Localization.Get(StringId.IncrementalPatchCreatedInXSeconds, timer.ElapsedSeconds())); return(PatchResult.Success); }