diff options
| author | Rob Mensching <rob@firegiant.com> | 2017-12-21 13:42:52 -0800 |
|---|---|---|
| committer | Rob Mensching <rob@firegiant.com> | 2017-12-21 13:42:52 -0800 |
| commit | dc9f4c329e6f55ce7595970463e0caf148096f4b (patch) | |
| tree | 86155ac36c76acda0a4b1673c77f54a9780c6885 /src/WixToolset.Core/Bind | |
| parent | 155a6e96346e0cb3d9ab6f5372fa29b46ebaee89 (diff) | |
| download | wix-dc9f4c329e6f55ce7595970463e0caf148096f4b.tar.gz wix-dc9f4c329e6f55ce7595970463e0caf148096f4b.tar.bz2 wix-dc9f4c329e6f55ce7595970463e0caf148096f4b.zip | |
Support wixout and extract Resolve and Layout from Binder
Diffstat (limited to 'src/WixToolset.Core/Bind')
| -rw-r--r-- | src/WixToolset.Core/Bind/FileResolver.cs | 92 | ||||
| -rw-r--r-- | src/WixToolset.Core/Bind/FileSystem.cs | 87 | ||||
| -rw-r--r-- | src/WixToolset.Core/Bind/ResolveFieldsCommand.cs | 17 | ||||
| -rw-r--r-- | src/WixToolset.Core/Bind/ResolveResult.cs | 14 | ||||
| -rw-r--r-- | src/WixToolset.Core/Bind/ResolvedDirectory.cs | 31 | ||||
| -rw-r--r-- | src/WixToolset.Core/Bind/TransferFilesCommand.cs | 22 |
6 files changed, 118 insertions, 145 deletions
diff --git a/src/WixToolset.Core/Bind/FileResolver.cs b/src/WixToolset.Core/Bind/FileResolver.cs index 2142d261..a20d3f34 100644 --- a/src/WixToolset.Core/Bind/FileResolver.cs +++ b/src/WixToolset.Core/Bind/FileResolver.cs | |||
| @@ -6,7 +6,6 @@ namespace WixToolset.Core.Bind | |||
| 6 | using System.Collections.Generic; | 6 | using System.Collections.Generic; |
| 7 | using System.IO; | 7 | using System.IO; |
| 8 | using System.Linq; | 8 | using System.Linq; |
| 9 | using System.Runtime.InteropServices; | ||
| 10 | using WixToolset.Data; | 9 | using WixToolset.Data; |
| 11 | using WixToolset.Data.Bind; | 10 | using WixToolset.Data.Bind; |
| 12 | using WixToolset.Extensibility; | 11 | using WixToolset.Extensibility; |
| @@ -22,9 +21,9 @@ namespace WixToolset.Core.Bind | |||
| 22 | this.RebaseUpdated = this.BindPaths[BindStage.Updated].Any(); | 21 | this.RebaseUpdated = this.BindPaths[BindStage.Updated].Any(); |
| 23 | } | 22 | } |
| 24 | 23 | ||
| 25 | public FileResolver(IEnumerable<BindPath> bindPaths, IEnumerable<IBinderExtension> extensions) : this(bindPaths) | 24 | public FileResolver(IEnumerable<BindPath> bindPaths, IEnumerable<IResolverExtension> extensions) : this(bindPaths) |
| 26 | { | 25 | { |
| 27 | this.BinderExtensions = extensions ?? Array.Empty<IBinderExtension>(); | 26 | this.ResolverExtensions = extensions ?? Array.Empty<IResolverExtension>(); |
| 28 | } | 27 | } |
| 29 | 28 | ||
| 30 | public FileResolver(IEnumerable<BindPath> bindPaths, IEnumerable<ILibrarianExtension> extensions) : this(bindPaths) | 29 | public FileResolver(IEnumerable<BindPath> bindPaths, IEnumerable<ILibrarianExtension> extensions) : this(bindPaths) |
| @@ -38,79 +37,15 @@ namespace WixToolset.Core.Bind | |||
| 38 | 37 | ||
| 39 | public bool RebaseUpdated { get; } | 38 | public bool RebaseUpdated { get; } |
| 40 | 39 | ||
| 41 | private IEnumerable<IBinderExtension> BinderExtensions { get; } | 40 | private IEnumerable<IResolverExtension> ResolverExtensions { get; } |
| 42 | 41 | ||
| 43 | private IEnumerable<ILibrarianExtension> LibrarianExtensions { get; } | 42 | private IEnumerable<ILibrarianExtension> LibrarianExtensions { get; } |
| 44 | 43 | ||
| 45 | /// <summary> | 44 | public string Resolve(SourceLineNumber sourceLineNumbers, IntermediateTupleDefinition tupleDefinition, string source) |
| 46 | /// Copies a file. | ||
| 47 | /// </summary> | ||
| 48 | /// <param name="source">The file to copy.</param> | ||
| 49 | /// <param name="destination">The destination file.</param> | ||
| 50 | /// <param name="overwrite">true if the destination file can be overwritten; otherwise, false.</param> | ||
| 51 | public bool CopyFile(string source, string destination, bool overwrite) | ||
| 52 | { | ||
| 53 | foreach (var extension in this.BinderExtensions) | ||
| 54 | { | ||
| 55 | if (extension.CopyFile(source, destination, overwrite)) | ||
| 56 | { | ||
| 57 | return true; | ||
| 58 | } | ||
| 59 | } | ||
| 60 | |||
| 61 | if (overwrite && File.Exists(destination)) | ||
| 62 | { | ||
| 63 | File.Delete(destination); | ||
| 64 | } | ||
| 65 | |||
| 66 | if (!CreateHardLink(destination, source, IntPtr.Zero)) | ||
| 67 | { | ||
| 68 | #if DEBUG | ||
| 69 | int er = Marshal.GetLastWin32Error(); | ||
| 70 | #endif | ||
| 71 | |||
| 72 | File.Copy(source, destination, overwrite); | ||
| 73 | } | ||
| 74 | |||
| 75 | return true; | ||
| 76 | } | ||
| 77 | |||
| 78 | /// <summary> | ||
| 79 | /// Moves a file. | ||
| 80 | /// </summary> | ||
| 81 | /// <param name="source">The file to move.</param> | ||
| 82 | /// <param name="destination">The destination file.</param> | ||
| 83 | public bool MoveFile(string source, string destination, bool overwrite) | ||
| 84 | { | ||
| 85 | foreach (var extension in this.BinderExtensions) | ||
| 86 | { | ||
| 87 | if (extension.MoveFile(source, destination, overwrite)) | ||
| 88 | { | ||
| 89 | return true; | ||
| 90 | } | ||
| 91 | } | ||
| 92 | |||
| 93 | if (overwrite && File.Exists(destination)) | ||
| 94 | { | ||
| 95 | File.Delete(destination); | ||
| 96 | } | ||
| 97 | |||
| 98 | var directory = Path.GetDirectoryName(destination); | ||
| 99 | if (!String.IsNullOrEmpty(directory)) | ||
| 100 | { | ||
| 101 | Directory.CreateDirectory(directory); | ||
| 102 | } | ||
| 103 | |||
| 104 | File.Move(source, destination); | ||
| 105 | |||
| 106 | return true; | ||
| 107 | } | ||
| 108 | |||
| 109 | public string Resolve(SourceLineNumber sourceLineNumbers, string table, string path) | ||
| 110 | { | 45 | { |
| 111 | foreach (var extension in this.LibrarianExtensions) | 46 | foreach (var extension in this.LibrarianExtensions) |
| 112 | { | 47 | { |
| 113 | var resolved = extension.Resolve(sourceLineNumbers, table, path); | 48 | var resolved = extension.Resolve(sourceLineNumbers, tupleDefinition, source); |
| 114 | 49 | ||
| 115 | if (null != resolved) | 50 | if (null != resolved) |
| 116 | { | 51 | { |
| @@ -118,7 +53,7 @@ namespace WixToolset.Core.Bind | |||
| 118 | } | 53 | } |
| 119 | } | 54 | } |
| 120 | 55 | ||
| 121 | return this.ResolveUsingBindPaths(path, table, sourceLineNumbers, BindStage.Normal); | 56 | return this.ResolveUsingBindPaths(source, tupleDefinition, sourceLineNumbers, BindStage.Normal); |
| 122 | } | 57 | } |
| 123 | 58 | ||
| 124 | /// <summary> | 59 | /// <summary> |
| @@ -129,11 +64,11 @@ namespace WixToolset.Core.Bind | |||
| 129 | /// <param name="sourceLineNumbers">Optional source line of source file being resolved.</param> | 64 | /// <param name="sourceLineNumbers">Optional source line of source file being resolved.</param> |
| 130 | /// <param name="bindStage">The binding stage used to determine what collection of bind paths will be used</param> | 65 | /// <param name="bindStage">The binding stage used to determine what collection of bind paths will be used</param> |
| 131 | /// <returns>Should return a valid path for the stream to be imported.</returns> | 66 | /// <returns>Should return a valid path for the stream to be imported.</returns> |
| 132 | public string ResolveFile(string source, string type, SourceLineNumber sourceLineNumbers, BindStage bindStage) | 67 | public string ResolveFile(string source, IntermediateTupleDefinition tupleDefinition, SourceLineNumber sourceLineNumbers, BindStage bindStage) |
| 133 | { | 68 | { |
| 134 | foreach (var extension in this.BinderExtensions) | 69 | foreach (var extension in this.ResolverExtensions) |
| 135 | { | 70 | { |
| 136 | var resolved = extension.ResolveFile(source, type, sourceLineNumbers, bindStage); | 71 | var resolved = extension.ResolveFile(source, tupleDefinition, sourceLineNumbers, bindStage); |
| 137 | 72 | ||
| 138 | if (null != resolved) | 73 | if (null != resolved) |
| 139 | { | 74 | { |
| @@ -141,10 +76,10 @@ namespace WixToolset.Core.Bind | |||
| 141 | } | 76 | } |
| 142 | } | 77 | } |
| 143 | 78 | ||
| 144 | return this.ResolveUsingBindPaths(source, type, sourceLineNumbers, bindStage); | 79 | return this.ResolveUsingBindPaths(source, tupleDefinition, sourceLineNumbers, bindStage); |
| 145 | } | 80 | } |
| 146 | 81 | ||
| 147 | private string ResolveUsingBindPaths(string source, string type, SourceLineNumber sourceLineNumbers, BindStage bindStage) | 82 | private string ResolveUsingBindPaths(string source, IntermediateTupleDefinition tupleDefinition, SourceLineNumber sourceLineNumbers, BindStage bindStage) |
| 148 | { | 83 | { |
| 149 | string resolved = null; | 84 | string resolved = null; |
| 150 | 85 | ||
| @@ -206,7 +141,7 @@ namespace WixToolset.Core.Bind | |||
| 206 | 141 | ||
| 207 | if (null == resolved) | 142 | if (null == resolved) |
| 208 | { | 143 | { |
| 209 | throw new WixFileNotFoundException(sourceLineNumbers, source, type); | 144 | throw new WixFileNotFoundException(sourceLineNumbers, source, tupleDefinition.Name); |
| 210 | } | 145 | } |
| 211 | 146 | ||
| 212 | // Didn't find the file. | 147 | // Didn't find the file. |
| @@ -224,8 +159,5 @@ namespace WixToolset.Core.Bind | |||
| 224 | throw new WixException(ErrorMessages.IllegalCharactersInPath(path)); | 159 | throw new WixException(ErrorMessages.IllegalCharactersInPath(path)); |
| 225 | } | 160 | } |
| 226 | } | 161 | } |
| 227 | |||
| 228 | [DllImport("Kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true)] | ||
| 229 | private static extern bool CreateHardLink(string lpFileName, string lpExistingFileName, IntPtr lpSecurityAttributes); | ||
| 230 | } | 162 | } |
| 231 | } | 163 | } |
diff --git a/src/WixToolset.Core/Bind/FileSystem.cs b/src/WixToolset.Core/Bind/FileSystem.cs new file mode 100644 index 00000000..7d1b223e --- /dev/null +++ b/src/WixToolset.Core/Bind/FileSystem.cs | |||
| @@ -0,0 +1,87 @@ | |||
| 1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
| 2 | |||
| 3 | namespace WixToolset.Core.Bind | ||
| 4 | { | ||
| 5 | using System; | ||
| 6 | using System.Collections.Generic; | ||
| 7 | using System.IO; | ||
| 8 | using System.Runtime.InteropServices; | ||
| 9 | using WixToolset.Extensibility; | ||
| 10 | |||
| 11 | internal class FileSystem | ||
| 12 | { | ||
| 13 | public FileSystem(IEnumerable<IFileSystemExtension> extensions) | ||
| 14 | { | ||
| 15 | this.Extensions = extensions ?? Array.Empty<IFileSystemExtension>(); | ||
| 16 | } | ||
| 17 | |||
| 18 | private IEnumerable<IFileSystemExtension> Extensions { get; } | ||
| 19 | |||
| 20 | /// <summary> | ||
| 21 | /// Copies a file. | ||
| 22 | /// </summary> | ||
| 23 | /// <param name="source">The file to copy.</param> | ||
| 24 | /// <param name="destination">The destination file.</param> | ||
| 25 | /// <param name="overwrite">true if the destination file can be overwritten; otherwise, false.</param> | ||
| 26 | public bool CopyFile(string source, string destination, bool overwrite) | ||
| 27 | { | ||
| 28 | foreach (var extension in this.Extensions) | ||
| 29 | { | ||
| 30 | if (extension.CopyFile(source, destination, overwrite)) | ||
| 31 | { | ||
| 32 | return true; | ||
| 33 | } | ||
| 34 | } | ||
| 35 | |||
| 36 | if (overwrite && File.Exists(destination)) | ||
| 37 | { | ||
| 38 | File.Delete(destination); | ||
| 39 | } | ||
| 40 | |||
| 41 | if (!CreateHardLink(destination, source, IntPtr.Zero)) | ||
| 42 | { | ||
| 43 | #if DEBUG | ||
| 44 | int er = Marshal.GetLastWin32Error(); | ||
| 45 | #endif | ||
| 46 | |||
| 47 | File.Copy(source, destination, overwrite); | ||
| 48 | } | ||
| 49 | |||
| 50 | return true; | ||
| 51 | } | ||
| 52 | |||
| 53 | /// <summary> | ||
| 54 | /// Moves a file. | ||
| 55 | /// </summary> | ||
| 56 | /// <param name="source">The file to move.</param> | ||
| 57 | /// <param name="destination">The destination file.</param> | ||
| 58 | public bool MoveFile(string source, string destination, bool overwrite) | ||
| 59 | { | ||
| 60 | foreach (var extension in this.Extensions) | ||
| 61 | { | ||
| 62 | if (extension.MoveFile(source, destination, overwrite)) | ||
| 63 | { | ||
| 64 | return true; | ||
| 65 | } | ||
| 66 | } | ||
| 67 | |||
| 68 | if (overwrite && File.Exists(destination)) | ||
| 69 | { | ||
| 70 | File.Delete(destination); | ||
| 71 | } | ||
| 72 | |||
| 73 | var directory = Path.GetDirectoryName(destination); | ||
| 74 | if (!String.IsNullOrEmpty(directory)) | ||
| 75 | { | ||
| 76 | Directory.CreateDirectory(directory); | ||
| 77 | } | ||
| 78 | |||
| 79 | File.Move(source, destination); | ||
| 80 | |||
| 81 | return true; | ||
| 82 | } | ||
| 83 | |||
| 84 | [DllImport("Kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true)] | ||
| 85 | private static extern bool CreateHardLink(string lpFileName, string lpExistingFileName, IntPtr lpSecurityAttributes); | ||
| 86 | } | ||
| 87 | } | ||
diff --git a/src/WixToolset.Core/Bind/ResolveFieldsCommand.cs b/src/WixToolset.Core/Bind/ResolveFieldsCommand.cs index e8c90956..824eb9a5 100644 --- a/src/WixToolset.Core/Bind/ResolveFieldsCommand.cs +++ b/src/WixToolset.Core/Bind/ResolveFieldsCommand.cs | |||
| @@ -22,7 +22,7 @@ namespace WixToolset.Core.Bind | |||
| 22 | 22 | ||
| 23 | public IEnumerable<BindPath> BindPaths { private get; set; } | 23 | public IEnumerable<BindPath> BindPaths { private get; set; } |
| 24 | 24 | ||
| 25 | public IEnumerable<IBinderExtension> Extensions { private get; set; } | 25 | public IEnumerable<IResolverExtension> Extensions { private get; set; } |
| 26 | 26 | ||
| 27 | public ExtractEmbeddedFiles FilesWithEmbeddedFiles { private get; set; } | 27 | public ExtractEmbeddedFiles FilesWithEmbeddedFiles { private get; set; } |
| 28 | 28 | ||
| @@ -52,7 +52,6 @@ namespace WixToolset.Core.Bind | |||
| 52 | } | 52 | } |
| 53 | 53 | ||
| 54 | var isDefault = true; | 54 | var isDefault = true; |
| 55 | var delayedResolve = false; | ||
| 56 | 55 | ||
| 57 | // Check to make sure we're in a scenario where we can handle variable resolution. | 56 | // Check to make sure we're in a scenario where we can handle variable resolution. |
| 58 | if (null != delayedFields) | 57 | if (null != delayedFields) |
| @@ -63,16 +62,18 @@ namespace WixToolset.Core.Bind | |||
| 63 | var original = field.AsString(); | 62 | var original = field.AsString(); |
| 64 | if (!String.IsNullOrEmpty(original)) | 63 | if (!String.IsNullOrEmpty(original)) |
| 65 | { | 64 | { |
| 66 | var value = this.BindVariableResolver.ResolveVariables(row.SourceLineNumbers, original, false, out isDefault, out delayedResolve); | 65 | var resolution = this.BindVariableResolver.ResolveVariables(row.SourceLineNumbers, original, false); |
| 67 | if (original != value) | 66 | if (resolution.UpdatedValue) |
| 68 | { | 67 | { |
| 69 | field.Set(value); | 68 | field.Set(resolution.Value); |
| 70 | } | 69 | } |
| 71 | 70 | ||
| 72 | if (delayedResolve) | 71 | if (resolution.DelayedResolve) |
| 73 | { | 72 | { |
| 74 | delayedFields.Add(new DelayedField(row, field)); | 73 | delayedFields.Add(new DelayedField(row, field)); |
| 75 | } | 74 | } |
| 75 | |||
| 76 | isDefault = resolution.IsDefault; | ||
| 76 | } | 77 | } |
| 77 | } | 78 | } |
| 78 | } | 79 | } |
| @@ -119,13 +120,13 @@ namespace WixToolset.Core.Bind | |||
| 119 | #endif | 120 | #endif |
| 120 | 121 | ||
| 121 | // resolve the path to the file | 122 | // resolve the path to the file |
| 122 | var value = fileResolver.ResolveFile(objectField.Path, row.Definition.Name, row.SourceLineNumbers, BindStage.Normal); | 123 | var value = fileResolver.ResolveFile(objectField.Path, row.Definition, row.SourceLineNumbers, BindStage.Normal); |
| 123 | field.Set(value); | 124 | field.Set(value); |
| 124 | } | 125 | } |
| 125 | else if (!fileResolver.RebaseTarget && !fileResolver.RebaseUpdated) // Normal binding for Patch Scenario (normal patch, no re-basing logic) | 126 | else if (!fileResolver.RebaseTarget && !fileResolver.RebaseUpdated) // Normal binding for Patch Scenario (normal patch, no re-basing logic) |
| 126 | { | 127 | { |
| 127 | // resolve the path to the file | 128 | // resolve the path to the file |
| 128 | var value = fileResolver.ResolveFile(objectField.Path, row.Definition.Name, row.SourceLineNumbers, BindStage.Normal); | 129 | var value = fileResolver.ResolveFile(objectField.Path, row.Definition, row.SourceLineNumbers, BindStage.Normal); |
| 129 | field.Set(value); | 130 | field.Set(value); |
| 130 | } | 131 | } |
| 131 | #if REVISIT_FOR_PATCHING | 132 | #if REVISIT_FOR_PATCHING |
diff --git a/src/WixToolset.Core/Bind/ResolveResult.cs b/src/WixToolset.Core/Bind/ResolveResult.cs deleted file mode 100644 index 13f25054..00000000 --- a/src/WixToolset.Core/Bind/ResolveResult.cs +++ /dev/null | |||
| @@ -1,14 +0,0 @@ | |||
| 1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
| 2 | |||
| 3 | namespace WixToolset.Core.Bind | ||
| 4 | { | ||
| 5 | using System.Collections.Generic; | ||
| 6 | using WixToolset.Extensibility; | ||
| 7 | |||
| 8 | public class ResolveResult | ||
| 9 | { | ||
| 10 | public IEnumerable<IExpectedExtractFile> ExpectedEmbeddedFiles { get; set; } | ||
| 11 | |||
| 12 | public IEnumerable<IDelayedField> DelayedFields { get; set; } | ||
| 13 | } | ||
| 14 | } \ No newline at end of file | ||
diff --git a/src/WixToolset.Core/Bind/ResolvedDirectory.cs b/src/WixToolset.Core/Bind/ResolvedDirectory.cs deleted file mode 100644 index 9d07fc93..00000000 --- a/src/WixToolset.Core/Bind/ResolvedDirectory.cs +++ /dev/null | |||
| @@ -1,31 +0,0 @@ | |||
| 1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
| 2 | |||
| 3 | namespace WixToolset.Bind | ||
| 4 | { | ||
| 5 | /// <summary> | ||
| 6 | /// Structure used for resolved directory information. | ||
| 7 | /// </summary> | ||
| 8 | public struct ResolvedDirectory | ||
| 9 | { | ||
| 10 | /// <summary> | ||
| 11 | /// Constructor for ResolvedDirectory. | ||
| 12 | /// </summary> | ||
| 13 | /// <param name="directoryParent">Parent directory.</param> | ||
| 14 | /// <param name="name">The directory name.</param> | ||
| 15 | public ResolvedDirectory(string directoryParent, string name) | ||
| 16 | { | ||
| 17 | this.DirectoryParent = directoryParent; | ||
| 18 | this.Name = name; | ||
| 19 | this.Path = null; | ||
| 20 | } | ||
| 21 | |||
| 22 | /// <summary>The directory parent.</summary> | ||
| 23 | public string DirectoryParent { get; set; } | ||
| 24 | |||
| 25 | /// <summary>The name of this directory.</summary> | ||
| 26 | public string Name { get; set; } | ||
| 27 | |||
| 28 | /// <summary>The path of this directory.</summary> | ||
| 29 | public string Path { get; set; } | ||
| 30 | } | ||
| 31 | } | ||
diff --git a/src/WixToolset.Core/Bind/TransferFilesCommand.cs b/src/WixToolset.Core/Bind/TransferFilesCommand.cs index 68d8b129..d4e143c3 100644 --- a/src/WixToolset.Core/Bind/TransferFilesCommand.cs +++ b/src/WixToolset.Core/Bind/TransferFilesCommand.cs | |||
| @@ -13,15 +13,15 @@ namespace WixToolset.Core.Bind | |||
| 13 | 13 | ||
| 14 | internal class TransferFilesCommand | 14 | internal class TransferFilesCommand |
| 15 | { | 15 | { |
| 16 | public TransferFilesCommand(IMessaging messaging, IEnumerable<BindPath> bindPaths, IEnumerable<IBinderExtension> extensions, IEnumerable<FileTransfer> fileTransfers, bool suppressAclReset) | 16 | public TransferFilesCommand(IMessaging messaging, IEnumerable<IFileSystemExtension> extensions, IEnumerable<FileTransfer> fileTransfers, bool suppressAclReset) |
| 17 | { | 17 | { |
| 18 | this.FileResolver = new FileResolver(bindPaths, extensions); | 18 | this.FileSystem = new FileSystem(extensions); |
| 19 | this.Messaging = messaging; | 19 | this.Messaging = messaging; |
| 20 | this.FileTransfers = fileTransfers; | 20 | this.FileTransfers = fileTransfers; |
| 21 | this.SuppressAclReset = suppressAclReset; | 21 | this.SuppressAclReset = suppressAclReset; |
| 22 | } | 22 | } |
| 23 | 23 | ||
| 24 | private FileResolver FileResolver { get; } | 24 | private FileSystem FileSystem { get; } |
| 25 | 25 | ||
| 26 | private IMessaging Messaging { get; } | 26 | private IMessaging Messaging { get; } |
| 27 | 27 | ||
| @@ -35,10 +35,8 @@ namespace WixToolset.Core.Bind | |||
| 35 | 35 | ||
| 36 | foreach (var fileTransfer in this.FileTransfers) | 36 | foreach (var fileTransfer in this.FileTransfers) |
| 37 | { | 37 | { |
| 38 | string fileSource = this.FileResolver.ResolveFile(fileTransfer.Source, fileTransfer.Type, fileTransfer.SourceLineNumbers, BindStage.Normal); | ||
| 39 | |||
| 40 | // If the source and destination are identical, then there's nothing to do here | 38 | // If the source and destination are identical, then there's nothing to do here |
| 41 | if (0 == String.Compare(fileSource, fileTransfer.Destination, StringComparison.OrdinalIgnoreCase)) | 39 | if (0 == String.Compare(fileTransfer.Source, fileTransfer.Destination, StringComparison.OrdinalIgnoreCase)) |
| 42 | { | 40 | { |
| 43 | fileTransfer.Redundant = true; | 41 | fileTransfer.Redundant = true; |
| 44 | continue; | 42 | continue; |
| @@ -51,13 +49,13 @@ namespace WixToolset.Core.Bind | |||
| 51 | { | 49 | { |
| 52 | if (fileTransfer.Move) | 50 | if (fileTransfer.Move) |
| 53 | { | 51 | { |
| 54 | this.Messaging.Write(VerboseMessages.MoveFile(fileSource, fileTransfer.Destination)); | 52 | this.Messaging.Write(VerboseMessages.MoveFile(fileTransfer.Source, fileTransfer.Destination)); |
| 55 | this.TransferFile(true, fileSource, fileTransfer.Destination); | 53 | this.TransferFile(true, fileTransfer.Source, fileTransfer.Destination); |
| 56 | } | 54 | } |
| 57 | else | 55 | else |
| 58 | { | 56 | { |
| 59 | this.Messaging.Write(VerboseMessages.CopyFile(fileSource, fileTransfer.Destination)); | 57 | this.Messaging.Write(VerboseMessages.CopyFile(fileTransfer.Source, fileTransfer.Destination)); |
| 60 | this.TransferFile(false, fileSource, fileTransfer.Destination); | 58 | this.TransferFile(false, fileTransfer.Source, fileTransfer.Destination); |
| 61 | } | 59 | } |
| 62 | 60 | ||
| 63 | retry = false; | 61 | retry = false; |
| @@ -183,11 +181,11 @@ namespace WixToolset.Core.Bind | |||
| 183 | 181 | ||
| 184 | if (move) | 182 | if (move) |
| 185 | { | 183 | { |
| 186 | complete = this.FileResolver.MoveFile(source, destination, true); | 184 | complete = this.FileSystem.MoveFile(source, destination, true); |
| 187 | } | 185 | } |
| 188 | else | 186 | else |
| 189 | { | 187 | { |
| 190 | complete = this.FileResolver.CopyFile(source, destination, true); | 188 | complete = this.FileSystem.CopyFile(source, destination, true); |
| 191 | } | 189 | } |
| 192 | 190 | ||
| 193 | if (!complete) | 191 | if (!complete) |
