aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/api/wix/WixToolset.Extensibility/Data/TrackedFileType.cs16
-rw-r--r--src/ext/Bal/bal.cmd2
-rw-r--r--src/wix/WixToolset.BuildTasks/ReadTracking.cs30
-rw-r--r--src/wix/WixToolset.Core.Burn/Bind/BindBundleCommand.cs4
-rw-r--r--src/wix/WixToolset.Core.Burn/Bundles/CreateNonUXContainers.cs2
-rw-r--r--src/wix/WixToolset.Core.WindowsInstaller/Bind/BindDatabaseCommand.cs4
-rw-r--r--src/wix/WixToolset.Core.WindowsInstaller/Bind/CreateCabinetsCommand.cs4
-rw-r--r--src/wix/WixToolset.Core.WindowsInstaller/Bind/ProcessUncompressedFilesCommand.cs8
-rw-r--r--src/wix/WixToolset.Core/ExtensibilityServices/TrackedFile.cs2
-rw-r--r--src/wix/WixToolset.Sdk/tools/wix.targets32
-rw-r--r--src/wix/test/WixToolsetTest.CoreIntegration/BundleFixture.cs8
-rw-r--r--src/wix/test/WixToolsetTest.CoreIntegration/SigningFixture.cs2
-rw-r--r--src/wix/test/WixToolsetTest.Sdk/MsbuildFixture.cs114
-rw-r--r--src/wix/test/WixToolsetTest.Sdk/TestData/Wixlib/PackageIncludesWixlib/Package.wxs9
-rw-r--r--src/wix/test/WixToolsetTest.Sdk/TestData/Wixlib/PackageIncludesWixlib/PackageIncludesWixlib.wixproj44
-rw-r--r--src/wix/test/WixToolsetTest.Sdk/TestData/Wixlib/SimpleWixlib/Library.wxs15
-rw-r--r--src/wix/test/WixToolsetTest.Sdk/TestData/Wixlib/SimpleWixlib/SimpleWixlib.wixproj43
-rw-r--r--src/wix/test/WixToolsetTest.Sdk/TestData/Wixlib/SimpleWixlib/data/Library.txt1
18 files changed, 303 insertions, 37 deletions
diff --git a/src/api/wix/WixToolset.Extensibility/Data/TrackedFileType.cs b/src/api/wix/WixToolset.Extensibility/Data/TrackedFileType.cs
index 904a990f..40abd590 100644
--- a/src/api/wix/WixToolset.Extensibility/Data/TrackedFileType.cs
+++ b/src/api/wix/WixToolset.Extensibility/Data/TrackedFileType.cs
@@ -25,10 +25,22 @@ namespace WixToolset.Extensibility.Data
25 Intermediate, 25 Intermediate,
26 26
27 /// <summary> 27 /// <summary>
28 /// Output created by the build process itself (like a .msi, .cab or .wixpdb). 28 /// Output created by the build process itself (like a .cab).
29 /// These files can be recreated in the final output location by building again. 29 /// These files can be recreated in the final output location by building again.
30 /// </summary> 30 /// </summary>
31 BuiltOutput, 31 BuiltContentOutput,
32
33 /// <summary>
34 /// Target output created by the build process itself (like a .msi, .msm, .wixlib, .exe).
35 /// These files can be recreated in the final output location by building again.
36 /// </summary>
37 BuiltTargetOutput,
38
39 /// <summary>
40 /// Output pdb created by the build process itself (like a .wixpdb).
41 /// These files can be recreated in the final output location by building again.
42 /// </summary>
43 BuiltPdbOutput,
32 44
33 /// <summary> 45 /// <summary>
34 /// Output copied by the build process (like external files in an .msi). 46 /// Output copied by the build process (like external files in an .msi).
diff --git a/src/ext/Bal/bal.cmd b/src/ext/Bal/bal.cmd
index 060f8ee0..8d573941 100644
--- a/src/ext/Bal/bal.cmd
+++ b/src/ext/Bal/bal.cmd
@@ -18,7 +18,7 @@ msbuild -p:Configuration=%_C%;Platform=x86 test\examples\TestEngine\Example.Test
18msbuild -p:Configuration=%_C%;Platform=x64 test\examples\TestEngine\Example.TestEngine.vcxproj || exit /b 18msbuild -p:Configuration=%_C%;Platform=x64 test\examples\TestEngine\Example.TestEngine.vcxproj || exit /b
19msbuild -p:Configuration=%_C%;Platform=ARM64 test\examples\TestEngine\Example.TestEngine.vcxproj || exit /b 19msbuild -p:Configuration=%_C%;Platform=ARM64 test\examples\TestEngine\Example.TestEngine.vcxproj || exit /b
20 20
21msbuild -p:Configuration=%_C% || exit /b 21msbuild -p:Configuration=%_C% -bl:%_L%\bal_build.binlog || exit /b
22 22
23dotnet test test\WixToolsetTest.Dnc.HostGenerator -c %_C% --nologo --no-build -l "trx;LogFileName=%_L%\TestResults\WixToolsetTest.Dnc.HostGenerator.trx" || exit /b 23dotnet test test\WixToolsetTest.Dnc.HostGenerator -c %_C% --nologo --no-build -l "trx;LogFileName=%_L%\TestResults\WixToolsetTest.Dnc.HostGenerator.trx" || exit /b
24 24
diff --git a/src/wix/WixToolset.BuildTasks/ReadTracking.cs b/src/wix/WixToolset.BuildTasks/ReadTracking.cs
index 1ce039f6..f92baaf1 100644
--- a/src/wix/WixToolset.BuildTasks/ReadTracking.cs
+++ b/src/wix/WixToolset.BuildTasks/ReadTracking.cs
@@ -29,12 +29,30 @@ namespace WixToolset.BuildTasks
29 public ITaskItem[] All { get; private set; } 29 public ITaskItem[] All { get; private set; }
30 30
31 /// <summary> 31 /// <summary>
32 /// The tracked built outputs. 32 /// The union of tracked built outputs.
33 /// </summary> 33 /// </summary>
34 [Output] 34 [Output]
35 public ITaskItem[] BuiltOutputs { get; private set; } 35 public ITaskItem[] BuiltOutputs { get; private set; }
36 36
37 /// <summary> 37 /// <summary>
38 /// The tracked content built outputs.
39 /// </summary>
40 [Output]
41 public ITaskItem[] BuiltContentOutputs { get; private set; }
42
43 /// <summary>
44 /// The tracked target built outputs.
45 /// </summary>
46 [Output]
47 public ITaskItem[] BuiltTargetOutputs { get; private set; }
48
49 /// <summary>
50 /// The tracked pdb built outputs.
51 /// </summary>
52 [Output]
53 public ITaskItem[] BuiltPdbOutputs { get; private set; }
54
55 /// <summary>
38 /// The tracked copied outputs. 56 /// The tracked copied outputs.
39 /// </summary> 57 /// </summary>
40 [Output] 58 [Output]
@@ -47,7 +65,7 @@ namespace WixToolset.BuildTasks
47 public ITaskItem[] Inputs { get; private set; } 65 public ITaskItem[] Inputs { get; private set; }
48 66
49 /// <summary> 67 /// <summary>
50 /// All tracked outputs. 68 /// The union of all tracked outputs.
51 /// </summary> 69 /// </summary>
52 [Output] 70 [Output]
53 public ITaskItem[] Outputs { get; private set; } 71 public ITaskItem[] Outputs { get; private set; }
@@ -81,10 +99,14 @@ namespace WixToolset.BuildTasks
81 } 99 }
82 100
83 this.All = all.ToArray(); 101 this.All = all.ToArray();
84 this.BuiltOutputs = all.Where(t => FilterByTrackedType(t, "BuiltOutput")).ToArray(); 102 this.BuiltContentOutputs = all.Where(t => FilterByTrackedType(t, "BuiltContentOutput")).ToArray();
103 this.BuiltTargetOutputs = all.Where(t => FilterByTrackedType(t, "BuiltTargetOutput")).ToArray();
104 this.BuiltPdbOutputs = all.Where(t => FilterByTrackedType(t, "BuiltPdbOutput")).ToArray();
85 this.CopiedOutputs = all.Where(t => FilterByTrackedType(t, "CopiedOutput")).ToArray(); 105 this.CopiedOutputs = all.Where(t => FilterByTrackedType(t, "CopiedOutput")).ToArray();
86 this.Inputs = all.Where(t => FilterByTrackedType(t, "Input")).ToArray(); 106 this.Inputs = all.Where(t => FilterByTrackedType(t, "Input")).ToArray();
87 this.Outputs = all.Where(t => FilterByTrackedType(t, "BuiltOutput") || FilterByTrackedType(t, "CopiedOutput")).ToArray(); 107
108 this.BuiltOutputs = this.BuiltContentOutputs.Concat(this.BuiltTargetOutputs).Concat(this.BuiltPdbOutputs).ToArray();
109 this.Outputs = this.BuiltOutputs.Concat(this.CopiedOutputs).ToArray();
88 110
89 return true; 111 return true;
90 } 112 }
diff --git a/src/wix/WixToolset.Core.Burn/Bind/BindBundleCommand.cs b/src/wix/WixToolset.Core.Burn/Bind/BindBundleCommand.cs
index 75a080a8..cd0590d0 100644
--- a/src/wix/WixToolset.Core.Burn/Bind/BindBundleCommand.cs
+++ b/src/wix/WixToolset.Core.Burn/Bind/BindBundleCommand.cs
@@ -505,7 +505,7 @@ namespace WixToolset.Core.Burn
505 command.Execute(); 505 command.Execute();
506 506
507 fileTransfers.Add(command.Transfer); 507 fileTransfers.Add(command.Transfer);
508 trackedFiles.Add(this.BackendHelper.TrackFile(this.OutputPath, TrackedFileType.BuiltOutput)); 508 trackedFiles.Add(this.BackendHelper.TrackFile(this.OutputPath, TrackedFileType.BuiltTargetOutput));
509 } 509 }
510 510
511#if TODO // does this need to come back, or do they only need to be in TrackedFiles? 511#if TODO // does this need to come back, or do they only need to be in TrackedFiles?
@@ -577,7 +577,7 @@ namespace WixToolset.Core.Burn
577 } 577 }
578 else 578 else
579 { 579 {
580 var trackPdb = this.BackendHelper.TrackFile(this.OutputPdbPath, TrackedFileType.BuiltOutput); 580 var trackPdb = this.BackendHelper.TrackFile(this.OutputPdbPath, TrackedFileType.BuiltPdbOutput);
581 trackedFiles.Add(trackPdb); 581 trackedFiles.Add(trackPdb);
582 582
583 wixout = WixOutput.Create(trackPdb.Path); 583 wixout = WixOutput.Create(trackPdb.Path);
diff --git a/src/wix/WixToolset.Core.Burn/Bundles/CreateNonUXContainers.cs b/src/wix/WixToolset.Core.Burn/Bundles/CreateNonUXContainers.cs
index e606fe59..2df07dd6 100644
--- a/src/wix/WixToolset.Core.Burn/Bundles/CreateNonUXContainers.cs
+++ b/src/wix/WixToolset.Core.Burn/Bundles/CreateNonUXContainers.cs
@@ -108,7 +108,7 @@ namespace WixToolset.Core.Burn.Bundles
108 var transfer = this.BackendHelper.CreateFileTransfer(container.WorkingPath, outputPath, true, container.SourceLineNumbers); 108 var transfer = this.BackendHelper.CreateFileTransfer(container.WorkingPath, outputPath, true, container.SourceLineNumbers);
109 fileTransfers.Add(transfer); 109 fileTransfers.Add(transfer);
110 110
111 trackedFiles.Add(this.BackendHelper.TrackFile(outputPath, TrackedFileType.BuiltOutput, container.SourceLineNumbers)); 111 trackedFiles.Add(this.BackendHelper.TrackFile(outputPath, TrackedFileType.BuiltContentOutput, container.SourceLineNumbers));
112 } 112 }
113 else // update the attached container index. 113 else // update the attached container index.
114 { 114 {
diff --git a/src/wix/WixToolset.Core.WindowsInstaller/Bind/BindDatabaseCommand.cs b/src/wix/WixToolset.Core.WindowsInstaller/Bind/BindDatabaseCommand.cs
index ef8dec38..b849aea5 100644
--- a/src/wix/WixToolset.Core.WindowsInstaller/Bind/BindDatabaseCommand.cs
+++ b/src/wix/WixToolset.Core.WindowsInstaller/Bind/BindDatabaseCommand.cs
@@ -471,7 +471,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
471 { 471 {
472 this.Messaging.Write(VerboseMessages.GeneratingDatabase()); 472 this.Messaging.Write(VerboseMessages.GeneratingDatabase());
473 473
474 var trackMsi = this.WindowsInstallerBackendHelper.TrackFile(this.OutputPath, TrackedFileType.BuiltOutput); 474 var trackMsi = this.WindowsInstallerBackendHelper.TrackFile(this.OutputPath, TrackedFileType.BuiltTargetOutput);
475 trackedFiles.Add(trackMsi); 475 trackedFiles.Add(trackMsi);
476 476
477 var command = new GenerateDatabaseCommand(this.Messaging, this.WindowsInstallerBackendHelper, this.FileSystemManager, data, trackMsi.Path, tableDefinitions, this.IntermediateFolder, keepAddedColumns: false, this.SuppressAddingValidationRows, useSubdirectory: false); 477 var command = new GenerateDatabaseCommand(this.Messaging, this.WindowsInstallerBackendHelper, this.FileSystemManager, data, trackMsi.Path, tableDefinitions, this.IntermediateFolder, keepAddedColumns: false, this.SuppressAddingValidationRows, useSubdirectory: false);
@@ -601,7 +601,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
601 } 601 }
602 else 602 else
603 { 603 {
604 var trackPdb = this.WindowsInstallerBackendHelper.TrackFile(this.OutputPdbPath, TrackedFileType.BuiltOutput); 604 var trackPdb = this.WindowsInstallerBackendHelper.TrackFile(this.OutputPdbPath, TrackedFileType.BuiltPdbOutput);
605 trackedFiles.Add(trackPdb); 605 trackedFiles.Add(trackPdb);
606 606
607 wixout = WixOutput.Create(trackPdb.Path); 607 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 31198837..6ed107d5 100644
--- a/src/wix/WixToolset.Core.WindowsInstaller/Bind/CreateCabinetsCommand.cs
+++ b/src/wix/WixToolset.Core.WindowsInstaller/Bind/CreateCabinetsCommand.cs
@@ -206,7 +206,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
206 } 206 }
207 else 207 else
208 { 208 {
209 var trackDestination = this.BackendHelper.TrackFile(Path.Combine(cabinetDir, mediaSymbol.Cabinet), TrackedFileType.BuiltOutput, mediaSymbol.SourceLineNumbers); 209 var trackDestination = this.BackendHelper.TrackFile(Path.Combine(cabinetDir, mediaSymbol.Cabinet), TrackedFileType.BuiltContentOutput, mediaSymbol.SourceLineNumbers);
210 this.trackedFiles.Add(trackDestination); 210 this.trackedFiles.Add(trackDestination);
211 211
212 var transfer = this.BackendHelper.CreateFileTransfer(resolvedCabinet.Path, trackDestination.Path, resolvedCabinet.BuildOption == CabinetBuildOption.BuildAndMove, mediaSymbol.SourceLineNumbers); 212 var transfer = this.BackendHelper.CreateFileTransfer(resolvedCabinet.Path, trackDestination.Path, resolvedCabinet.BuildOption == CabinetBuildOption.BuildAndMove, mediaSymbol.SourceLineNumbers);
@@ -314,7 +314,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
314 var trackSource = this.BackendHelper.TrackFile(spannedCabinetSourcePath, TrackedFileType.Intermediate, transfer.SourceLineNumbers); 314 var trackSource = this.BackendHelper.TrackFile(spannedCabinetSourcePath, TrackedFileType.Intermediate, transfer.SourceLineNumbers);
315 this.trackedFiles.Add(trackSource); 315 this.trackedFiles.Add(trackSource);
316 316
317 var trackTarget = this.BackendHelper.TrackFile(spannedCabinetTargetPath, TrackedFileType.BuiltOutput, transfer.SourceLineNumbers); 317 var trackTarget = this.BackendHelper.TrackFile(spannedCabinetTargetPath, TrackedFileType.BuiltContentOutput, transfer.SourceLineNumbers);
318 this.trackedFiles.Add(trackTarget); 318 this.trackedFiles.Add(trackTarget);
319 319
320 var newTransfer = this.BackendHelper.CreateFileTransfer(trackSource.Path, trackTarget.Path, transfer.Move, transfer.SourceLineNumbers); 320 var newTransfer = this.BackendHelper.CreateFileTransfer(trackSource.Path, trackTarget.Path, transfer.Move, transfer.SourceLineNumbers);
diff --git a/src/wix/WixToolset.Core.WindowsInstaller/Bind/ProcessUncompressedFilesCommand.cs b/src/wix/WixToolset.Core.WindowsInstaller/Bind/ProcessUncompressedFilesCommand.cs
index 6662f8f7..26b69afb 100644
--- a/src/wix/WixToolset.Core.WindowsInstaller/Bind/ProcessUncompressedFilesCommand.cs
+++ b/src/wix/WixToolset.Core.WindowsInstaller/Bind/ProcessUncompressedFilesCommand.cs
@@ -112,12 +112,8 @@ namespace WixToolset.Core.WindowsInstaller.Bind
112 var transfer = this.BackendHelper.CreateFileTransfer(facade.SourcePath, fileLayoutPath, false, facade.SourceLineNumber); 112 var transfer = this.BackendHelper.CreateFileTransfer(facade.SourcePath, fileLayoutPath, false, facade.SourceLineNumber);
113 fileTransfers.Add(transfer); 113 fileTransfers.Add(transfer);
114 114
115 // Track the location where the cabinet will be placed. If the transfer is 115 var tracked = this.BackendHelper.TrackFile(transfer.Destination, TrackedFileType.CopiedOutput, facade.SourceLineNumber);
116 // redundant then then the file should not be cleaned. This is important 116
117 // because if the source and destination of the transfer is the same, we
118 // don't want to clean the file because we'd be deleting the original
119 // (and that would be bad).
120 var tracked = this.BackendHelper.TrackFile(transfer.Destination, TrackedFileType.BuiltOutput, facade.SourceLineNumber);
121 tracked.Clean = !transfer.Redundant; 117 tracked.Clean = !transfer.Redundant;
122 118
123 trackedFiles.Add(tracked); 119 trackedFiles.Add(tracked);
diff --git a/src/wix/WixToolset.Core/ExtensibilityServices/TrackedFile.cs b/src/wix/WixToolset.Core/ExtensibilityServices/TrackedFile.cs
index 570fb029..c9966bce 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.BuiltOutput || type == TrackedFileType.CopiedOutput); 15 this.Clean = (type == TrackedFileType.Intermediate || type == TrackedFileType.BuiltContentOutput || type == TrackedFileType.BuiltTargetOutput || type == TrackedFileType.BuiltPdbOutput || 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.Sdk/tools/wix.targets b/src/wix/WixToolset.Sdk/tools/wix.targets
index 521b2d17..ccc7eab9 100644
--- a/src/wix/WixToolset.Sdk/tools/wix.targets
+++ b/src/wix/WixToolset.Sdk/tools/wix.targets
@@ -71,7 +71,8 @@
71 <!-- Default OutputType to a known WiX Toolset type. --> 71 <!-- Default OutputType to a known WiX Toolset type. -->
72 <OutputType Condition=" '$(OutputType)' == '' ">Package</OutputType> 72 <OutputType Condition=" '$(OutputType)' == '' ">Package</OutputType>
73 73
74 <WixPdbType Condition=" '$(WixPdbType)' == '' ">full</WixPdbType> 74 <DebugType Condition=" '$(SuppressPdbOutput)' == 'true' ">none</DebugType>
75 <DebugType Condition=" '$(DebugType)' == '' ">full</DebugType>
75 </PropertyGroup> 76 </PropertyGroup>
76 77
77 <PropertyGroup> 78 <PropertyGroup>
@@ -114,6 +115,13 @@
114 </PropertyGroup> 115 </PropertyGroup>
115 116
116 <PropertyGroup> 117 <PropertyGroup>
118 <!--
119 Only Package, Module and Bundle output types create .wixpdbs, so reset the flag indicating symbols will be produced outside of those output types.
120 -->
121 <_DebugSymbolsProduced Condition=" '$(OutputType)' != 'Package' and '$(OutputType)' != 'Module' and '$(OutputType)' != 'Bundle' ">false</_DebugSymbolsProduced>
122 </PropertyGroup>
123
124 <PropertyGroup>
117 <!-- Default pdb output path to the intermediate output directory --> 125 <!-- Default pdb output path to the intermediate output directory -->
118 <PdbOutputDir Condition=" '$(PdbOutputDir)'=='' ">$(TargetDir)</PdbOutputDir> 126 <PdbOutputDir Condition=" '$(PdbOutputDir)'=='' ">$(TargetDir)</PdbOutputDir>
119 <TargetPdbDir Condition=" '$(PdbOutputDir)'!='' ">$([MSBuild]::NormalizeDirectory($(MSBuildProjectDirectory), $(PdbOutputDir)))</TargetPdbDir> 127 <TargetPdbDir Condition=" '$(PdbOutputDir)'!='' ">$([MSBuild]::NormalizeDirectory($(MSBuildProjectDirectory), $(PdbOutputDir)))</TargetPdbDir>
@@ -625,7 +633,7 @@
625 OutputFile="$(IntermediateOutputPath)%(CultureGroup.OutputFolder)$(TargetFileName)" 633 OutputFile="$(IntermediateOutputPath)%(CultureGroup.OutputFolder)$(TargetFileName)"
626 OutputType="$(OutputType)" 634 OutputType="$(OutputType)"
627 PdbFile="$(IntermediateOutputPath)%(CultureGroup.OutputFolder)$(TargetPdbFileName)" 635 PdbFile="$(IntermediateOutputPath)%(CultureGroup.OutputFolder)$(TargetPdbFileName)"
628 PdbType="$(WixPdbType)" 636 PdbType="$(DebugType)"
629 637
630 AdditionalOptions="$(CompilerAdditionalOptions) $(LinkerAdditionalOptions)" 638 AdditionalOptions="$(CompilerAdditionalOptions) $(LinkerAdditionalOptions)"
631 DefineConstants="$(DefineConstants);$(SolutionDefineConstants);$(ProjectDefineConstants);$(ProjectReferenceDefineConstants)" 639 DefineConstants="$(DefineConstants);$(SolutionDefineConstants);$(ProjectDefineConstants);$(ProjectReferenceDefineConstants)"
@@ -887,7 +895,7 @@
887 895
888 <!-- Include build output pdb(s). Different than predefined itemgroup since AssignTargetPaths target may change --> 896 <!-- Include build output pdb(s). Different than predefined itemgroup since AssignTargetPaths target may change -->
889 <ItemGroup> 897 <ItemGroup>
890 <DebugSymbolsProjectOutputGroupOutput Include="$(TargetPdbPath)" Condition=" '$(SuppressPdbOutput)' != 'true' "/> 898 <DebugSymbolsProjectOutputGroupOutput Include="$(TargetPdbPath)" Condition=" '$(DebugType)' != 'none' "/>
891 </ItemGroup> 899 </ItemGroup>
892 </Target> 900 </Target>
893 901
@@ -922,13 +930,18 @@
922 <FullIntermediateOutputPath>$([MSBuild]::NormalizeDirectory($(IntermediateOutputPath)))</FullIntermediateOutputPath> 930 <FullIntermediateOutputPath>$([MSBuild]::NormalizeDirectory($(IntermediateOutputPath)))</FullIntermediateOutputPath>
923 </PropertyGroup> 931 </PropertyGroup>
924 932
925 <!-- Copy the bound output files. --> 933 <!-- Add the target output to the list to be copied. -->
934 <ItemGroup>
935 <_FullPathToCopy Include="$(IntermediateOutputPath)%(CultureGroup.OutputFolder)$(TargetFileName)" />
936 </ItemGroup>
937
938 <!-- Add the bound content output files to the list to be copied. -->
926 <ReadTracking File="$(IntermediateOutputPath)$(BindTrackingFilePrefix)%(CultureGroup.Identity)$(BindTrackingFileExtension)"> 939 <ReadTracking File="$(IntermediateOutputPath)$(BindTrackingFilePrefix)%(CultureGroup.Identity)$(BindTrackingFileExtension)">
927 <Output TaskParameter="Outputs" ItemName="_FullPathToCopy" /> 940 <Output TaskParameter="BuiltContentOutputs" ItemName="_FullPathToCopy" />
941 <Output TaskParameter="CopiedOutputs" ItemName="_FullPathToCopy" />
928 </ReadTracking> 942 </ReadTracking>
929 943
930 <ItemGroup> 944 <ItemGroup>
931 <_FullPathToCopy Include="$(IntermediateOutputPath)%(CultureGroup.OutputFolder)$(TargetFileName)" Condition=" '@(_FullPathToCopy)'=='' " />
932 <_RelativePath Include="$([MSBuild]::MakeRelative($(FullIntermediateOutputPath), %(_FullPathToCopy.FullPath)))" /> 945 <_RelativePath Include="$([MSBuild]::MakeRelative($(FullIntermediateOutputPath), %(_FullPathToCopy.FullPath)))" />
933 </ItemGroup> 946 </ItemGroup>
934 947
@@ -950,10 +963,10 @@
950 963
951 <Message Importance="High" Text="$(MSBuildProjectName) -&gt; $(TargetPath)" Condition="'$(CopyBuildOutputToOutputDirectory)' == 'true' and '$(SkipCopyBuildProduct)'!='true'" /> 964 <Message Importance="High" Text="$(MSBuildProjectName) -&gt; $(TargetPath)" Condition="'$(CopyBuildOutputToOutputDirectory)' == 'true' and '$(SkipCopyBuildProduct)'!='true'" />
952 965
953 <!-- Copy the debug information file (.pdb), if any 966 <!-- Copy the debug information file (.wixpdb), if any -->
954 <Copy 967 <Copy
955 SourceFiles="@(_DebugSymbolsIntermediatePath)" 968 SourceFiles="$(IntermediateOutputPath)%(CultureGroup.OutputFolder)$(TargetPdbFileName)"
956 DestinationFiles="@(_DebugSymbolsOutputPath)" 969 DestinationFiles="$(TargetPdbDir)%(CultureGroup.OutputFolder)$(TargetPdbFileName)"
957 SkipUnchangedFiles="$(SkipCopyUnchangedFiles)" 970 SkipUnchangedFiles="$(SkipCopyUnchangedFiles)"
958 OverwriteReadOnlyFiles="$(OverwriteReadOnlyFiles)" 971 OverwriteReadOnlyFiles="$(OverwriteReadOnlyFiles)"
959 Retries="$(CopyRetryCount)" 972 Retries="$(CopyRetryCount)"
@@ -964,7 +977,6 @@
964 <Output TaskParameter="DestinationFiles" ItemName="FileWrites"/> 977 <Output TaskParameter="DestinationFiles" ItemName="FileWrites"/>
965 978
966 </Copy> 979 </Copy>
967 -->
968 </Target> 980 </Target>
969 981
970 <Import Project="$(WixSigningTargetsPath)" /> 982 <Import Project="$(WixSigningTargetsPath)" />
diff --git a/src/wix/test/WixToolsetTest.CoreIntegration/BundleFixture.cs b/src/wix/test/WixToolsetTest.CoreIntegration/BundleFixture.cs
index 8b65e4aa..a5232f83 100644
--- a/src/wix/test/WixToolsetTest.CoreIntegration/BundleFixture.cs
+++ b/src/wix/test/WixToolsetTest.CoreIntegration/BundleFixture.cs
@@ -497,11 +497,13 @@ namespace WixToolsetTest.CoreIntegration
497 Assert.True(File.Exists(exePath)); 497 Assert.True(File.Exists(exePath));
498 Assert.True(File.Exists(Path.Combine(Path.GetDirectoryName(exePath), "test.txt"))); 498 Assert.True(File.Exists(Path.Combine(Path.GetDirectoryName(exePath), "test.txt")));
499 499
500 var trackedLines = File.ReadAllLines(trackingFile).Select(s => s.Replace(baseFolder, null, StringComparison.OrdinalIgnoreCase).Replace(folder, null, StringComparison.OrdinalIgnoreCase)).ToArray(); 500 var trackedLines = File.ReadAllLines(trackingFile).Select(s => s.Replace(baseFolder, null, StringComparison.OrdinalIgnoreCase).Replace(folder, null, StringComparison.OrdinalIgnoreCase))
501 .OrderBy(s => s)
502 .ToArray();
501 WixAssert.CompareLineByLine(new[] 503 WixAssert.CompareLineByLine(new[]
502 { 504 {
503 "BuiltOutput\tbin\\test.exe", 505 "BuiltPdbOutput\tbin\\test.wixpdb",
504 "BuiltOutput\tbin\\test.wixpdb", 506 "BuiltTargetOutput\tbin\\test.exe",
505 "CopiedOutput\tbin\\test.txt", 507 "CopiedOutput\tbin\\test.txt",
506 "Input\tSimpleBundle\\data\\fakeba.dll", 508 "Input\tSimpleBundle\\data\\fakeba.dll",
507 "Input\tSimpleBundle\\data\\MsiPackage\\test.txt" 509 "Input\tSimpleBundle\\data\\MsiPackage\\test.txt"
diff --git a/src/wix/test/WixToolsetTest.CoreIntegration/SigningFixture.cs b/src/wix/test/WixToolsetTest.CoreIntegration/SigningFixture.cs
index 8fe73e5d..02fbfc30 100644
--- a/src/wix/test/WixToolsetTest.CoreIntegration/SigningFixture.cs
+++ b/src/wix/test/WixToolsetTest.CoreIntegration/SigningFixture.cs
@@ -148,7 +148,7 @@ namespace WixToolsetTest.CoreIntegration
148 result.AssertSuccess(); 148 result.AssertSuccess();
149 149
150 result = WixRunner.Execute(new[] 150 result = WixRunner.Execute(new[]
151{ 151 {
152 "burn", 152 "burn",
153 "detach", 153 "detach",
154 exePath, 154 exePath,
diff --git a/src/wix/test/WixToolsetTest.Sdk/MsbuildFixture.cs b/src/wix/test/WixToolsetTest.Sdk/MsbuildFixture.cs
index 40ebad5b..bd6f70bc 100644
--- a/src/wix/test/WixToolsetTest.Sdk/MsbuildFixture.cs
+++ b/src/wix/test/WixToolsetTest.Sdk/MsbuildFixture.cs
@@ -273,7 +273,47 @@ namespace WixToolsetTest.Sdk
273 }); 273 });
274 } 274 }
275 275
276 private void AssertWixpdb(BuildSystem buildSystem, string wixpdbType, string[] expectedOutputFiles) 276 [Theory]
277 [InlineData(BuildSystem.DotNetCoreSdk)]
278 [InlineData(BuildSystem.MSBuild)]
279 [InlineData(BuildSystem.MSBuild64)]
280 public void CanBuildWithWixpdbToDifferentFolder(BuildSystem buildSystem)
281 {
282 var expectedOutputFiles = new[]
283 {
284 @"bin\x86\Release\en-US\cab1.cab",
285 @"bin\x86\Release\en-US\MsiPackage.msi",
286 @"pdb\en-US\MsiPackage.wixpdb",
287 };
288
289 var sourceFolder = TestData.Get(@"TestData", "SimpleMsiPackage", "MsiPackage");
290
291 using (var fs = new TestDataFolderFileSystem())
292 {
293 fs.Initialize(sourceFolder);
294 var baseFolder = fs.BaseFolder;
295 var binFolder = Path.Combine(baseFolder, @"bin\");
296 var pdbFolder = Path.Combine(baseFolder, @"pdb\");
297 var projectPath = Path.Combine(baseFolder, "MsiPackage.wixproj");
298
299 var result = MsbuildUtilities.BuildProject(buildSystem, projectPath, new[]
300 {
301 MsbuildUtilities.GetQuotedPropertySwitch(buildSystem, "WixMSBuildProps", MsbuildFixture.WixPropsPath),
302 $"-p:PdbOutputDir={pdbFolder}",
303 "-p:SuppressValidation=true"
304 });
305 result.AssertSuccess();
306
307 var paths = Directory.EnumerateFiles(binFolder, @"*.*", SearchOption.AllDirectories)
308 .Concat(Directory.EnumerateFiles(pdbFolder, @"*.*", SearchOption.AllDirectories))
309 .Select(s => s.Substring(baseFolder.Length + 1))
310 .OrderBy(s => s)
311 .ToArray();
312 WixAssert.CompareLineByLine(expectedOutputFiles, paths);
313 }
314 }
315
316 private void AssertWixpdb(BuildSystem buildSystem, string debugType, string[] expectedOutputFiles)
277 { 317 {
278 var sourceFolder = TestData.Get(@"TestData\SimpleMsiPackage\MsiPackage"); 318 var sourceFolder = TestData.Get(@"TestData\SimpleMsiPackage\MsiPackage");
279 319
@@ -287,7 +327,7 @@ namespace WixToolsetTest.Sdk
287 var result = MsbuildUtilities.BuildProject(buildSystem, projectPath, new[] 327 var result = MsbuildUtilities.BuildProject(buildSystem, projectPath, new[]
288 { 328 {
289 MsbuildUtilities.GetQuotedPropertySwitch(buildSystem, "WixMSBuildProps", MsbuildFixture.WixPropsPath), 329 MsbuildUtilities.GetQuotedPropertySwitch(buildSystem, "WixMSBuildProps", MsbuildFixture.WixPropsPath),
290 wixpdbType == null ? String.Empty : $"-p:WixPdbType={wixpdbType}", 330 debugType == null ? String.Empty : $"-p:DebugType={debugType}",
291 "-p:SuppressValidation=true" 331 "-p:SuppressValidation=true"
292 }); 332 });
293 result.AssertSuccess(); 333 result.AssertSuccess();
@@ -425,6 +465,76 @@ namespace WixToolsetTest.Sdk
425 } 465 }
426 466
427 [Theory] 467 [Theory]
468 [InlineData(BuildSystem.DotNetCoreSdk, null)]
469 [InlineData(BuildSystem.DotNetCoreSdk, true)]
470 [InlineData(BuildSystem.MSBuild, null)]
471 [InlineData(BuildSystem.MSBuild, true)]
472 [InlineData(BuildSystem.MSBuild64, null)]
473 [InlineData(BuildSystem.MSBuild64, true)]
474 public void CanBuildSimpleWixlib(BuildSystem buildSystem, bool? outOfProc)
475 {
476 var sourceFolder = TestData.Get(@"TestData", "Wixlib", "SimpleWixlib");
477
478 using (var fs = new TestDataFolderFileSystem())
479 {
480 fs.Initialize(sourceFolder);
481 var baseFolder = fs.BaseFolder;
482 var binFolder = Path.Combine(baseFolder, @"bin\");
483 var projectPath = Path.Combine(baseFolder, "SimpleWixlib.wixproj");
484
485 var result = MsbuildUtilities.BuildProject(buildSystem, projectPath, new[]
486 {
487 MsbuildUtilities.GetQuotedPropertySwitch(buildSystem, "WixMSBuildProps", MsbuildFixture.WixPropsPath),
488 }, outOfProc: outOfProc);
489 result.AssertSuccess();
490
491 var wixBuildCommands = MsbuildUtilities.GetToolCommandLines(result, "wix", "build", buildSystem, outOfProc);
492 Assert.Single(wixBuildCommands);
493
494 var path = Directory.EnumerateFiles(binFolder, @"*.*", SearchOption.AllDirectories)
495 .Select(s => s.Substring(baseFolder.Length + 1))
496 .Single();
497 WixAssert.StringEqual(@"bin\x86\Release\SimpleWixlib.wixlib", path);
498 }
499 }
500
501 [Theory]
502 [InlineData(BuildSystem.DotNetCoreSdk, null)]
503 [InlineData(BuildSystem.DotNetCoreSdk, true)]
504 [InlineData(BuildSystem.MSBuild, null)]
505 [InlineData(BuildSystem.MSBuild, true)]
506 [InlineData(BuildSystem.MSBuild64, null)]
507 [InlineData(BuildSystem.MSBuild64, true)]
508 public void CanBuildPackageIncludingSimpleWixlib(BuildSystem buildSystem, bool? outOfProc)
509 {
510 var sourceFolder = TestData.Get(@"TestData", "Wixlib");
511
512 using (var fs = new TestDataFolderFileSystem())
513 {
514 fs.Initialize(sourceFolder);
515 var baseFolder = fs.BaseFolder;
516 var binFolder = Path.Combine(baseFolder, "PackageIncludesWixlib", @"bin\");
517 var projectPath = Path.Combine(baseFolder, "PackageIncludesWixlib", "PackageIncludesWixlib.wixproj");
518
519 var result = MsbuildUtilities.BuildProject(buildSystem, projectPath, new[]
520 {
521 MsbuildUtilities.GetQuotedPropertySwitch(buildSystem, "WixMSBuildProps", MsbuildFixture.WixPropsPath),
522 }, outOfProc: outOfProc);
523 result.AssertSuccess();
524
525 var paths = Directory.EnumerateFiles(binFolder, @"*.*", SearchOption.AllDirectories)
526 .Select(s => s.Substring(baseFolder.Length + 1))
527 .ToArray();
528 WixAssert.CompareLineByLine(new[]
529 {
530 @"PackageIncludesWixlib\bin\x86\Release\cab1.cab",
531 @"PackageIncludesWixlib\bin\x86\Release\PackageIncludesWixlib.msi",
532 @"PackageIncludesWixlib\bin\x86\Release\PackageIncludesWixlib.wixpdb",
533 }, paths);
534 }
535 }
536
537 [Theory]
428 [InlineData(BuildSystem.DotNetCoreSdk)] 538 [InlineData(BuildSystem.DotNetCoreSdk)]
429 [InlineData(BuildSystem.MSBuild)] 539 [InlineData(BuildSystem.MSBuild)]
430 [InlineData(BuildSystem.MSBuild64)] 540 [InlineData(BuildSystem.MSBuild64)]
diff --git a/src/wix/test/WixToolsetTest.Sdk/TestData/Wixlib/PackageIncludesWixlib/Package.wxs b/src/wix/test/WixToolsetTest.Sdk/TestData/Wixlib/PackageIncludesWixlib/Package.wxs
new file mode 100644
index 00000000..fe8298bd
--- /dev/null
+++ b/src/wix/test/WixToolsetTest.Sdk/TestData/Wixlib/PackageIncludesWixlib/Package.wxs
@@ -0,0 +1,9 @@
1<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
2 <Package Name="MsiPackage" Language="1033" Version="1.0.0.0" Manufacturer="Example Corporation" UpgradeCode="047730a5-30fe-4a62-a520-da9381b8226a" Compressed="yes" InstallerVersion="200">
3 <MediaTemplate />
4
5 <Feature Id="ProductFeature" Title="ATitle">
6 <ComponentGroupRef Id="ProductComponents" />
7 </Feature>
8 </Package>
9</Wix>
diff --git a/src/wix/test/WixToolsetTest.Sdk/TestData/Wixlib/PackageIncludesWixlib/PackageIncludesWixlib.wixproj b/src/wix/test/WixToolsetTest.Sdk/TestData/Wixlib/PackageIncludesWixlib/PackageIncludesWixlib.wixproj
new file mode 100644
index 00000000..6ada19b8
--- /dev/null
+++ b/src/wix/test/WixToolsetTest.Sdk/TestData/Wixlib/PackageIncludesWixlib/PackageIncludesWixlib.wixproj
@@ -0,0 +1,44 @@
1<?xml version="1.0" encoding="utf-8"?>
2<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3 <Import Project="$(WixMSBuildProps)" />
4 <PropertyGroup>
5 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
6 <Platform Condition=" '$(Platform)' == '' ">x86</Platform>
7 </PropertyGroup>
8
9 <PropertyGroup>
10 <ProjectGuid>{B00939D5-7952-4ADF-BEB1-507D227B2FE2}</ProjectGuid>
11 </PropertyGroup>
12
13 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
14 <PlatformName>$(Platform)</PlatformName>
15 <OutputPath>bin\$(Platform)\$(Configuration)\</OutputPath>
16 <DefineConstants>Debug</DefineConstants>
17 </PropertyGroup>
18 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
19 <PlatformName>$(Platform)</PlatformName>
20 <OutputPath>bin\$(Platform)\$(Configuration)\</OutputPath>
21 </PropertyGroup>
22 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
23 <PlatformName>$(Platform)</PlatformName>
24 <OutputPath>bin\$(Platform)\$(Configuration)\</OutputPath>
25 <DefineConstants>Debug</DefineConstants>
26 </PropertyGroup>
27 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
28 <PlatformName>$(Platform)</PlatformName>
29 <OutputPath>bin\$(Platform)\$(Configuration)\</OutputPath>
30 </PropertyGroup>
31
32 <ItemGroup>
33 <Compile Include="Package.wxs" />
34 </ItemGroup>
35
36 <ItemGroup>
37 <ProjectReference Include="..\SimpleWixlib\SimpleWixlib.wixproj">
38 <Name>SimpleWixlib</Name>
39 <Project>{9F84998B-7F45-4CB3-8795-915801DBBB74}</Project>
40 </ProjectReference>
41 </ItemGroup>
42
43 <Import Project="$(WixTargetsPath)" />
44</Project>
diff --git a/src/wix/test/WixToolsetTest.Sdk/TestData/Wixlib/SimpleWixlib/Library.wxs b/src/wix/test/WixToolsetTest.Sdk/TestData/Wixlib/SimpleWixlib/Library.wxs
new file mode 100644
index 00000000..8ffb3e8a
--- /dev/null
+++ b/src/wix/test/WixToolsetTest.Sdk/TestData/Wixlib/SimpleWixlib/Library.wxs
@@ -0,0 +1,15 @@
1<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
2 <Fragment>
3 <StandardDirectory Id="ProgramFilesFolder">
4 <Directory Id="WixLibFolder" />
5 </StandardDirectory>
6 </Fragment>
7
8 <Fragment>
9 <ComponentGroup Id="ProductComponents" Directory="WixLibFolder">
10 <Component Id="TextFile" Guid="2D93B748-4926-4185-BC84-9F1D6883AF20">
11 <File Source="Library.txt" />
12 </Component>
13 </ComponentGroup>
14 </Fragment>
15</Wix>
diff --git a/src/wix/test/WixToolsetTest.Sdk/TestData/Wixlib/SimpleWixlib/SimpleWixlib.wixproj b/src/wix/test/WixToolsetTest.Sdk/TestData/Wixlib/SimpleWixlib/SimpleWixlib.wixproj
new file mode 100644
index 00000000..7c83a339
--- /dev/null
+++ b/src/wix/test/WixToolsetTest.Sdk/TestData/Wixlib/SimpleWixlib/SimpleWixlib.wixproj
@@ -0,0 +1,43 @@
1<?xml version="1.0" encoding="utf-8"?>
2<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3 <Import Project="$(WixMSBuildProps)" />
4 <PropertyGroup>
5 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
6 <Platform Condition=" '$(Platform)' == '' ">x86</Platform>
7 <OutputType>Library</OutputType>
8 <BindFiles>true</BindFiles>
9 </PropertyGroup>
10
11 <PropertyGroup>
12 <ProjectGuid>{9F84998B-7F45-4CB3-8795-915801DBBB74}</ProjectGuid>
13 </PropertyGroup>
14
15 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
16 <PlatformName>$(Platform)</PlatformName>
17 <OutputPath>bin\$(Platform)\$(Configuration)\</OutputPath>
18 <DefineConstants>Debug</DefineConstants>
19 </PropertyGroup>
20 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
21 <PlatformName>$(Platform)</PlatformName>
22 <OutputPath>bin\$(Platform)\$(Configuration)\</OutputPath>
23 </PropertyGroup>
24 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
25 <PlatformName>$(Platform)</PlatformName>
26 <OutputPath>bin\$(Platform)\$(Configuration)\</OutputPath>
27 <DefineConstants>Debug</DefineConstants>
28 </PropertyGroup>
29 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
30 <PlatformName>$(Platform)</PlatformName>
31 <OutputPath>bin\$(Platform)\$(Configuration)\</OutputPath>
32 </PropertyGroup>
33
34 <ItemGroup>
35 <Compile Include="Library.wxs" />
36 </ItemGroup>
37
38 <ItemGroup>
39 <BindInputPaths Include="data" />
40 </ItemGroup>
41
42 <Import Project="$(WixTargetsPath)" />
43</Project>
diff --git a/src/wix/test/WixToolsetTest.Sdk/TestData/Wixlib/SimpleWixlib/data/Library.txt b/src/wix/test/WixToolsetTest.Sdk/TestData/Wixlib/SimpleWixlib/data/Library.txt
new file mode 100644
index 00000000..19a811ae
--- /dev/null
+++ b/src/wix/test/WixToolsetTest.Sdk/TestData/Wixlib/SimpleWixlib/data/Library.txt
@@ -0,0 +1 @@
This is Library.txt.