private void EnsureDefinition(UpdaterDefinitionEntry entry) { var filePath = PathsManager.Combine(_context.Settings.RootPath, entry.RelativePath); File.SetAttributes(filePath, entry.Attributes); File.SetLastWriteTimeUtc(filePath, entry.LastWriting); }
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); } }
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); } }
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); }
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); }
private void HandleUnchangedFile(UpdaterDefinitionEntry entry) { HandleAddedFile(entry); }