mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-10-15 19:54:57 +08:00
#20549: Fixed. Installed files from package have same last write time.
This commit is contained in:

committed by
Sebastien Ros

parent
b7de2b702e
commit
69ce0d1de4
@@ -10,6 +10,7 @@ using Orchard.Environment.Extensions.Models;
|
|||||||
using Orchard.FileSystems.VirtualPath;
|
using Orchard.FileSystems.VirtualPath;
|
||||||
using Orchard.FileSystems.WebSite;
|
using Orchard.FileSystems.WebSite;
|
||||||
using Orchard.Packaging.Services;
|
using Orchard.Packaging.Services;
|
||||||
|
using Orchard.Services;
|
||||||
using Orchard.Tests.Stubs;
|
using Orchard.Tests.Stubs;
|
||||||
using Orchard.UI.Notify;
|
using Orchard.UI.Notify;
|
||||||
using IPackageBuilder = Orchard.Packaging.Services.IPackageBuilder;
|
using IPackageBuilder = Orchard.Packaging.Services.IPackageBuilder;
|
||||||
@@ -39,6 +40,7 @@ namespace Orchard.Tests.Modules.Packaging.Services {
|
|||||||
builder.RegisterType<DefaultOrchardFrameworkAssemblies>().As<IOrchardFrameworkAssemblies>();
|
builder.RegisterType<DefaultOrchardFrameworkAssemblies>().As<IOrchardFrameworkAssemblies>();
|
||||||
builder.RegisterType<InMemoryWebSiteFolder>().As<IWebSiteFolder>()
|
builder.RegisterType<InMemoryWebSiteFolder>().As<IWebSiteFolder>()
|
||||||
.As<InMemoryWebSiteFolder>().InstancePerLifetimeScope();
|
.As<InMemoryWebSiteFolder>().InstancePerLifetimeScope();
|
||||||
|
builder.RegisterType<StubClock>().As<IClock>();
|
||||||
}
|
}
|
||||||
|
|
||||||
[SetUp]
|
[SetUp]
|
||||||
|
@@ -10,6 +10,7 @@ using Orchard.Environment.Extensions.Models;
|
|||||||
using Orchard.FileSystems.VirtualPath;
|
using Orchard.FileSystems.VirtualPath;
|
||||||
using Orchard.FileSystems.WebSite;
|
using Orchard.FileSystems.WebSite;
|
||||||
using Orchard.Packaging.Services;
|
using Orchard.Packaging.Services;
|
||||||
|
using Orchard.Services;
|
||||||
using Orchard.Tests.Stubs;
|
using Orchard.Tests.Stubs;
|
||||||
using Orchard.UI.Notify;
|
using Orchard.UI.Notify;
|
||||||
using IPackageBuilder = Orchard.Packaging.Services.IPackageBuilder;
|
using IPackageBuilder = Orchard.Packaging.Services.IPackageBuilder;
|
||||||
@@ -39,6 +40,7 @@ namespace Orchard.Tests.Modules.Packaging.Services {
|
|||||||
builder.RegisterType<DefaultOrchardFrameworkAssemblies>().As<IOrchardFrameworkAssemblies>();
|
builder.RegisterType<DefaultOrchardFrameworkAssemblies>().As<IOrchardFrameworkAssemblies>();
|
||||||
builder.RegisterType<InMemoryWebSiteFolder>().As<IWebSiteFolder>()
|
builder.RegisterType<InMemoryWebSiteFolder>().As<IWebSiteFolder>()
|
||||||
.As<InMemoryWebSiteFolder>().InstancePerLifetimeScope();
|
.As<InMemoryWebSiteFolder>().InstancePerLifetimeScope();
|
||||||
|
builder.RegisterType<StubClock>().As<IClock>();
|
||||||
}
|
}
|
||||||
|
|
||||||
[SetUp]
|
[SetUp]
|
||||||
|
@@ -10,6 +10,7 @@ namespace Orchard.Packaging.Services {
|
|||||||
private const string NetFrameworkIdentifier = ".NETFramework";
|
private const string NetFrameworkIdentifier = ".NETFramework";
|
||||||
private const string BinDir = "bin";
|
private const string BinDir = "bin";
|
||||||
private readonly string _root;
|
private readonly string _root;
|
||||||
|
private DateTime? _writeTimeUtcForAddedFiles;
|
||||||
|
|
||||||
public FileBasedProjectSystem(string root) {
|
public FileBasedProjectSystem(string root) {
|
||||||
if (String.IsNullOrEmpty(root)) {
|
if (String.IsNullOrEmpty(root)) {
|
||||||
@@ -61,6 +62,10 @@ namespace Orchard.Packaging.Services {
|
|||||||
using (Stream outputStream = File.Create(fullPath)) {
|
using (Stream outputStream = File.Create(fullPath)) {
|
||||||
stream.CopyTo(outputStream);
|
stream.CopyTo(outputStream);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (_writeTimeUtcForAddedFiles.HasValue) {
|
||||||
|
File.SetLastWriteTimeUtc(fullPath, _writeTimeUtcForAddedFiles.Value);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void DeleteFile(string path) {
|
public void DeleteFile(string path) {
|
||||||
@@ -172,6 +177,10 @@ namespace Orchard.Packaging.Services {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void OverwriteLastWriteTimeUtcForAddedFiles(DateTime dateTime) {
|
||||||
|
_writeTimeUtcForAddedFiles = dateTime;
|
||||||
|
}
|
||||||
|
|
||||||
protected string MakeRelativePath(string fullPath) {
|
protected string MakeRelativePath(string fullPath) {
|
||||||
return fullPath.Substring(Root.Length).TrimStart(Path.DirectorySeparatorChar);
|
return fullPath.Substring(Root.Length).TrimStart(Path.DirectorySeparatorChar);
|
||||||
}
|
}
|
||||||
|
@@ -9,6 +9,7 @@ using Orchard.Localization;
|
|||||||
using Orchard.Logging;
|
using Orchard.Logging;
|
||||||
using Orchard.Packaging.Extensions;
|
using Orchard.Packaging.Extensions;
|
||||||
using Orchard.Packaging.Models;
|
using Orchard.Packaging.Models;
|
||||||
|
using Orchard.Services;
|
||||||
using Orchard.UI;
|
using Orchard.UI;
|
||||||
using Orchard.UI.Notify;
|
using Orchard.UI.Notify;
|
||||||
using NuGetPackageManager = NuGet.PackageManager;
|
using NuGetPackageManager = NuGet.PackageManager;
|
||||||
@@ -23,17 +24,20 @@ namespace Orchard.Packaging.Services {
|
|||||||
private readonly IVirtualPathProvider _virtualPathProvider;
|
private readonly IVirtualPathProvider _virtualPathProvider;
|
||||||
private readonly IExtensionManager _extensionManager;
|
private readonly IExtensionManager _extensionManager;
|
||||||
private readonly IFolderUpdater _folderUpdater;
|
private readonly IFolderUpdater _folderUpdater;
|
||||||
|
private readonly IClock _clock;
|
||||||
|
|
||||||
public PackageInstaller(
|
public PackageInstaller(
|
||||||
INotifier notifier,
|
INotifier notifier,
|
||||||
IVirtualPathProvider virtualPathProvider,
|
IVirtualPathProvider virtualPathProvider,
|
||||||
IExtensionManager extensionManager,
|
IExtensionManager extensionManager,
|
||||||
IFolderUpdater folderUpdater) {
|
IFolderUpdater folderUpdater,
|
||||||
|
IClock clock) {
|
||||||
|
|
||||||
_notifier = notifier;
|
_notifier = notifier;
|
||||||
_virtualPathProvider = virtualPathProvider;
|
_virtualPathProvider = virtualPathProvider;
|
||||||
_extensionManager = extensionManager;
|
_extensionManager = extensionManager;
|
||||||
_folderUpdater = folderUpdater;
|
_folderUpdater = folderUpdater;
|
||||||
|
_clock = clock;
|
||||||
|
|
||||||
T = NullLocalizer.Instance;
|
T = NullLocalizer.Instance;
|
||||||
Logger = Logging.NullLogger.Instance;
|
Logger = Logging.NullLogger.Instance;
|
||||||
@@ -147,6 +151,7 @@ namespace Orchard.Packaging.Services {
|
|||||||
: packageRepository;
|
: packageRepository;
|
||||||
|
|
||||||
var project = new FileBasedProjectSystem(targetPath) { Logger = logger };
|
var project = new FileBasedProjectSystem(targetPath) { Logger = logger };
|
||||||
|
project.OverwriteLastWriteTimeUtcForAddedFiles(_clock.UtcNow);
|
||||||
var projectManager = new ProjectManager(
|
var projectManager = new ProjectManager(
|
||||||
sourceRepository, // source repository for the package to install
|
sourceRepository, // source repository for the package to install
|
||||||
new DefaultPackagePathResolver(targetPath),
|
new DefaultPackagePathResolver(targetPath),
|
||||||
|
Reference in New Issue
Block a user