Пример #1
0
        private void EnsureDefinition(UpdaterDefinitionEntry entry)
        {
            var filePath = PathsManager.Combine(_context.Settings.RootPath, entry.RelativePath);

            File.SetAttributes(filePath, entry.Attributes);
            File.SetLastWriteTimeUtc(filePath, entry.LastWriting);
        }
Пример #2
0
        private void HandleDeletedFile(UpdaterDefinitionEntry entry)
        {
            var filePath = PathsManager.Combine(_context.Settings.RootPath, entry.RelativePath);

            if (FilesManager.IsFileLocked(filePath))
            {
                var newFilePath = FilesManager.GetTemporaryDeletingFileName(filePath);
                FilesManager.Rename(filePath, newFilePath);
            }
            else
            {
                FilesManager.Delete(filePath);
            }
        }
Пример #3
0
        private void HandleAddedFile(UpdaterDefinitionEntry entry)
        {
            var filePath = PathsManager.Combine(_context.Settings.RootPath, entry.RelativePath);

            var difference      = FileValidityDifference.None;
            var alreadyExisting = FilesManager.Exists(filePath);

            if (alreadyExisting && IsValid(entry, out difference))
            {
                return;
            }

            if (difference.HasFlag(FileValidityDifference.Size))
            {
                if (FilesManager.IsFileLocked(filePath))
                {
                    var newFilePath = FilesManager.GetTemporaryDeletingFileName(filePath);
                    FilesManager.Rename(filePath, newFilePath);
                }
                else
                {
                    FilesManager.Delete(filePath);
                }

                Downloader.Download(_context.Settings.GetRemoteUpdaterFileUrl(entry.RelativePath),
                                    PathsManager.GetDirectoryPath(filePath));

                EnsureDefinition(entry);

                _context.SetDirtyFlag(entry.RelativePath);
            }
            else
            {
                if (!alreadyExisting)
                {
                    Downloader.Download(_context.Settings.GetRemoteUpdaterFileUrl(entry.RelativePath),
                                        PathsManager.GetDirectoryPath(filePath));
                }

                if (FilesManager.IsFileLocked(filePath))
                {
                    var newFilePath = FilesManager.GetTemporaryDeletingFileName(filePath);
                    FilesManager.Rename(filePath, newFilePath);
                    FilesManager.Copy(newFilePath, filePath);
                }

                EnsureDefinition(entry);
            }
        }
Пример #4
0
        private void HandleChangedAttributesFile(UpdaterDefinitionEntry entry)
        {
            var filePath = PathsManager.Combine(_context.Settings.RootPath, entry.RelativePath);

            if (!FilesManager.Exists(filePath))
            {
                Downloader.Download(_context.Settings.GetRemoteUpdaterFileUrl(entry.RelativePath),
                                    PathsManager.GetDirectoryPath(filePath));
            }
            else
            {
                if (FilesManager.IsFileLocked(filePath))
                {
                    var newFilePath = FilesManager.GetTemporaryDeletingFileName(filePath);
                    FilesManager.Rename(filePath, newFilePath);
                    FilesManager.Copy(newFilePath, filePath);
                }
            }

            EnsureDefinition(entry);
        }
Пример #5
0
        private bool IsValid(UpdaterDefinitionEntry entry, out FileValidityDifference difference)
        {
            var filePath = PathsManager.Combine(_context.Settings.RootPath, entry.RelativePath);

            var info = FilesManager.GetFileInfo(filePath);

            difference = FileValidityDifference.None;

            if (info.Size != entry.Size)
            {
                difference |= FileValidityDifference.Size;
            }
            if (!AreLastWritingsEqual(info.LastWriting, entry.LastWriting))
            {
                difference |= FileValidityDifference.LastWriting;
            }
            if (info.Attributes != entry.Attributes)
            {
                difference |= FileValidityDifference.Attributes;
            }

            return(difference == FileValidityDifference.None);
        }
Пример #6
0
 private void HandleUnchangedFile(UpdaterDefinitionEntry entry)
 {
     HandleAddedFile(entry);
 }