From 3ba9b06b2ab5b67e53354134323e6551addb96b8 Mon Sep 17 00:00:00 2001 From: Rob Mensching Date: Wed, 24 Aug 2022 14:38:30 -0700 Subject: Allow customization of the .wixpdb output folder Fixes 6857 --- .../Data/TrackedFileType.cs | 16 ++- src/ext/Bal/bal.cmd | 2 +- src/wix/WixToolset.BuildTasks/ReadTracking.cs | 30 +++++- .../WixToolset.Core.Burn/Bind/BindBundleCommand.cs | 4 +- .../Bundles/CreateNonUXContainers.cs | 2 +- .../Bind/BindDatabaseCommand.cs | 4 +- .../Bind/CreateCabinetsCommand.cs | 4 +- .../Bind/ProcessUncompressedFilesCommand.cs | 8 +- .../ExtensibilityServices/TrackedFile.cs | 2 +- src/wix/WixToolset.Sdk/tools/wix.targets | 32 ++++-- .../BundleFixture.cs | 8 +- .../SigningFixture.cs | 2 +- src/wix/test/WixToolsetTest.Sdk/MsbuildFixture.cs | 114 ++++++++++++++++++++- .../Wixlib/PackageIncludesWixlib/Package.wxs | 9 ++ .../PackageIncludesWixlib.wixproj | 44 ++++++++ .../TestData/Wixlib/SimpleWixlib/Library.wxs | 15 +++ .../Wixlib/SimpleWixlib/SimpleWixlib.wixproj | 43 ++++++++ .../TestData/Wixlib/SimpleWixlib/data/Library.txt | 1 + 18 files changed, 303 insertions(+), 37 deletions(-) create mode 100644 src/wix/test/WixToolsetTest.Sdk/TestData/Wixlib/PackageIncludesWixlib/Package.wxs create mode 100644 src/wix/test/WixToolsetTest.Sdk/TestData/Wixlib/PackageIncludesWixlib/PackageIncludesWixlib.wixproj create mode 100644 src/wix/test/WixToolsetTest.Sdk/TestData/Wixlib/SimpleWixlib/Library.wxs create mode 100644 src/wix/test/WixToolsetTest.Sdk/TestData/Wixlib/SimpleWixlib/SimpleWixlib.wixproj create mode 100644 src/wix/test/WixToolsetTest.Sdk/TestData/Wixlib/SimpleWixlib/data/Library.txt 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 Intermediate, /// - /// Output created by the build process itself (like a .msi, .cab or .wixpdb). + /// Output created by the build process itself (like a .cab). /// These files can be recreated in the final output location by building again. /// - BuiltOutput, + BuiltContentOutput, + + /// + /// Target output created by the build process itself (like a .msi, .msm, .wixlib, .exe). + /// These files can be recreated in the final output location by building again. + /// + BuiltTargetOutput, + + /// + /// Output pdb created by the build process itself (like a .wixpdb). + /// These files can be recreated in the final output location by building again. + /// + BuiltPdbOutput, /// /// 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 msbuild -p:Configuration=%_C%;Platform=x64 test\examples\TestEngine\Example.TestEngine.vcxproj || exit /b msbuild -p:Configuration=%_C%;Platform=ARM64 test\examples\TestEngine\Example.TestEngine.vcxproj || exit /b -msbuild -p:Configuration=%_C% || exit /b +msbuild -p:Configuration=%_C% -bl:%_L%\bal_build.binlog || exit /b dotnet test test\WixToolsetTest.Dnc.HostGenerator -c %_C% --nologo --no-build -l "trx;LogFileName=%_L%\TestResults\WixToolsetTest.Dnc.HostGenerator.trx" || exit /b 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,11 +29,29 @@ namespace WixToolset.BuildTasks public ITaskItem[] All { get; private set; } /// - /// The tracked built outputs. + /// The union of tracked built outputs. /// [Output] public ITaskItem[] BuiltOutputs { get; private set; } + /// + /// The tracked content built outputs. + /// + [Output] + public ITaskItem[] BuiltContentOutputs { get; private set; } + + /// + /// The tracked target built outputs. + /// + [Output] + public ITaskItem[] BuiltTargetOutputs { get; private set; } + + /// + /// The tracked pdb built outputs. + /// + [Output] + public ITaskItem[] BuiltPdbOutputs { get; private set; } + /// /// The tracked copied outputs. /// @@ -47,7 +65,7 @@ namespace WixToolset.BuildTasks public ITaskItem[] Inputs { get; private set; } /// - /// All tracked outputs. + /// The union of all tracked outputs. /// [Output] public ITaskItem[] Outputs { get; private set; } @@ -81,10 +99,14 @@ namespace WixToolset.BuildTasks } this.All = all.ToArray(); - this.BuiltOutputs = all.Where(t => FilterByTrackedType(t, "BuiltOutput")).ToArray(); + this.BuiltContentOutputs = all.Where(t => FilterByTrackedType(t, "BuiltContentOutput")).ToArray(); + this.BuiltTargetOutputs = all.Where(t => FilterByTrackedType(t, "BuiltTargetOutput")).ToArray(); + this.BuiltPdbOutputs = all.Where(t => FilterByTrackedType(t, "BuiltPdbOutput")).ToArray(); this.CopiedOutputs = all.Where(t => FilterByTrackedType(t, "CopiedOutput")).ToArray(); this.Inputs = all.Where(t => FilterByTrackedType(t, "Input")).ToArray(); - this.Outputs = all.Where(t => FilterByTrackedType(t, "BuiltOutput") || FilterByTrackedType(t, "CopiedOutput")).ToArray(); + + this.BuiltOutputs = this.BuiltContentOutputs.Concat(this.BuiltTargetOutputs).Concat(this.BuiltPdbOutputs).ToArray(); + this.Outputs = this.BuiltOutputs.Concat(this.CopiedOutputs).ToArray(); return true; } 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 command.Execute(); fileTransfers.Add(command.Transfer); - trackedFiles.Add(this.BackendHelper.TrackFile(this.OutputPath, TrackedFileType.BuiltOutput)); + trackedFiles.Add(this.BackendHelper.TrackFile(this.OutputPath, TrackedFileType.BuiltTargetOutput)); } #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 } else { - var trackPdb = this.BackendHelper.TrackFile(this.OutputPdbPath, TrackedFileType.BuiltOutput); + var trackPdb = this.BackendHelper.TrackFile(this.OutputPdbPath, TrackedFileType.BuiltPdbOutput); trackedFiles.Add(trackPdb); 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 var transfer = this.BackendHelper.CreateFileTransfer(container.WorkingPath, outputPath, true, container.SourceLineNumbers); fileTransfers.Add(transfer); - trackedFiles.Add(this.BackendHelper.TrackFile(outputPath, TrackedFileType.BuiltOutput, container.SourceLineNumbers)); + trackedFiles.Add(this.BackendHelper.TrackFile(outputPath, TrackedFileType.BuiltContentOutput, container.SourceLineNumbers)); } else // update the attached container index. { 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 { this.Messaging.Write(VerboseMessages.GeneratingDatabase()); - var trackMsi = this.WindowsInstallerBackendHelper.TrackFile(this.OutputPath, TrackedFileType.BuiltOutput); + var trackMsi = this.WindowsInstallerBackendHelper.TrackFile(this.OutputPath, TrackedFileType.BuiltTargetOutput); trackedFiles.Add(trackMsi); 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 } else { - var trackPdb = this.WindowsInstallerBackendHelper.TrackFile(this.OutputPdbPath, TrackedFileType.BuiltOutput); + var trackPdb = this.WindowsInstallerBackendHelper.TrackFile(this.OutputPdbPath, TrackedFileType.BuiltPdbOutput); trackedFiles.Add(trackPdb); 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 } else { - var trackDestination = this.BackendHelper.TrackFile(Path.Combine(cabinetDir, mediaSymbol.Cabinet), TrackedFileType.BuiltOutput, mediaSymbol.SourceLineNumbers); + var trackDestination = this.BackendHelper.TrackFile(Path.Combine(cabinetDir, mediaSymbol.Cabinet), TrackedFileType.BuiltContentOutput, mediaSymbol.SourceLineNumbers); this.trackedFiles.Add(trackDestination); var transfer = this.BackendHelper.CreateFileTransfer(resolvedCabinet.Path, trackDestination.Path, resolvedCabinet.BuildOption == CabinetBuildOption.BuildAndMove, mediaSymbol.SourceLineNumbers); @@ -314,7 +314,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind var trackSource = this.BackendHelper.TrackFile(spannedCabinetSourcePath, TrackedFileType.Intermediate, transfer.SourceLineNumbers); this.trackedFiles.Add(trackSource); - var trackTarget = this.BackendHelper.TrackFile(spannedCabinetTargetPath, TrackedFileType.BuiltOutput, transfer.SourceLineNumbers); + var trackTarget = this.BackendHelper.TrackFile(spannedCabinetTargetPath, TrackedFileType.BuiltContentOutput, transfer.SourceLineNumbers); this.trackedFiles.Add(trackTarget); 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 var transfer = this.BackendHelper.CreateFileTransfer(facade.SourcePath, fileLayoutPath, false, facade.SourceLineNumber); fileTransfers.Add(transfer); - // Track the location where the cabinet will be placed. If the transfer is - // redundant then then the file should not be cleaned. This is important - // because if the source and destination of the transfer is the same, we - // don't want to clean the file because we'd be deleting the original - // (and that would be bad). - var tracked = this.BackendHelper.TrackFile(transfer.Destination, TrackedFileType.BuiltOutput, facade.SourceLineNumber); + var tracked = this.BackendHelper.TrackFile(transfer.Destination, TrackedFileType.CopiedOutput, facade.SourceLineNumber); + tracked.Clean = !transfer.Redundant; 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 this.Path = path; this.Type = type; this.SourceLineNumbers = sourceLineNumbers; - this.Clean = (type == TrackedFileType.Intermediate || type == TrackedFileType.BuiltOutput || type == TrackedFileType.CopiedOutput); + this.Clean = (type == TrackedFileType.Intermediate || type == TrackedFileType.BuiltContentOutput || type == TrackedFileType.BuiltTargetOutput || type == TrackedFileType.BuiltPdbOutput || type == TrackedFileType.CopiedOutput); } 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 @@ Package - full + none + full @@ -113,6 +114,13 @@ false + + + <_DebugSymbolsProduced Condition=" '$(OutputType)' != 'Package' and '$(OutputType)' != 'Module' and '$(OutputType)' != 'Bundle' ">false + + $(TargetDir) @@ -625,7 +633,7 @@ OutputFile="$(IntermediateOutputPath)%(CultureGroup.OutputFolder)$(TargetFileName)" OutputType="$(OutputType)" PdbFile="$(IntermediateOutputPath)%(CultureGroup.OutputFolder)$(TargetPdbFileName)" - PdbType="$(WixPdbType)" + PdbType="$(DebugType)" AdditionalOptions="$(CompilerAdditionalOptions) $(LinkerAdditionalOptions)" DefineConstants="$(DefineConstants);$(SolutionDefineConstants);$(ProjectDefineConstants);$(ProjectReferenceDefineConstants)" @@ -887,7 +895,7 @@ - + @@ -922,13 +930,18 @@ $([MSBuild]::NormalizeDirectory($(IntermediateOutputPath))) - + + + <_FullPathToCopy Include="$(IntermediateOutputPath)%(CultureGroup.OutputFolder)$(TargetFileName)" /> + + + - + + - <_FullPathToCopy Include="$(IntermediateOutputPath)%(CultureGroup.OutputFolder)$(TargetFileName)" Condition=" '@(_FullPathToCopy)'=='' " /> <_RelativePath Include="$([MSBuild]::MakeRelative($(FullIntermediateOutputPath), %(_FullPathToCopy.FullPath)))" /> @@ -950,10 +963,10 @@ - - --> 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 Assert.True(File.Exists(exePath)); Assert.True(File.Exists(Path.Combine(Path.GetDirectoryName(exePath), "test.txt"))); - var trackedLines = File.ReadAllLines(trackingFile).Select(s => s.Replace(baseFolder, null, StringComparison.OrdinalIgnoreCase).Replace(folder, null, StringComparison.OrdinalIgnoreCase)).ToArray(); + var trackedLines = File.ReadAllLines(trackingFile).Select(s => s.Replace(baseFolder, null, StringComparison.OrdinalIgnoreCase).Replace(folder, null, StringComparison.OrdinalIgnoreCase)) + .OrderBy(s => s) + .ToArray(); WixAssert.CompareLineByLine(new[] { - "BuiltOutput\tbin\\test.exe", - "BuiltOutput\tbin\\test.wixpdb", + "BuiltPdbOutput\tbin\\test.wixpdb", + "BuiltTargetOutput\tbin\\test.exe", "CopiedOutput\tbin\\test.txt", "Input\tSimpleBundle\\data\\fakeba.dll", "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 result.AssertSuccess(); result = WixRunner.Execute(new[] -{ + { "burn", "detach", 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 }); } - private void AssertWixpdb(BuildSystem buildSystem, string wixpdbType, string[] expectedOutputFiles) + [Theory] + [InlineData(BuildSystem.DotNetCoreSdk)] + [InlineData(BuildSystem.MSBuild)] + [InlineData(BuildSystem.MSBuild64)] + public void CanBuildWithWixpdbToDifferentFolder(BuildSystem buildSystem) + { + var expectedOutputFiles = new[] + { + @"bin\x86\Release\en-US\cab1.cab", + @"bin\x86\Release\en-US\MsiPackage.msi", + @"pdb\en-US\MsiPackage.wixpdb", + }; + + var sourceFolder = TestData.Get(@"TestData", "SimpleMsiPackage", "MsiPackage"); + + using (var fs = new TestDataFolderFileSystem()) + { + fs.Initialize(sourceFolder); + var baseFolder = fs.BaseFolder; + var binFolder = Path.Combine(baseFolder, @"bin\"); + var pdbFolder = Path.Combine(baseFolder, @"pdb\"); + var projectPath = Path.Combine(baseFolder, "MsiPackage.wixproj"); + + var result = MsbuildUtilities.BuildProject(buildSystem, projectPath, new[] + { + MsbuildUtilities.GetQuotedPropertySwitch(buildSystem, "WixMSBuildProps", MsbuildFixture.WixPropsPath), + $"-p:PdbOutputDir={pdbFolder}", + "-p:SuppressValidation=true" + }); + result.AssertSuccess(); + + var paths = Directory.EnumerateFiles(binFolder, @"*.*", SearchOption.AllDirectories) + .Concat(Directory.EnumerateFiles(pdbFolder, @"*.*", SearchOption.AllDirectories)) + .Select(s => s.Substring(baseFolder.Length + 1)) + .OrderBy(s => s) + .ToArray(); + WixAssert.CompareLineByLine(expectedOutputFiles, paths); + } + } + + private void AssertWixpdb(BuildSystem buildSystem, string debugType, string[] expectedOutputFiles) { var sourceFolder = TestData.Get(@"TestData\SimpleMsiPackage\MsiPackage"); @@ -287,7 +327,7 @@ namespace WixToolsetTest.Sdk var result = MsbuildUtilities.BuildProject(buildSystem, projectPath, new[] { MsbuildUtilities.GetQuotedPropertySwitch(buildSystem, "WixMSBuildProps", MsbuildFixture.WixPropsPath), - wixpdbType == null ? String.Empty : $"-p:WixPdbType={wixpdbType}", + debugType == null ? String.Empty : $"-p:DebugType={debugType}", "-p:SuppressValidation=true" }); result.AssertSuccess(); @@ -424,6 +464,76 @@ namespace WixToolsetTest.Sdk } } + [Theory] + [InlineData(BuildSystem.DotNetCoreSdk, null)] + [InlineData(BuildSystem.DotNetCoreSdk, true)] + [InlineData(BuildSystem.MSBuild, null)] + [InlineData(BuildSystem.MSBuild, true)] + [InlineData(BuildSystem.MSBuild64, null)] + [InlineData(BuildSystem.MSBuild64, true)] + public void CanBuildSimpleWixlib(BuildSystem buildSystem, bool? outOfProc) + { + var sourceFolder = TestData.Get(@"TestData", "Wixlib", "SimpleWixlib"); + + using (var fs = new TestDataFolderFileSystem()) + { + fs.Initialize(sourceFolder); + var baseFolder = fs.BaseFolder; + var binFolder = Path.Combine(baseFolder, @"bin\"); + var projectPath = Path.Combine(baseFolder, "SimpleWixlib.wixproj"); + + var result = MsbuildUtilities.BuildProject(buildSystem, projectPath, new[] + { + MsbuildUtilities.GetQuotedPropertySwitch(buildSystem, "WixMSBuildProps", MsbuildFixture.WixPropsPath), + }, outOfProc: outOfProc); + result.AssertSuccess(); + + var wixBuildCommands = MsbuildUtilities.GetToolCommandLines(result, "wix", "build", buildSystem, outOfProc); + Assert.Single(wixBuildCommands); + + var path = Directory.EnumerateFiles(binFolder, @"*.*", SearchOption.AllDirectories) + .Select(s => s.Substring(baseFolder.Length + 1)) + .Single(); + WixAssert.StringEqual(@"bin\x86\Release\SimpleWixlib.wixlib", path); + } + } + + [Theory] + [InlineData(BuildSystem.DotNetCoreSdk, null)] + [InlineData(BuildSystem.DotNetCoreSdk, true)] + [InlineData(BuildSystem.MSBuild, null)] + [InlineData(BuildSystem.MSBuild, true)] + [InlineData(BuildSystem.MSBuild64, null)] + [InlineData(BuildSystem.MSBuild64, true)] + public void CanBuildPackageIncludingSimpleWixlib(BuildSystem buildSystem, bool? outOfProc) + { + var sourceFolder = TestData.Get(@"TestData", "Wixlib"); + + using (var fs = new TestDataFolderFileSystem()) + { + fs.Initialize(sourceFolder); + var baseFolder = fs.BaseFolder; + var binFolder = Path.Combine(baseFolder, "PackageIncludesWixlib", @"bin\"); + var projectPath = Path.Combine(baseFolder, "PackageIncludesWixlib", "PackageIncludesWixlib.wixproj"); + + var result = MsbuildUtilities.BuildProject(buildSystem, projectPath, new[] + { + MsbuildUtilities.GetQuotedPropertySwitch(buildSystem, "WixMSBuildProps", MsbuildFixture.WixPropsPath), + }, outOfProc: outOfProc); + result.AssertSuccess(); + + var paths = Directory.EnumerateFiles(binFolder, @"*.*", SearchOption.AllDirectories) + .Select(s => s.Substring(baseFolder.Length + 1)) + .ToArray(); + WixAssert.CompareLineByLine(new[] + { + @"PackageIncludesWixlib\bin\x86\Release\cab1.cab", + @"PackageIncludesWixlib\bin\x86\Release\PackageIncludesWixlib.msi", + @"PackageIncludesWixlib\bin\x86\Release\PackageIncludesWixlib.wixpdb", + }, paths); + } + } + [Theory] [InlineData(BuildSystem.DotNetCoreSdk)] [InlineData(BuildSystem.MSBuild)] 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 @@ + + + + + + + + + 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 @@ + + + + + Debug + x86 + + + + {B00939D5-7952-4ADF-BEB1-507D227B2FE2} + + + + $(Platform) + bin\$(Platform)\$(Configuration)\ + Debug + + + $(Platform) + bin\$(Platform)\$(Configuration)\ + + + $(Platform) + bin\$(Platform)\$(Configuration)\ + Debug + + + $(Platform) + bin\$(Platform)\$(Configuration)\ + + + + + + + + + SimpleWixlib + {9F84998B-7F45-4CB3-8795-915801DBBB74} + + + + + 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 @@ + + + + + + + + + + + + + + + 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 @@ + + + + + Debug + x86 + Library + true + + + + {9F84998B-7F45-4CB3-8795-915801DBBB74} + + + + $(Platform) + bin\$(Platform)\$(Configuration)\ + Debug + + + $(Platform) + bin\$(Platform)\$(Configuration)\ + + + $(Platform) + bin\$(Platform)\$(Configuration)\ + Debug + + + $(Platform) + bin\$(Platform)\$(Configuration)\ + + + + + + + + + + + + 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. -- cgit v1.2.3-55-g6feb