Example #1
0
        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);
        }
Example #2
0
        private PatchResult CreateInstallerPatch()
        {
            if (cancel)
            {
                return(PatchResult.Failed);
            }

            Directory.CreateDirectory(installerPatchOutputPath);
            string compressedPatchPath = installerPatchOutputPath + PatchParameters.INSTALLER_PATCH_FILENAME;

            Log(Localization.Get(StringId.CreatingInstallerPatch));
            Stopwatch timer = Stopwatch.StartNew();

            Log(Localization.Get(StringId.CompressingXToY, rootPath, compressedPatchPath));
            ZipUtils.CompressFolder(rootPath, compressedPatchPath, compressionFormatInstallerPatch, ignoredPathsRegex);

            if (cancel)
            {
                return(PatchResult.Failed);
            }

            Log(Localization.Get(StringId.PatchCreatedInXSeconds, timer.ElapsedSeconds()));

            FileInfo installerPatch = new FileInfo(compressedPatchPath);

            versionInfo.InstallerPatch = new InstallerPatch(installerPatch, compressionFormatInstallerPatch);

            // Calculate compression ratio
            long uncompressedTotal = 0L, compressedTotal = installerPatch.Length;

            for (int i = 0; i < versionInfo.Files.Count; i++)
            {
                uncompressedTotal += versionInfo.Files[i].FileSize;
            }

            Log(Localization.Get(StringId.CompressionRatioIsX, ((double)compressedTotal * 100 / uncompressedTotal).ToString("F2")));

            return(PatchResult.Success);
        }