diff options
Diffstat (limited to '')
-rw-r--r-- | src/WixToolset.Core/LayoutCreator.cs (renamed from src/WixToolset.Core/Layout.cs) | 50 |
1 files changed, 12 insertions, 38 deletions
diff --git a/src/WixToolset.Core/Layout.cs b/src/WixToolset.Core/LayoutCreator.cs index b1b03aa7..684465d2 100644 --- a/src/WixToolset.Core/Layout.cs +++ b/src/WixToolset.Core/LayoutCreator.cs | |||
@@ -8,16 +8,15 @@ namespace WixToolset.Core | |||
8 | using System.Linq; | 8 | using System.Linq; |
9 | using WixToolset.Core.Bind; | 9 | using WixToolset.Core.Bind; |
10 | using WixToolset.Data; | 10 | using WixToolset.Data; |
11 | using WixToolset.Extensibility; | ||
12 | using WixToolset.Extensibility.Data; | 11 | using WixToolset.Extensibility.Data; |
13 | using WixToolset.Extensibility.Services; | 12 | using WixToolset.Extensibility.Services; |
14 | 13 | ||
15 | /// <summary> | 14 | /// <summary> |
16 | /// Layout for the WiX toolset. | 15 | /// Layout for the WiX toolset. |
17 | /// </summary> | 16 | /// </summary> |
18 | internal class Layout | 17 | internal class LayoutCreator : ILayoutCreator |
19 | { | 18 | { |
20 | internal Layout(IServiceProvider serviceProvider) | 19 | internal LayoutCreator(IServiceProvider serviceProvider) |
21 | { | 20 | { |
22 | this.ServiceProvider = serviceProvider; | 21 | this.ServiceProvider = serviceProvider; |
23 | 22 | ||
@@ -28,33 +27,8 @@ namespace WixToolset.Core | |||
28 | 27 | ||
29 | private IMessaging Messaging { get; } | 28 | private IMessaging Messaging { get; } |
30 | 29 | ||
31 | public IEnumerable<ITrackedFile> TrackedFiles { get; set; } | 30 | public void Layout(ILayoutContext context) |
32 | |||
33 | public IEnumerable<IFileTransfer> FileTransfers { get; set; } | ||
34 | |||
35 | public string IntermediateFolder { get; set; } | ||
36 | |||
37 | public string ContentsFile { get; set; } | ||
38 | |||
39 | public string OutputsFile { get; set; } | ||
40 | |||
41 | public string BuiltOutputsFile { get; set; } | ||
42 | |||
43 | public bool SuppressAclReset { get; set; } | ||
44 | |||
45 | public void Execute() | ||
46 | { | 31 | { |
47 | var extensionManager = this.ServiceProvider.GetService<IExtensionManager>(); | ||
48 | |||
49 | var context = this.ServiceProvider.GetService<ILayoutContext>(); | ||
50 | context.Extensions = extensionManager.Create<ILayoutExtension>(); | ||
51 | context.TrackedFiles = this.TrackedFiles; | ||
52 | context.FileTransfers = this.FileTransfers; | ||
53 | context.ContentsFile = this.ContentsFile; | ||
54 | context.OutputsFile = this.OutputsFile; | ||
55 | context.BuiltOutputsFile = this.BuiltOutputsFile; | ||
56 | context.SuppressAclReset = this.SuppressAclReset; | ||
57 | |||
58 | // Pre-layout. | 32 | // Pre-layout. |
59 | // | 33 | // |
60 | foreach (var extension in context.Extensions) | 34 | foreach (var extension in context.Extensions) |
@@ -76,7 +50,7 @@ namespace WixToolset.Core | |||
76 | 50 | ||
77 | if (context.TrackedFiles != null) | 51 | if (context.TrackedFiles != null) |
78 | { | 52 | { |
79 | this.CleanTempFiles(context.TrackedFiles); | 53 | this.CleanTempFiles(context.IntermediateFolder, context.TrackedFiles); |
80 | } | 54 | } |
81 | } | 55 | } |
82 | finally | 56 | finally |
@@ -126,7 +100,7 @@ namespace WixToolset.Core | |||
126 | 100 | ||
127 | using (var contents = new StreamWriter(path, false)) | 101 | using (var contents = new StreamWriter(path, false)) |
128 | { | 102 | { |
129 | foreach (string inputPath in uniqueInputFilePaths) | 103 | foreach (var inputPath in uniqueInputFilePaths) |
130 | { | 104 | { |
131 | contents.WriteLine(inputPath); | 105 | contents.WriteLine(inputPath); |
132 | } | 106 | } |
@@ -190,7 +164,7 @@ namespace WixToolset.Core | |||
190 | } | 164 | } |
191 | } | 165 | } |
192 | 166 | ||
193 | private void CleanTempFiles(IEnumerable<ITrackedFile> trackedFiles) | 167 | private void CleanTempFiles(string intermediateFolder, IEnumerable<ITrackedFile> trackedFiles) |
194 | { | 168 | { |
195 | var uniqueTempPaths = new SortedSet<string>(trackedFiles.Where(t => t.Type == TrackedFileType.Temporary).Select(t => t.Path), StringComparer.OrdinalIgnoreCase); | 169 | var uniqueTempPaths = new SortedSet<string>(trackedFiles.Where(t => t.Type == TrackedFileType.Temporary).Select(t => t.Path), StringComparer.OrdinalIgnoreCase); |
196 | 170 | ||
@@ -201,7 +175,7 @@ namespace WixToolset.Core | |||
201 | 175 | ||
202 | var uniqueFolders = new SortedSet<string>(StringComparer.OrdinalIgnoreCase) | 176 | var uniqueFolders = new SortedSet<string>(StringComparer.OrdinalIgnoreCase) |
203 | { | 177 | { |
204 | this.IntermediateFolder | 178 | intermediateFolder |
205 | }; | 179 | }; |
206 | 180 | ||
207 | // Clean up temp files. | 181 | // Clean up temp files. |
@@ -209,7 +183,7 @@ namespace WixToolset.Core | |||
209 | { | 183 | { |
210 | try | 184 | try |
211 | { | 185 | { |
212 | this.SplitUniqueFolders(tempPath, uniqueFolders); | 186 | this.SplitUniqueFolders(intermediateFolder, tempPath, uniqueFolders); |
213 | 187 | ||
214 | File.Delete(tempPath); | 188 | File.Delete(tempPath); |
215 | } | 189 | } |
@@ -231,15 +205,15 @@ namespace WixToolset.Core | |||
231 | } | 205 | } |
232 | } | 206 | } |
233 | 207 | ||
234 | private void SplitUniqueFolders(string tempPath, SortedSet<string> uniqueFolders) | 208 | private void SplitUniqueFolders(string intermediateFolder, string tempPath, SortedSet<string> uniqueFolders) |
235 | { | 209 | { |
236 | if (tempPath.StartsWith(this.IntermediateFolder, StringComparison.OrdinalIgnoreCase)) | 210 | if (tempPath.StartsWith(intermediateFolder, StringComparison.OrdinalIgnoreCase)) |
237 | { | 211 | { |
238 | var folder = Path.GetDirectoryName(tempPath).Substring(this.IntermediateFolder.Length); | 212 | var folder = Path.GetDirectoryName(tempPath).Substring(intermediateFolder.Length); |
239 | 213 | ||
240 | var parts = folder.Split(new[] { '\\', '/' }, StringSplitOptions.RemoveEmptyEntries); | 214 | var parts = folder.Split(new[] { '\\', '/' }, StringSplitOptions.RemoveEmptyEntries); |
241 | 215 | ||
242 | folder = this.IntermediateFolder; | 216 | folder = intermediateFolder; |
243 | 217 | ||
244 | foreach (var part in parts) | 218 | foreach (var part in parts) |
245 | { | 219 | { |