Ejemplo n.º 1
0
        /// <summary>
        /// Remove the folders that were not updated, but ignore the ones specified in app.config settings (IgnoredFolders).
        /// </summary>
        public static void RemoveNotUpdatedDestinationSubDirectories(string[] updatedDestinationSubDirectories, string destinationDirectory)
        {
            if (string.IsNullOrEmpty(destinationDirectory) || updatedDestinationSubDirectories == null)
            {
                return;
            }
            string[] destinationSubDirectories        = Directory.GetDirectories(destinationDirectory);
            string[] missingDestinationSubDirectories = destinationSubDirectories.Except(updatedDestinationSubDirectories).ToArray();
            foreach (string missingDestinationSubDirectory in missingDestinationSubDirectories)
            {
                if (UpdaterHelper.IsFolderIgnored(missingDestinationSubDirectory))
                {
                    continue;
                }

                try
                {
                    if (Directory.Exists(missingDestinationSubDirectory))
                    {
                        Directory.Delete(missingDestinationSubDirectory, true);
                        Tracing.Tracer.LogText("The \"{0}\" folder was deleted.", missingDestinationSubDirectory);
                    }
                }
                catch (Exception ex)
                {
                    Tracing.Tracer.LogWarning("Error while deleting the \"{0}\" folder: \"{1}\".", missingDestinationSubDirectory, ex.Message);
                }
            }
        }
Ejemplo n.º 2
0
        private static void CopyNewVersion(string sourceDirectory, string destinationDirectory)
        {
            if (Directory.Exists(destinationDirectory))
            {
                // Custom code
                if (UpdaterHelper.IsFolderIgnored(destinationDirectory))
                {
                    return;
                }
                List <string> updatedDestinationFiles = new List <string>();
                Application.DoEvents();

                Tracing.Tracer.LogText("CopyNewVersion from '{0}' to '{1}'", sourceDirectory, destinationDirectory);
                string[]             sourceFiles = Directory.GetFiles(sourceDirectory, "*.*");
                ICollection <string> selfFiles   = GetSelfFiles(sourceDirectory);
                foreach (string sourceFileName in sourceFiles)
                {
                    if (!selfFiles.Contains(sourceFileName) && !UpdaterHelper.IsFileIgnored(sourceFileName))                       // Custom code
                    {
                        string destinationFileName = Path.Combine(destinationDirectory, Path.GetFileName(sourceFileName));
                        if (File.Exists(destinationFileName))
                        {
                            File.SetAttributes(destinationFileName, FileAttributes.Normal);
                        }

                        // Custom code (do not copy unchanged files)
                        Application.DoEvents();
                        DateTime sourceFileModified = File.GetLastWriteTime(sourceFileName);
                        DateTime destFileModified   = DateTime.MinValue;
                        if (File.Exists(destinationFileName))
                        {
                            destFileModified = File.GetLastWriteTime(destinationFileName);
                        }
                        if (sourceFileModified == destFileModified)
                        {
                            form.SetProgressPosition();
                            updatedDestinationFiles.Add(destinationFileName);
                            continue;
                        }

                        File.Copy(sourceFileName, destinationFileName, true);
                        Tracing.Tracer.LogText("The \"{0}\" file was copied to \"{1}\".", sourceFileName, destinationFileName);
                        form.SetProgressPosition();

                        // Custom code
                        updatedDestinationFiles.Add(destinationFileName);
                    }
                }

                // Custom code
                if (UpdaterHelper.DeleteExistingFiles)
                {
                    UpdaterHelper.RemoveNotUpdatedDestinationFiles(destinationDirectory, updatedDestinationFiles);
                }

                UpdateSubDirectories(sourceDirectory, destinationDirectory);
            }
        }