Example #1
0
        /// <summary>
        /// Unzip all files.
        /// </summary>
        /// <returns>True on succes, false otherwise</returns>
        internal static bool Unzip(string sampleFolder, string zipFilePath, Action <string> log, Func <bool> updateSampleProjects)
        {
            var messages      = new List <string>();
            var entries       = new List <UnzipEntry>();
            var fileHashes    = new FileHashesSet();
            var backupFolders = new BackupFolders();
            var result        = true;

            using (var zipFile = new ZipFile(zipFilePath))
            {
                // Collect entries
                foreach (ZipEntry zipEntry in zipFile)
                {
                    entries.Add(new UnzipEntry(zipEntry, sampleFolder));
                }

                // Unzip all
                foreach (var entry in entries)
                {
                    log(string.Format("Unpacking {0}", entry.Name));
                    entry.UnzipToTempPath(zipFile);
                }

                // Backup if needed
                foreach (var entry in entries)
                {
                    entry.BackupIfNeeded(fileHashes, backupFolders);
                }

                // Move all to final target
                foreach (var entry in entries)
                {
                    entry.MoveToTarget(messages);
                }

                // Update all sample projects
                if (!updateSampleProjects())
                {
                    result = false;
                }

                // Update hashes
                foreach (var entry in entries)
                {
                    entry.UpdateHash(fileHashes);
                }

                // Save hashes
                fileHashes.SaveAll();
            }
            return(result);
        }
Example #2
0
        /// <summary>
        /// Unzip all files.
        /// </summary>
        /// <returns>True on succes, false otherwise</returns>
        internal static bool Unzip(string sampleFolder, string zipFilePath, Action<string> log, Func<bool> updateSampleProjects)
        {
            var messages = new List<string>();
            var entries = new List<UnzipEntry>();
            var fileHashes = new FileHashesSet();
            var backupFolders = new BackupFolders();
            var result = true;
            using (var zipFile = new ZipFile(zipFilePath))
            {
                // Collect entries
                foreach (ZipEntry zipEntry in zipFile)
                {
                    entries.Add(new UnzipEntry(zipEntry, sampleFolder));
                }

                // Unzip all
                foreach (var entry in entries)
                {
                    log(string.Format("Unpacking {0}", entry.Name));
                    entry.UnzipToTempPath(zipFile);
                }

                // Backup if needed
                foreach (var entry in entries)
                {
                    entry.BackupIfNeeded(fileHashes, backupFolders);
                }

                // Move all to final target
                foreach (var entry in entries)
                {
                    entry.MoveToTarget(messages);
                }

                // Update all sample projects
                if (!updateSampleProjects())
                    result = false;

                // Update hashes
                foreach (var entry in entries)
                {
                    entry.UpdateHash(fileHashes);
                }

                // Save hashes
                fileHashes.SaveAll();
            }
            return result;
        }