diff options
author | Rob Mensching <rob@firegiant.com> | 2022-01-02 13:13:10 -0800 |
---|---|---|
committer | Rob Mensching <rob@firegiant.com> | 2022-01-02 23:48:48 -0800 |
commit | 9e3d7c0c4c7000ef51c2959b4e04c2323d1dac31 (patch) | |
tree | 6f3ad75de6ad7efbfa2dcb31818ecf14ee07456c | |
parent | 770bf982da4a81e56ba4be2b6a7a3afa3868a535 (diff) | |
download | wix-9e3d7c0c4c7000ef51c2959b4e04c2323d1dac31.tar.gz wix-9e3d7c0c4c7000ef51c2959b4e04c2323d1dac31.tar.bz2 wix-9e3d7c0c4c7000ef51c2959b4e04c2323d1dac31.zip |
Move to a single tracking file for all bind inputs and outputs
A single tracking file can be enhanced more easily than continuing
to introduce specialized tracking files. In this case, we now
include output files that are copied and can differentiate them from
the built output files.
14 files changed, 185 insertions, 206 deletions
diff --git a/src/api/wix/WixToolset.Extensibility/Data/ILayoutContext.cs b/src/api/wix/WixToolset.Extensibility/Data/ILayoutContext.cs index b11b4d13..981ed38e 100644 --- a/src/api/wix/WixToolset.Extensibility/Data/ILayoutContext.cs +++ b/src/api/wix/WixToolset.Extensibility/Data/ILayoutContext.cs | |||
@@ -32,24 +32,14 @@ namespace WixToolset.Extensibility.Data | |||
32 | IReadOnlyCollection<IFileTransfer> FileTransfers { get; set; } | 32 | IReadOnlyCollection<IFileTransfer> FileTransfers { get; set; } |
33 | 33 | ||
34 | /// <summary> | 34 | /// <summary> |
35 | /// File to capture list of content files. | ||
36 | /// </summary> | ||
37 | string ContentsFile { get; set; } | ||
38 | |||
39 | /// <summary> | ||
40 | /// File to capture list of output files. | ||
41 | /// </summary> | ||
42 | string OutputsFile { get; set; } | ||
43 | |||
44 | /// <summary> | ||
45 | /// Intermediate folder. | 35 | /// Intermediate folder. |
46 | /// </summary> | 36 | /// </summary> |
47 | string IntermediateFolder { get; set; } | 37 | string IntermediateFolder { get; set; } |
48 | 38 | ||
49 | /// <summary> | 39 | /// <summary> |
50 | /// List of built output files. | 40 | /// File to capture list of content, built output and copied output files. |
51 | /// </summary> | 41 | /// </summary> |
52 | string BuiltOutputsFile { get; set; } | 42 | string TrackingFile { get; set; } |
53 | 43 | ||
54 | /// <summary> | 44 | /// <summary> |
55 | /// Reset ACLs on file transfers. | 45 | /// Reset ACLs on file transfers. |
diff --git a/src/api/wix/WixToolset.Extensibility/Data/TrackedFileType.cs b/src/api/wix/WixToolset.Extensibility/Data/TrackedFileType.cs index e7f53842..904a990f 100644 --- a/src/api/wix/WixToolset.Extensibility/Data/TrackedFileType.cs +++ b/src/api/wix/WixToolset.Extensibility/Data/TrackedFileType.cs | |||
@@ -25,9 +25,15 @@ namespace WixToolset.Extensibility.Data | |||
25 | Intermediate, | 25 | Intermediate, |
26 | 26 | ||
27 | /// <summary> | 27 | /// <summary> |
28 | /// Final output (like a .msi, .cab or .wixpdb). | 28 | /// Output created by the build process itself (like a .msi, .cab or .wixpdb). |
29 | /// These are the whole point of the build process. | 29 | /// These files can be recreated in the final output location by building again. |
30 | /// </summary> | 30 | /// </summary> |
31 | Final, | 31 | BuiltOutput, |
32 | |||
33 | /// <summary> | ||
34 | /// Output copied by the build process (like external files in an .msi). | ||
35 | /// These files are not created by the build process but are copied to the final output location. | ||
36 | /// </summary> | ||
37 | CopiedOutput, | ||
32 | } | 38 | } |
33 | } | 39 | } |
diff --git a/src/wix/WixToolset.BuildTasks/ReadTracking.cs b/src/wix/WixToolset.BuildTasks/ReadTracking.cs new file mode 100644 index 00000000..1ce039f6 --- /dev/null +++ b/src/wix/WixToolset.BuildTasks/ReadTracking.cs | |||
@@ -0,0 +1,97 @@ | |||
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.BuildTasks | ||
4 | { | ||
5 | using System; | ||
6 | using System.Collections.Generic; | ||
7 | using System.Linq; | ||
8 | using Microsoft.Build.Framework; | ||
9 | using Microsoft.Build.Utilities; | ||
10 | |||
11 | /// <summary> | ||
12 | /// Read the contents of the tracking file produced by the build command. | ||
13 | /// </summary> | ||
14 | public class ReadTracking : Task | ||
15 | { | ||
16 | private const string TrackedTypeMetadataName = "TrackedType"; | ||
17 | private static readonly char[] TrackedLineTypePathSeparator = new[] { '\t' }; | ||
18 | |||
19 | /// <summary> | ||
20 | /// The path to the tracking file. | ||
21 | /// </summary> | ||
22 | [Required] | ||
23 | public ITaskItem File { get; set; } | ||
24 | |||
25 | /// <summary> | ||
26 | /// All tracked files. | ||
27 | /// </summary> | ||
28 | [Output] | ||
29 | public ITaskItem[] All { get; private set; } | ||
30 | |||
31 | /// <summary> | ||
32 | /// The tracked built outputs. | ||
33 | /// </summary> | ||
34 | [Output] | ||
35 | public ITaskItem[] BuiltOutputs { get; private set; } | ||
36 | |||
37 | /// <summary> | ||
38 | /// The tracked copied outputs. | ||
39 | /// </summary> | ||
40 | [Output] | ||
41 | public ITaskItem[] CopiedOutputs { get; private set; } | ||
42 | |||
43 | /// <summary> | ||
44 | /// The tracked inputs. | ||
45 | /// </summary> | ||
46 | [Output] | ||
47 | public ITaskItem[] Inputs { get; private set; } | ||
48 | |||
49 | /// <summary> | ||
50 | /// All tracked outputs. | ||
51 | /// </summary> | ||
52 | [Output] | ||
53 | public ITaskItem[] Outputs { get; private set; } | ||
54 | |||
55 | /// <summary> | ||
56 | /// Gets a complete list of external cabs referenced by the given installer database file. | ||
57 | /// </summary> | ||
58 | /// <returns>True upon completion of the task execution.</returns> | ||
59 | public override bool Execute() | ||
60 | { | ||
61 | var all = new List<ITaskItem>(); | ||
62 | var path = this.File.ItemSpec; | ||
63 | |||
64 | if (System.IO.File.Exists(path)) | ||
65 | { | ||
66 | var lines = System.IO.File.ReadAllLines(path); | ||
67 | |||
68 | foreach (var line in lines) | ||
69 | { | ||
70 | var split = line.Split(TrackedLineTypePathSeparator, 2, StringSplitOptions.RemoveEmptyEntries); | ||
71 | |||
72 | if (split.Length == 2) | ||
73 | { | ||
74 | all.Add(new TaskItem(split[1], new Dictionary<string, string>() { [TrackedTypeMetadataName] = split[0] })); | ||
75 | } | ||
76 | else | ||
77 | { | ||
78 | this.Log.LogError($"Failed to parse tracked line: {line}"); | ||
79 | } | ||
80 | } | ||
81 | } | ||
82 | |||
83 | this.All = all.ToArray(); | ||
84 | this.BuiltOutputs = all.Where(t => FilterByTrackedType(t, "BuiltOutput")).ToArray(); | ||
85 | this.CopiedOutputs = all.Where(t => FilterByTrackedType(t, "CopiedOutput")).ToArray(); | ||
86 | this.Inputs = all.Where(t => FilterByTrackedType(t, "Input")).ToArray(); | ||
87 | this.Outputs = all.Where(t => FilterByTrackedType(t, "BuiltOutput") || FilterByTrackedType(t, "CopiedOutput")).ToArray(); | ||
88 | |||
89 | return true; | ||
90 | } | ||
91 | |||
92 | private static bool FilterByTrackedType(ITaskItem item, string type) | ||
93 | { | ||
94 | return item.GetMetadata(TrackedTypeMetadataName).Equals(type, StringComparison.OrdinalIgnoreCase); | ||
95 | } | ||
96 | } | ||
97 | } | ||
diff --git a/src/wix/WixToolset.BuildTasks/WixBuild.cs b/src/wix/WixToolset.BuildTasks/WixBuild.cs index dbff7e81..3d4617f6 100644 --- a/src/wix/WixToolset.BuildTasks/WixBuild.cs +++ b/src/wix/WixToolset.BuildTasks/WixBuild.cs | |||
@@ -52,11 +52,7 @@ namespace WixToolset.BuildTasks | |||
52 | 52 | ||
53 | public bool BindFiles { get; set; } | 53 | public bool BindFiles { get; set; } |
54 | 54 | ||
55 | public ITaskItem BindContentsFile { get; set; } | 55 | public ITaskItem BindTrackingFile { get; set; } |
56 | |||
57 | public ITaskItem BindOutputsFile { get; set; } | ||
58 | |||
59 | public ITaskItem BindBuiltOutputsFile { get; set; } | ||
60 | 56 | ||
61 | public string CabinetCachePath { get; set; } | 57 | public string CabinetCachePath { get; set; } |
62 | 58 | ||
@@ -96,9 +92,7 @@ namespace WixToolset.BuildTasks | |||
96 | commandLineBuilder.AppendSwitchIfNotNull("-usf ", this.UnreferencedSymbolsFile); | 92 | commandLineBuilder.AppendSwitchIfNotNull("-usf ", this.UnreferencedSymbolsFile); |
97 | commandLineBuilder.AppendSwitchIfNotNull("-cc ", this.CabinetCachePath); | 93 | commandLineBuilder.AppendSwitchIfNotNull("-cc ", this.CabinetCachePath); |
98 | commandLineBuilder.AppendSwitchIfNotNull("-intermediatefolder ", this.IntermediateDirectory); | 94 | commandLineBuilder.AppendSwitchIfNotNull("-intermediatefolder ", this.IntermediateDirectory); |
99 | commandLineBuilder.AppendSwitchIfNotNull("-contentsfile ", this.BindContentsFile); | 95 | commandLineBuilder.AppendSwitchIfNotNull("-trackingfile ", this.BindTrackingFile); |
100 | commandLineBuilder.AppendSwitchIfNotNull("-outputsfile ", this.BindOutputsFile); | ||
101 | commandLineBuilder.AppendSwitchIfNotNull("-builtoutputsfile ", this.BindBuiltOutputsFile); | ||
102 | commandLineBuilder.AppendSwitchIfNotNull("-defaultcompressionlevel ", this.DefaultCompressionLevel); | 96 | commandLineBuilder.AppendSwitchIfNotNull("-defaultcompressionlevel ", this.DefaultCompressionLevel); |
103 | 97 | ||
104 | base.BuildCommandLine(commandLineBuilder); | 98 | base.BuildCommandLine(commandLineBuilder); |
diff --git a/src/wix/WixToolset.Core.Burn/Bind/BindBundleCommand.cs b/src/wix/WixToolset.Core.Burn/Bind/BindBundleCommand.cs index cd00232a..7b74ce5e 100644 --- a/src/wix/WixToolset.Core.Burn/Bind/BindBundleCommand.cs +++ b/src/wix/WixToolset.Core.Burn/Bind/BindBundleCommand.cs | |||
@@ -483,7 +483,7 @@ namespace WixToolset.Core.Burn | |||
483 | command.Execute(); | 483 | command.Execute(); |
484 | 484 | ||
485 | fileTransfers.Add(command.Transfer); | 485 | fileTransfers.Add(command.Transfer); |
486 | trackedFiles.Add(this.BackendHelper.TrackFile(this.OutputPath, TrackedFileType.Final)); | 486 | trackedFiles.Add(this.BackendHelper.TrackFile(this.OutputPath, TrackedFileType.BuiltOutput)); |
487 | } | 487 | } |
488 | 488 | ||
489 | #if TODO // does this need to come back, or do they only need to be in TrackedFiles? | 489 | #if TODO // does this need to come back, or do they only need to be in TrackedFiles? |
@@ -504,7 +504,7 @@ namespace WixToolset.Core.Burn | |||
504 | } | 504 | } |
505 | else | 505 | else |
506 | { | 506 | { |
507 | var trackPdb = this.BackendHelper.TrackFile(this.OutputPdbPath, TrackedFileType.Final); | 507 | var trackPdb = this.BackendHelper.TrackFile(this.OutputPdbPath, TrackedFileType.BuiltOutput); |
508 | trackedFiles.Add(trackPdb); | 508 | trackedFiles.Add(trackPdb); |
509 | 509 | ||
510 | wixout = WixOutput.Create(trackPdb.Path); | 510 | wixout = WixOutput.Create(trackPdb.Path); |
diff --git a/src/wix/WixToolset.Core.WindowsInstaller/Bind/BindDatabaseCommand.cs b/src/wix/WixToolset.Core.WindowsInstaller/Bind/BindDatabaseCommand.cs index 9f36cd78..f2a8b9c6 100644 --- a/src/wix/WixToolset.Core.WindowsInstaller/Bind/BindDatabaseCommand.cs +++ b/src/wix/WixToolset.Core.WindowsInstaller/Bind/BindDatabaseCommand.cs | |||
@@ -478,7 +478,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
478 | { | 478 | { |
479 | this.Messaging.Write(VerboseMessages.GeneratingDatabase()); | 479 | this.Messaging.Write(VerboseMessages.GeneratingDatabase()); |
480 | 480 | ||
481 | var trackMsi = this.WindowsInstallerBackendHelper.TrackFile(this.OutputPath, TrackedFileType.Final); | 481 | var trackMsi = this.WindowsInstallerBackendHelper.TrackFile(this.OutputPath, TrackedFileType.BuiltOutput); |
482 | trackedFiles.Add(trackMsi); | 482 | trackedFiles.Add(trackMsi); |
483 | 483 | ||
484 | var command = new GenerateDatabaseCommand(this.Messaging, this.WindowsInstallerBackendHelper, this.FileSystemManager, data, trackMsi.Path, tableDefinitions, this.IntermediateFolder, keepAddedColumns: false, this.SuppressAddingValidationRows, useSubdirectory: false); | 484 | var command = new GenerateDatabaseCommand(this.Messaging, this.WindowsInstallerBackendHelper, this.FileSystemManager, data, trackMsi.Path, tableDefinitions, this.IntermediateFolder, keepAddedColumns: false, this.SuppressAddingValidationRows, useSubdirectory: false); |
@@ -595,7 +595,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
595 | } | 595 | } |
596 | else | 596 | else |
597 | { | 597 | { |
598 | var trackPdb = this.WindowsInstallerBackendHelper.TrackFile(this.OutputPdbPath, TrackedFileType.Final); | 598 | var trackPdb = this.WindowsInstallerBackendHelper.TrackFile(this.OutputPdbPath, TrackedFileType.BuiltOutput); |
599 | trackedFiles.Add(trackPdb); | 599 | trackedFiles.Add(trackPdb); |
600 | 600 | ||
601 | wixout = WixOutput.Create(trackPdb.Path); | 601 | wixout = WixOutput.Create(trackPdb.Path); |
diff --git a/src/wix/WixToolset.Core.WindowsInstaller/Bind/CreateCabinetsCommand.cs b/src/wix/WixToolset.Core.WindowsInstaller/Bind/CreateCabinetsCommand.cs index 83a4949e..4ac248cd 100644 --- a/src/wix/WixToolset.Core.WindowsInstaller/Bind/CreateCabinetsCommand.cs +++ b/src/wix/WixToolset.Core.WindowsInstaller/Bind/CreateCabinetsCommand.cs | |||
@@ -225,7 +225,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
225 | } | 225 | } |
226 | else | 226 | else |
227 | { | 227 | { |
228 | var trackDestination = this.BackendHelper.TrackFile(Path.Combine(cabinetDir, mediaSymbol.Cabinet), TrackedFileType.Final, mediaSymbol.SourceLineNumbers); | 228 | var trackDestination = this.BackendHelper.TrackFile(Path.Combine(cabinetDir, mediaSymbol.Cabinet), TrackedFileType.BuiltOutput, mediaSymbol.SourceLineNumbers); |
229 | this.trackedFiles.Add(trackDestination); | 229 | this.trackedFiles.Add(trackDestination); |
230 | 230 | ||
231 | var transfer = this.BackendHelper.CreateFileTransfer(resolvedCabinet.Path, trackDestination.Path, resolvedCabinet.BuildOption == CabinetBuildOption.BuildAndMove, mediaSymbol.SourceLineNumbers); | 231 | var transfer = this.BackendHelper.CreateFileTransfer(resolvedCabinet.Path, trackDestination.Path, resolvedCabinet.BuildOption == CabinetBuildOption.BuildAndMove, mediaSymbol.SourceLineNumbers); |
diff --git a/src/wix/WixToolset.Core.WindowsInstaller/Bind/ProcessUncompressedFilesCommand.cs b/src/wix/WixToolset.Core.WindowsInstaller/Bind/ProcessUncompressedFilesCommand.cs index 039ba495..9aad3537 100644 --- a/src/wix/WixToolset.Core.WindowsInstaller/Bind/ProcessUncompressedFilesCommand.cs +++ b/src/wix/WixToolset.Core.WindowsInstaller/Bind/ProcessUncompressedFilesCommand.cs | |||
@@ -109,7 +109,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
109 | // because if the source and destination of the transfer is the same, we | 109 | // because if the source and destination of the transfer is the same, we |
110 | // don't want to clean the file because we'd be deleting the original | 110 | // don't want to clean the file because we'd be deleting the original |
111 | // (and that would be bad). | 111 | // (and that would be bad). |
112 | var tracked = this.BackendHelper.TrackFile(transfer.Destination, TrackedFileType.Final, facade.SourceLineNumber); | 112 | var tracked = this.BackendHelper.TrackFile(transfer.Destination, TrackedFileType.BuiltOutput, facade.SourceLineNumber); |
113 | tracked.Clean = !transfer.Redundant; | 113 | tracked.Clean = !transfer.Redundant; |
114 | 114 | ||
115 | trackedFiles.Add(tracked); | 115 | trackedFiles.Add(tracked); |
diff --git a/src/wix/WixToolset.Core/CommandLine/BuildCommand.cs b/src/wix/WixToolset.Core/CommandLine/BuildCommand.cs index 5f618b81..47b7afa8 100644 --- a/src/wix/WixToolset.Core/CommandLine/BuildCommand.cs +++ b/src/wix/WixToolset.Core/CommandLine/BuildCommand.cs | |||
@@ -52,11 +52,7 @@ namespace WixToolset.Core.CommandLine | |||
52 | 52 | ||
53 | private CompressionLevel? DefaultCompressionLevel { get; set; } | 53 | private CompressionLevel? DefaultCompressionLevel { get; set; } |
54 | 54 | ||
55 | private string ContentsFile { get; set; } | 55 | private string TrackingFile { get; set; } |
56 | |||
57 | private string OutputsFile { get; set; } | ||
58 | |||
59 | private string BuiltOutputsFile { get; set; } | ||
60 | 56 | ||
61 | public Task<int> ExecuteAsync(CancellationToken cancellationToken) | 57 | public Task<int> ExecuteAsync(CancellationToken cancellationToken) |
62 | { | 58 | { |
@@ -78,11 +74,7 @@ namespace WixToolset.Core.CommandLine | |||
78 | 74 | ||
79 | this.Platform = this.commandLine.Platform; | 75 | this.Platform = this.commandLine.Platform; |
80 | 76 | ||
81 | this.ContentsFile = this.commandLine.ContentsFile; | 77 | this.TrackingFile = this.commandLine.TrackingFile; |
82 | |||
83 | this.OutputsFile = this.commandLine.OutputsFile; | ||
84 | |||
85 | this.BuiltOutputsFile = this.commandLine.BuiltOutputsFile; | ||
86 | 78 | ||
87 | this.DefaultCompressionLevel = this.commandLine.DefaultCompressionLevel; | 79 | this.DefaultCompressionLevel = this.commandLine.DefaultCompressionLevel; |
88 | 80 | ||
@@ -371,9 +363,7 @@ namespace WixToolset.Core.CommandLine | |||
371 | context.TrackedFiles = bindResult.TrackedFiles; | 363 | context.TrackedFiles = bindResult.TrackedFiles; |
372 | context.FileTransfers = bindResult.FileTransfers; | 364 | context.FileTransfers = bindResult.FileTransfers; |
373 | context.IntermediateFolder = intermediateFolder; | 365 | context.IntermediateFolder = intermediateFolder; |
374 | context.ContentsFile = this.ContentsFile; | 366 | context.TrackingFile = this.TrackingFile; |
375 | context.OutputsFile = this.OutputsFile; | ||
376 | context.BuiltOutputsFile = this.BuiltOutputsFile; | ||
377 | context.ResetAcls = this.commandLine.ResetAcls; | 367 | context.ResetAcls = this.commandLine.ResetAcls; |
378 | context.CancellationToken = cancellationToken; | 368 | context.CancellationToken = cancellationToken; |
379 | 369 | ||
@@ -537,11 +527,7 @@ namespace WixToolset.Core.CommandLine | |||
537 | 527 | ||
538 | public CompressionLevel? DefaultCompressionLevel { get; private set; } | 528 | public CompressionLevel? DefaultCompressionLevel { get; private set; } |
539 | 529 | ||
540 | public string ContentsFile { get; private set; } | 530 | public string TrackingFile { get; private set; } |
541 | |||
542 | public string OutputsFile { get; private set; } | ||
543 | |||
544 | public string BuiltOutputsFile { get; private set; } | ||
545 | 531 | ||
546 | public List<string> Ices { get; } = new List<string>(); | 532 | public List<string> Ices { get; } = new List<string>(); |
547 | 533 | ||
@@ -610,16 +596,8 @@ namespace WixToolset.Core.CommandLine | |||
610 | parser.GetNextArgumentOrError(arg, this.Cultures); | 596 | parser.GetNextArgumentOrError(arg, this.Cultures); |
611 | return true; | 597 | return true; |
612 | 598 | ||
613 | case "contentsfile": | 599 | case "trackingfile": |
614 | this.ContentsFile = parser.GetNextArgumentAsFilePathOrError(arg); | 600 | this.TrackingFile = parser.GetNextArgumentAsFilePathOrError(arg); |
615 | return true; | ||
616 | |||
617 | case "outputsfile": | ||
618 | this.OutputsFile = parser.GetNextArgumentAsFilePathOrError(arg); | ||
619 | return true; | ||
620 | |||
621 | case "builtoutputsfile": | ||
622 | this.BuiltOutputsFile = parser.GetNextArgumentAsFilePathOrError(arg); | ||
623 | return true; | 601 | return true; |
624 | 602 | ||
625 | case "d": | 603 | case "d": |
diff --git a/src/wix/WixToolset.Core/ExtensibilityServices/TrackedFile.cs b/src/wix/WixToolset.Core/ExtensibilityServices/TrackedFile.cs index 028cddbf..570fb029 100644 --- a/src/wix/WixToolset.Core/ExtensibilityServices/TrackedFile.cs +++ b/src/wix/WixToolset.Core/ExtensibilityServices/TrackedFile.cs | |||
@@ -12,7 +12,7 @@ namespace WixToolset.Core.ExtensibilityServices | |||
12 | this.Path = path; | 12 | this.Path = path; |
13 | this.Type = type; | 13 | this.Type = type; |
14 | this.SourceLineNumbers = sourceLineNumbers; | 14 | this.SourceLineNumbers = sourceLineNumbers; |
15 | this.Clean = (type == TrackedFileType.Intermediate || type == TrackedFileType.Final); | 15 | this.Clean = (type == TrackedFileType.Intermediate || type == TrackedFileType.BuiltOutput || type == TrackedFileType.CopiedOutput); |
16 | } | 16 | } |
17 | 17 | ||
18 | public bool Clean { get; set; } | 18 | public bool Clean { get; set; } |
diff --git a/src/wix/WixToolset.Core/LayoutContext.cs b/src/wix/WixToolset.Core/LayoutContext.cs index 4b8c7b99..3def3006 100644 --- a/src/wix/WixToolset.Core/LayoutContext.cs +++ b/src/wix/WixToolset.Core/LayoutContext.cs | |||
@@ -27,11 +27,7 @@ namespace WixToolset.Core | |||
27 | 27 | ||
28 | public string IntermediateFolder { get; set; } | 28 | public string IntermediateFolder { get; set; } |
29 | 29 | ||
30 | public string ContentsFile { get; set; } | 30 | public string TrackingFile { get; set; } |
31 | |||
32 | public string OutputsFile { get; set; } | ||
33 | |||
34 | public string BuiltOutputsFile { get; set; } | ||
35 | 31 | ||
36 | public bool ResetAcls { get; set; } | 32 | public bool ResetAcls { get; set; } |
37 | 33 | ||
diff --git a/src/wix/WixToolset.Core/LayoutCreator.cs b/src/wix/WixToolset.Core/LayoutCreator.cs index 0c5aaf63..7a143680 100644 --- a/src/wix/WixToolset.Core/LayoutCreator.cs +++ b/src/wix/WixToolset.Core/LayoutCreator.cs | |||
@@ -16,6 +16,8 @@ namespace WixToolset.Core | |||
16 | /// </summary> | 16 | /// </summary> |
17 | internal class LayoutCreator : ILayoutCreator | 17 | internal class LayoutCreator : ILayoutCreator |
18 | { | 18 | { |
19 | private const string TrackedLineTypePathSeparator = "\t"; | ||
20 | |||
19 | internal LayoutCreator(IServiceProvider serviceProvider) | 21 | internal LayoutCreator(IServiceProvider serviceProvider) |
20 | { | 22 | { |
21 | this.Messaging = serviceProvider.GetService<IMessaging>(); | 23 | this.Messaging = serviceProvider.GetService<IMessaging>(); |
@@ -51,22 +53,9 @@ namespace WixToolset.Core | |||
51 | } | 53 | } |
52 | finally | 54 | finally |
53 | { | 55 | { |
54 | if (context.TrackedFiles != null) | 56 | if (context.TrackedFiles != null && !String.IsNullOrEmpty(context.TrackingFile)) |
55 | { | 57 | { |
56 | if (!String.IsNullOrEmpty(context.ContentsFile)) | 58 | this.CreateTrackingFile(context.TrackingFile, context.TrackedFiles); |
57 | { | ||
58 | this.CreateContentsFile(context.ContentsFile, context.TrackedFiles); | ||
59 | } | ||
60 | |||
61 | if (!String.IsNullOrEmpty(context.OutputsFile)) | ||
62 | { | ||
63 | this.CreateOutputsFile(context.OutputsFile, context.TrackedFiles); | ||
64 | } | ||
65 | |||
66 | if (!String.IsNullOrEmpty(context.BuiltOutputsFile)) | ||
67 | { | ||
68 | this.CreateBuiltOutputsFile(context.BuiltOutputsFile, context.TrackedFiles); | ||
69 | } | ||
70 | } | 59 | } |
71 | } | 60 | } |
72 | 61 | ||
@@ -78,72 +67,15 @@ namespace WixToolset.Core | |||
78 | } | 67 | } |
79 | 68 | ||
80 | /// <summary> | 69 | /// <summary> |
81 | /// Writes the paths to the content files to a text file. | 70 | /// Writes the paths of the track files to a text file. |
82 | /// </summary> | ||
83 | /// <param name="path">Path to write file.</param> | ||
84 | /// <param name="trackedFiles">Collection of paths to content files that will be written to file.</param> | ||
85 | private void CreateContentsFile(string path, IEnumerable<ITrackedFile> trackedFiles) | ||
86 | { | ||
87 | var uniqueInputFilePaths = new SortedSet<string>(trackedFiles.Where(t => t.Type == TrackedFileType.Input).Select(t => t.Path), StringComparer.OrdinalIgnoreCase); | ||
88 | |||
89 | if (!uniqueInputFilePaths.Any()) | ||
90 | { | ||
91 | return; | ||
92 | } | ||
93 | |||
94 | var directory = Path.GetDirectoryName(path); | ||
95 | Directory.CreateDirectory(directory); | ||
96 | |||
97 | using (var contents = new StreamWriter(path, false)) | ||
98 | { | ||
99 | foreach (var inputPath in uniqueInputFilePaths) | ||
100 | { | ||
101 | contents.WriteLine(inputPath); | ||
102 | } | ||
103 | } | ||
104 | } | ||
105 | |||
106 | /// <summary> | ||
107 | /// Writes the paths to the output files to a text file. | ||
108 | /// </summary> | ||
109 | /// <param name="path">Path to write file.</param> | ||
110 | /// <param name="trackedFiles">Collection of files that were transferred to the output directory.</param> | ||
111 | private void CreateOutputsFile(string path, IEnumerable<ITrackedFile> trackedFiles) | ||
112 | { | ||
113 | var uniqueOutputPaths = new SortedSet<string>(trackedFiles.Where(t => t.Clean).Select(t => t.Path), StringComparer.OrdinalIgnoreCase); | ||
114 | |||
115 | if (!uniqueOutputPaths.Any()) | ||
116 | { | ||
117 | return; | ||
118 | } | ||
119 | |||
120 | var directory = Path.GetDirectoryName(path); | ||
121 | Directory.CreateDirectory(directory); | ||
122 | |||
123 | using (var outputs = new StreamWriter(path, false)) | ||
124 | { | ||
125 | //// Don't list files where the source is the same as the destination since | ||
126 | //// that might be the only place the file exists. The outputs file is often | ||
127 | //// used to delete stuff and losing the original source would be bad. | ||
128 | //var uniqueOutputPaths = new SortedSet<string>(fileTransfers.Where(ft => !ft.Redundant).Select(ft => ft.Destination), StringComparer.OrdinalIgnoreCase); | ||
129 | |||
130 | foreach (var outputPath in uniqueOutputPaths) | ||
131 | { | ||
132 | outputs.WriteLine(outputPath); | ||
133 | } | ||
134 | } | ||
135 | } | ||
136 | |||
137 | /// <summary> | ||
138 | /// Writes the paths to the built output files to a text file. | ||
139 | /// </summary> | 71 | /// </summary> |
140 | /// <param name="path">Path to write file.</param> | 72 | /// <param name="path">Path to write file.</param> |
141 | /// <param name="trackedFiles">Collection of files that were transferred to the output directory.</param> | 73 | /// <param name="trackedFiles">Collection of files that were tracked.</param> |
142 | private void CreateBuiltOutputsFile(string path, IEnumerable<ITrackedFile> trackedFiles) | 74 | private void CreateTrackingFile(string path, IEnumerable<ITrackedFile> trackedFiles) |
143 | { | 75 | { |
144 | var uniqueBuiltPaths = new SortedSet<string>(trackedFiles.Where(t => t.Type == TrackedFileType.Final).Select(t => t.Path), StringComparer.OrdinalIgnoreCase); | 76 | var uniqueTrackingLines = new SortedSet<string>(trackedFiles.Where(t => t.Type != TrackedFileType.Temporary).Select(TrackedFileLine), StringComparer.OrdinalIgnoreCase); |
145 | 77 | ||
146 | if (!uniqueBuiltPaths.Any()) | 78 | if (!uniqueTrackingLines.Any()) |
147 | { | 79 | { |
148 | return; | 80 | return; |
149 | } | 81 | } |
@@ -151,11 +83,11 @@ namespace WixToolset.Core | |||
151 | var directory = Path.GetDirectoryName(path); | 83 | var directory = Path.GetDirectoryName(path); |
152 | Directory.CreateDirectory(directory); | 84 | Directory.CreateDirectory(directory); |
153 | 85 | ||
154 | using (var outputs = new StreamWriter(path, false)) | 86 | using (var stream = new StreamWriter(path, false)) |
155 | { | 87 | { |
156 | foreach (var builtPath in uniqueBuiltPaths) | 88 | foreach (var trackingLine in uniqueTrackingLines) |
157 | { | 89 | { |
158 | outputs.WriteLine(builtPath); | 90 | stream.WriteLine(trackingLine); |
159 | } | 91 | } |
160 | } | 92 | } |
161 | } | 93 | } |
@@ -219,5 +151,10 @@ namespace WixToolset.Core | |||
219 | } | 151 | } |
220 | } | 152 | } |
221 | } | 153 | } |
154 | |||
155 | private static string TrackedFileLine(ITrackedFile trackedFile) | ||
156 | { | ||
157 | return trackedFile.Type + TrackedLineTypePathSeparator + trackedFile.Path; | ||
158 | } | ||
222 | } | 159 | } |
223 | } | 160 | } |
diff --git a/src/wix/WixToolset.Sdk/tools/wix.targets b/src/wix/WixToolset.Sdk/tools/wix.targets index 7497a9f8..0029e217 100644 --- a/src/wix/WixToolset.Sdk/tools/wix.targets +++ b/src/wix/WixToolset.Sdk/tools/wix.targets | |||
@@ -112,18 +112,20 @@ | |||
112 | <PropertyGroup> | 112 | <PropertyGroup> |
113 | <!-- Default pdb output path to the intermediate output directory --> | 113 | <!-- Default pdb output path to the intermediate output directory --> |
114 | <PdbOutputDir Condition=" '$(PdbOutputDir)'=='' ">$(TargetDir)</PdbOutputDir> | 114 | <PdbOutputDir Condition=" '$(PdbOutputDir)'=='' ">$(TargetDir)</PdbOutputDir> |
115 | <PdbOutputDir Condition=" !HasTrailingSlash('$(PdbOutputDir)') ">$(PdbOutputDir)\</PdbOutputDir> | 115 | <TargetPdbDir Condition=" '$(PdbOutputDir)'!='' ">$([MSBuild]::NormalizeDirectory($(MSBuildProjectDirectory), $(PdbOutputDir)))</TargetPdbDir> |
116 | |||
117 | <!-- Example, C:\MyProjects\MyProject\bin\debug\ --> | ||
118 | <TargetPdbDir Condition=" '$(PdbOutputDir)'!='' ">$([System.IO.Path]::GetFullPath(`$([System.IO.Path]::Combine(`$(MSBuildProjectDirectory)`, `$(PdbOutputDir)`))`))</TargetPdbDir> | ||
119 | |||
120 | <!-- Example, MySetup.wixpdb" --> | ||
121 | <TargetPdbFileName Condition=" '$(TargetPdbFileName)' == '' ">$(TargetName).wixpdb</TargetPdbFileName> | 116 | <TargetPdbFileName Condition=" '$(TargetPdbFileName)' == '' ">$(TargetName).wixpdb</TargetPdbFileName> |
122 | |||
123 | <!-- Example, C:\MyProjects\MyProject\bin\debug\MyPackage.wixpdb --> | ||
124 | <TargetPdbPath Condition=" '$(TargetPdbPath)' == '' ">$(TargetPdbDir)$(TargetPdbFileName)</TargetPdbPath> | 117 | <TargetPdbPath Condition=" '$(TargetPdbPath)' == '' ">$(TargetPdbDir)$(TargetPdbFileName)</TargetPdbPath> |
125 | </PropertyGroup> | 118 | </PropertyGroup> |
126 | 119 | ||
120 | <PropertyGroup> | ||
121 | <WixExtDir Condition=" '$(WixExtDir)' == ''">$(WixBinDir)</WixExtDir> | ||
122 | </PropertyGroup> | ||
123 | |||
124 | <PropertyGroup> | ||
125 | <BindTrackingFilePrefix Condition=" '$(BindTrackingFilePrefix)' == '' ">$(MSBuildProjectFile).BindTracking</BindTrackingFilePrefix> | ||
126 | <BindTrackingFileExtension Condition=" '$(BindTrackingFileExtension)' == '' ">.txt</BindTrackingFileExtension> | ||
127 | </PropertyGroup> | ||
128 | |||
127 | <!-- | 129 | <!-- |
128 | *********************************************************************************************** | 130 | *********************************************************************************************** |
129 | *********************************************************************************************** | 131 | *********************************************************************************************** |
@@ -154,24 +156,14 @@ | |||
154 | <UsingTask TaskName="WixAssignCulture" Condition=" '$(WixTasksPath64)' != '' " AssemblyFile="$(WixTasksPath)" Architecture="x86" /> | 156 | <UsingTask TaskName="WixAssignCulture" Condition=" '$(WixTasksPath64)' != '' " AssemblyFile="$(WixTasksPath)" Architecture="x86" /> |
155 | <UsingTask TaskName="WixAssignCulture" Condition=" '$(WixTasksPath64)' != '' " AssemblyFile="$(WixTasksPath64)" Architecture="x64" /> | 157 | <UsingTask TaskName="WixAssignCulture" Condition=" '$(WixTasksPath64)' != '' " AssemblyFile="$(WixTasksPath64)" Architecture="x64" /> |
156 | 158 | ||
159 | <UsingTask TaskName="ReadTracking" Condition=" '$(WixTasksPath64)' == '' " AssemblyFile="$(WixTasksPath)" /> | ||
160 | <UsingTask TaskName="ReadTracking" Condition=" '$(WixTasksPath64)' != '' " AssemblyFile="$(WixTasksPath)" Architecture="x86" /> | ||
161 | <UsingTask TaskName="ReadTracking" Condition=" '$(WixTasksPath64)' != '' " AssemblyFile="$(WixTasksPath64)" Architecture="x64" /> | ||
162 | |||
157 | <UsingTask TaskName="ResolveWixReferences" Condition=" '$(WixTasksPath64)' == '' " AssemblyFile="$(WixTasksPath)" /> | 163 | <UsingTask TaskName="ResolveWixReferences" Condition=" '$(WixTasksPath64)' == '' " AssemblyFile="$(WixTasksPath)" /> |
158 | <UsingTask TaskName="ResolveWixReferences" Condition=" '$(WixTasksPath64)' != '' " AssemblyFile="$(WixTasksPath)" Architecture="x86" /> | 164 | <UsingTask TaskName="ResolveWixReferences" Condition=" '$(WixTasksPath64)' != '' " AssemblyFile="$(WixTasksPath)" Architecture="x86" /> |
159 | <UsingTask TaskName="ResolveWixReferences" Condition=" '$(WixTasksPath64)' != '' " AssemblyFile="$(WixTasksPath64)" Architecture="x64" /> | 165 | <UsingTask TaskName="ResolveWixReferences" Condition=" '$(WixTasksPath64)' != '' " AssemblyFile="$(WixTasksPath64)" Architecture="x64" /> |
160 | 166 | ||
161 | <PropertyGroup> | ||
162 | <BindContentsFile Condition=" '$(BindContentsFile)' == '' ">$(MSBuildProjectFile).BindContentsFileList.txt</BindContentsFile> | ||
163 | <BindOutputsFile Condition=" '$(BindOutputsFile)' == '' ">$(MSBuildProjectFile).BindOutputsFileList.txt</BindOutputsFile> | ||
164 | <BindBuiltOutputsFile Condition=" '$(BindBuiltOutputsFile)' == '' ">$(MSBuildProjectFile).BindBuiltOutputsFileList.txt</BindBuiltOutputsFile> | ||
165 | </PropertyGroup> | ||
166 | |||
167 | <PropertyGroup> | ||
168 | <CabinetCachePath Condition=" '$(CabinetCachePath)'=='' and '$(ReuseCabinetCache)'=='true' ">$(IntermediateOutputPath)cabcache\</CabinetCachePath> | ||
169 | </PropertyGroup> | ||
170 | |||
171 | <PropertyGroup> | ||
172 | <WixExtDir Condition=" '$(WixExtDir)' == ''">$(WixBinDir)</WixExtDir> | ||
173 | </PropertyGroup> | ||
174 | |||
175 | <!-- | 167 | <!-- |
176 | *********************************************************************************************** | 168 | *********************************************************************************************** |
177 | *********************************************************************************************** | 169 | *********************************************************************************************** |
@@ -552,6 +544,9 @@ | |||
552 | <PropertyGroup> | 544 | <PropertyGroup> |
553 | <TargetPath>@(_CulturedTargetPath)</TargetPath> | 545 | <TargetPath>@(_CulturedTargetPath)</TargetPath> |
554 | <TargetPdbPath>@(_CulturedTargetPdbPath)</TargetPdbPath> | 546 | <TargetPdbPath>@(_CulturedTargetPdbPath)</TargetPdbPath> |
547 | |||
548 | <!-- Update bind tracking filename prefix so cultures appended to the filename will be separated by a "-" --> | ||
549 | <BindTrackingFilePrefix>$(BindTrackingFilePrefix)-</BindTrackingFilePrefix> | ||
555 | </PropertyGroup> | 550 | </PropertyGroup> |
556 | </Target> | 551 | </Target> |
557 | 552 | ||
@@ -615,18 +610,17 @@ | |||
615 | Inputs="@(Compile); | 610 | Inputs="@(Compile); |
616 | @(Content); | 611 | @(Content); |
617 | @(_WixLocalizationFile); | 612 | @(_WixLocalizationFile); |
618 | @(WixObject); | ||
619 | @(_WixReferencedProjectOutputs); | 613 | @(_WixReferencedProjectOutputs); |
620 | @(_ResolvedWixLibraryPaths); | 614 | @(_ResolvedWixLibraryPaths); |
621 | @(_ResolvedWixExtensionPaths); | 615 | @(_ResolvedWixExtensionPaths); |
622 | @(_BindInputs)" | 616 | @(_BindInputs)" |
623 | Outputs="$(IntermediateOutputPath)%(CultureGroup.OutputFolder)$(BindBuiltOutputsFile);@(_BindBuiltOutputs)" | 617 | Outputs="$(IntermediateOutputPath)$(BindTrackingFilePrefix)%(CultureGroup.Identity)$(BindTrackingFileExtension);@(_BindBuiltOutputs)" |
624 | DependsOnTargets="$(CoreCompileDependsOn)" | 618 | DependsOnTargets="$(CoreCompileDependsOn)" |
625 | Condition=" '@(Compile)' != '' "> | 619 | Condition=" '@(Compile)' != '' "> |
626 | 620 | ||
627 | <PropertyGroup> | 621 | <PropertyGroup> |
628 | <OutputFile>$([System.IO.Path]::GetFullPath($(IntermediateOutputPath)%(CultureGroup.OutputFolder)$(TargetFileName)))</OutputFile> | 622 | <CabinetCachePath Condition=" '$(CabinetCachePath)'=='' and '$(ReuseCabinetCache)'=='true' ">$(IntermediateOutputPath)cabcache\</CabinetCachePath> |
629 | <PdbOutputFile>$(IntermediateOutputPath)%(CultureGroup.OutputFolder)$(TargetPdbFileName)</PdbOutputFile> | 623 | <_WixBuildCabinetCachePath Condition=" '$(CabinetCachePath)'!='' ">$([MSBuild]::NormalizeDirectory($(CabinetCachePath), %(CultureGroup.OutputFolder)))</_WixBuildCabinetCachePath> |
630 | </PropertyGroup> | 624 | </PropertyGroup> |
631 | 625 | ||
632 | <WixBuild | 626 | <WixBuild |
@@ -641,9 +635,9 @@ | |||
641 | 635 | ||
642 | IntermediateDirectory="$(IntermediateOutputPath)%(CultureGroup.OutputFolder)" | 636 | IntermediateDirectory="$(IntermediateOutputPath)%(CultureGroup.OutputFolder)" |
643 | 637 | ||
644 | OutputFile="$(OutputFile)" | 638 | OutputFile="$(IntermediateOutputPath)%(CultureGroup.OutputFolder)$(TargetFileName)" |
645 | OutputType="$(OutputType)" | 639 | OutputType="$(OutputType)" |
646 | PdbFile="$(PdbOutputFile)" | 640 | PdbFile="$(IntermediateOutputPath)%(CultureGroup.OutputFolder)$(TargetPdbFileName)" |
647 | PdbType="$(WixPdbType)" | 641 | PdbType="$(WixPdbType)" |
648 | 642 | ||
649 | AdditionalOptions="$(CompilerAdditionalOptions) $(LinkerAdditionalOptions)" | 643 | AdditionalOptions="$(CompilerAdditionalOptions) $(LinkerAdditionalOptions)" |
@@ -659,11 +653,9 @@ | |||
659 | 653 | ||
660 | BindInputPaths="@(LinkerBindInputPaths)" | 654 | BindInputPaths="@(LinkerBindInputPaths)" |
661 | BindFiles="$(LinkerBindFiles)" | 655 | BindFiles="$(LinkerBindFiles)" |
662 | BindContentsFile="$(IntermediateOutputPath)%(CultureGroup.OutputFolder)$(BindContentsFile)" | 656 | BindTrackingFile="$(IntermediateOutputPath)$(BindTrackingFilePrefix)%(CultureGroup.Identity)$(BindTrackingFileExtension)" |
663 | BindOutputsFile="$(IntermediateOutputPath)%(CultureGroup.OutputFolder)$(BindOutputsFile)" | ||
664 | BindBuiltOutputsFile="$(IntermediateOutputPath)%(CultureGroup.OutputFolder)$(BindBuiltOutputsFile)" | ||
665 | 657 | ||
666 | CabinetCachePath="$(CabinetCachePath)" | 658 | CabinetCachePath="$(_WixBuildCabinetCachePath)" |
667 | CabinetCreationThreadCount="$(CabinetCreationThreadCount)" | 659 | CabinetCreationThreadCount="$(CabinetCreationThreadCount)" |
668 | DefaultCompressionLevel="$(DefaultCompressionLevel)" | 660 | DefaultCompressionLevel="$(DefaultCompressionLevel)" |
669 | 661 | ||
@@ -754,16 +746,10 @@ | |||
754 | <Target | 746 | <Target |
755 | Name="ReadPreviousBindInputsAndBuiltOutputs"> | 747 | Name="ReadPreviousBindInputsAndBuiltOutputs"> |
756 | 748 | ||
757 | <ReadLinesFromFile File="$(IntermediateOutputPath)%(CultureGroup.OutputFolder)$(BindContentsFile)"> | 749 | <ReadTracking File="$(IntermediateOutputPath)$(BindTrackingFilePrefix)%(CultureGroup.Identity)$(BindTrackingFileExtension)"> |
758 | <Output TaskParameter="Lines" ItemName="_BindInputs" /> | 750 | <Output TaskParameter="Inputs" ItemName="_BindInputs" /> |
759 | </ReadLinesFromFile> | 751 | <Output TaskParameter="BuiltOutputs" ItemName="_BindBuiltOutputs" /> |
760 | 752 | </ReadTracking> | |
761 | <ReadLinesFromFile File="$(IntermediateOutputPath)%(CultureGroup.OutputFolder)$(BindBuiltOutputsFile)"> | ||
762 | <Output TaskParameter="Lines" ItemName="_BindBuiltOutputs" /> | ||
763 | </ReadLinesFromFile> | ||
764 | |||
765 | <Message Importance="low" Text="Previous bind inputs: @(_BindInputs)" /> | ||
766 | <Message Importance="low" Text="Previous bind outputs: @(_BindBuiltOutputs)" /> | ||
767 | </Target> | 753 | </Target> |
768 | 754 | ||
769 | <!-- | 755 | <!-- |
@@ -789,17 +775,13 @@ | |||
789 | Name="UpdateFileWritesWithBindInformation" | 775 | Name="UpdateFileWritesWithBindInformation" |
790 | AfterTargets="CoreCompile"> | 776 | AfterTargets="CoreCompile"> |
791 | 777 | ||
792 | <ReadLinesFromFile File="$(IntermediateOutputPath)%(CultureGroup.OutputFolder)$(BindOutputsFile)"> | 778 | <ReadTracking File="$(IntermediateOutputPath)$(BindTrackingFilePrefix)%(CultureGroup.Identity)$(BindTrackingFileExtension)"> |
793 | <Output TaskParameter="Lines" ItemName="FileWrites"/> | 779 | <Output TaskParameter="Outputs" ItemName="FileWrites" /> |
794 | </ReadLinesFromFile> | 780 | </ReadTracking> |
795 | 781 | ||
796 | <ItemGroup> | 782 | <ItemGroup> |
797 | <FileWrites Include="$(IntermediateOutputPath)%(CultureGroup.OutputFolder)$(BindContentsFile)" Condition=" Exists('$(IntermediateOutputPath)%(CultureGroup.OutputFolder)$(BindContentsFile)') " /> | 783 | <FileWrites Include="$(IntermediateOutputPath)$(BindTrackingFilePrefix)%(CultureGroup.Identity)$(BindTrackingFileExtension)" Condition=" Exists('$(IntermediateOutputPath)$(BindTrackingFilePrefix)%(CultureGroup.Identity)$(BindTrackingFileExtension)') " /> |
798 | <FileWrites Include="$(IntermediateOutputPath)%(CultureGroup.OutputFolder)$(BindOutputsFile)" Condition=" Exists('$(IntermediateOutputPath)%(CultureGroup.OutputFolder)$(BindOutputsFile)') " /> | ||
799 | <FileWrites Include="$(IntermediateOutputPath)%(CultureGroup.OutputFolder)$(BindBuiltOutputsFile)" Condition=" Exists('$(IntermediateOutputPath)%(CultureGroup.OutputFolder)$(BindBuiltOutputsFile)') " /> | ||
800 | </ItemGroup> | 784 | </ItemGroup> |
801 | |||
802 | <Message Importance="low" Text="Build files after link: @(FileWrites)" /> | ||
803 | </Target> | 785 | </Target> |
804 | 786 | ||
805 | <!-- | 787 | <!-- |
@@ -862,10 +844,10 @@ | |||
862 | 844 | ||
863 | <!-- Don't add BuiltProjectOutputGroupKeyOutput - to avoid duplicates, we only want to get the updated list of TargetPaths from the TargetPath property below --> | 845 | <!-- Don't add BuiltProjectOutputGroupKeyOutput - to avoid duplicates, we only want to get the updated list of TargetPaths from the TargetPath property below --> |
864 | 846 | ||
865 | <!-- Try to read the outputs from the bind outputs text file since that's the output list straight from compiler. --> | 847 | <!-- Try to read the outputs from the bind tracking text file since that's the output list straight from compiler. --> |
866 | <ReadLinesFromFile File="$(IntermediateOutputPath)%(CultureGroup.OutputFolder)$(BindBuiltOutputsFile)"> | 848 | <ReadTracking File="$(IntermediateOutputPath)$(BindTrackingFilePrefix)%(CultureGroup.Identity)$(BindTrackingFileExtension)"> |
867 | <Output TaskParameter="Lines" ItemName="_BuiltProjectOutputGroupOutputIntermediate"/> | 849 | <Output TaskParameter="Outputs" ItemName="_BuiltProjectOutputGroupOutputIntermediate" /> |
868 | </ReadLinesFromFile> | 850 | </ReadTracking> |
869 | 851 | ||
870 | <!-- If we didn't get anything from the bind outputs text file, default to the target path. --> | 852 | <!-- If we didn't get anything from the bind outputs text file, default to the target path. --> |
871 | <ItemGroup Condition=" '@(_BuiltProjectOutputGroupOutputIntermediate)'=='' "> | 853 | <ItemGroup Condition=" '@(_BuiltProjectOutputGroupOutputIntermediate)'=='' "> |
@@ -930,17 +912,17 @@ | |||
930 | <PropertyGroup> | 912 | <PropertyGroup> |
931 | <CopyBuildOutputToOutputDirectory Condition="'$(CopyBuildOutputToOutputDirectory)'==''">true</CopyBuildOutputToOutputDirectory> | 913 | <CopyBuildOutputToOutputDirectory Condition="'$(CopyBuildOutputToOutputDirectory)'==''">true</CopyBuildOutputToOutputDirectory> |
932 | <CopyOutputSymbolsToOutputDirectory Condition="'$(CopyOutputSymbolsToOutputDirectory)'==''">true</CopyOutputSymbolsToOutputDirectory> | 914 | <CopyOutputSymbolsToOutputDirectory Condition="'$(CopyOutputSymbolsToOutputDirectory)'==''">true</CopyOutputSymbolsToOutputDirectory> |
933 | <FullIntermediateOutputPath>$([System.IO.Path]::GetFullPath($(IntermediateOutputPath)))</FullIntermediateOutputPath> | 915 | <FullIntermediateOutputPath>$([MSBuild]::NormalizeDirectory($(IntermediateOutputPath)))</FullIntermediateOutputPath> |
934 | </PropertyGroup> | 916 | </PropertyGroup> |
935 | 917 | ||
936 | <!-- Copy the bound files. --> | 918 | <!-- Copy the bound output files. --> |
937 | <ReadLinesFromFile File="$(IntermediateOutputPath)%(CultureGroup.OutputFolder)$(BindBuiltOutputsFile)"> | 919 | <ReadTracking File="$(IntermediateOutputPath)$(BindTrackingFilePrefix)%(CultureGroup.Identity)$(BindTrackingFileExtension)"> |
938 | <Output TaskParameter="Lines" ItemName="_FullPathToCopy"/> | 920 | <Output TaskParameter="Outputs" ItemName="_FullPathToCopy" /> |
939 | </ReadLinesFromFile> | 921 | </ReadTracking> |
940 | 922 | ||
941 | <ItemGroup> | 923 | <ItemGroup> |
942 | <_FullPathToCopy Include="$(OutputFile)" Condition=" '@(_FullPathToCopy)'=='' " /> | 924 | <_FullPathToCopy Include="$(IntermediateOutputPath)%(CultureGroup.OutputFolder)$(TargetFileName)" Condition=" '@(_FullPathToCopy)'=='' " /> |
943 | <_RelativePath Include="$([MSBuild]::MakeRelative($(FullIntermediateOutputPath), %(_FullPathToCopy.Identity)))" /> | 925 | <_RelativePath Include="$([MSBuild]::MakeRelative($(FullIntermediateOutputPath), %(_FullPathToCopy.FullPath)))" /> |
944 | </ItemGroup> | 926 | </ItemGroup> |
945 | 927 | ||
946 | <Copy | 928 | <Copy |
diff --git a/src/wix/test/WixToolsetTest.Sdk/WixToolsetTest.Sdk.csproj b/src/wix/test/WixToolsetTest.Sdk/WixToolsetTest.Sdk.csproj index 8f40efee..6111a184 100644 --- a/src/wix/test/WixToolsetTest.Sdk/WixToolsetTest.Sdk.csproj +++ b/src/wix/test/WixToolsetTest.Sdk/WixToolsetTest.Sdk.csproj | |||
@@ -19,8 +19,7 @@ | |||
19 | </ItemGroup> | 19 | </ItemGroup> |
20 | 20 | ||
21 | <ItemGroup> | 21 | <ItemGroup> |
22 | <!-- <PackageReference Include="WixBuildTools.TestSupport" /> --> | 22 | <PackageReference Include="WixBuildTools.TestSupport" /> |
23 | <ProjectReference Include="..\..\..\internal\WixBuildTools.TestSupport\WixBuildTools.TestSupport.csproj" /> | ||
24 | </ItemGroup> | 23 | </ItemGroup> |
25 | 24 | ||
26 | <ItemGroup> | 25 | <ItemGroup> |