From 045eecc36260bfd9d184aedd4a6dc2ec0c5e9b1d Mon Sep 17 00:00:00 2001 From: Rob Mensching Date: Sun, 2 Jan 2022 13:13:32 -0800 Subject: Ensure external bundle payloads and containers are copied to output --- .../TestData/LayoutTests/BundleA/BundleA.wixproj | 8 ----- .../Bundles/CreateNonUXContainers.cs | 5 ++- .../Bundles/ProcessPayloadsCommand.cs | 6 +++- .../BundleFixture.cs | 40 ++++++++++++++++++++++ .../BundleUncompressed/UncompressedBundle.wxs | 11 ++++++ src/wix/test/WixToolsetTest.Sdk/MsbuildFixture.cs | 6 ++-- 6 files changed, 63 insertions(+), 13 deletions(-) create mode 100644 src/wix/test/WixToolsetTest.CoreIntegration/TestData/BundleUncompressed/UncompressedBundle.wxs (limited to 'src') diff --git a/src/test/burn/TestData/LayoutTests/BundleA/BundleA.wixproj b/src/test/burn/TestData/LayoutTests/BundleA/BundleA.wixproj index 3b1e871c..5796178b 100644 --- a/src/test/burn/TestData/LayoutTests/BundleA/BundleA.wixproj +++ b/src/test/burn/TestData/LayoutTests/BundleA/BundleA.wixproj @@ -12,12 +12,4 @@ - - - - - - - - \ No newline at end of file diff --git a/src/wix/WixToolset.Core.Burn/Bundles/CreateNonUXContainers.cs b/src/wix/WixToolset.Core.Burn/Bundles/CreateNonUXContainers.cs index 9cddfc35..e606fe59 100644 --- a/src/wix/WixToolset.Core.Burn/Bundles/CreateNonUXContainers.cs +++ b/src/wix/WixToolset.Core.Burn/Bundles/CreateNonUXContainers.cs @@ -104,8 +104,11 @@ namespace WixToolset.Core.Burn.Bundles // Add detached containers to the list of file transfers. if (ContainerType.Detached == container.Type) { - var transfer = this.BackendHelper.CreateFileTransfer(container.WorkingPath, Path.Combine(this.LayoutFolder, container.Name), true, container.SourceLineNumbers); + var outputPath = Path.Combine(this.LayoutFolder, container.Name); + var transfer = this.BackendHelper.CreateFileTransfer(container.WorkingPath, outputPath, true, container.SourceLineNumbers); fileTransfers.Add(transfer); + + trackedFiles.Add(this.BackendHelper.TrackFile(outputPath, TrackedFileType.BuiltOutput, container.SourceLineNumbers)); } else // update the attached container index. { diff --git a/src/wix/WixToolset.Core.Burn/Bundles/ProcessPayloadsCommand.cs b/src/wix/WixToolset.Core.Burn/Bundles/ProcessPayloadsCommand.cs index 92fe86f2..3bd1f938 100644 --- a/src/wix/WixToolset.Core.Burn/Bundles/ProcessPayloadsCommand.cs +++ b/src/wix/WixToolset.Core.Burn/Bundles/ProcessPayloadsCommand.cs @@ -77,8 +77,12 @@ namespace WixToolset.Core.Burn.Bundles // External payloads need to be transfered. if (PackagingType.External == payload.Packaging) { - var transfer = this.BackendHelper.CreateFileTransfer(sourceFile.Path, Path.Combine(this.LayoutDirectory, payload.Name), false, payload.SourceLineNumbers); + var outputPath = Path.Combine(this.LayoutDirectory, payload.Name); + + var transfer = this.BackendHelper.CreateFileTransfer(sourceFile.Path, outputPath, false, payload.SourceLineNumbers); fileTransfers.Add(transfer); + + trackedFiles.Add(this.BackendHelper.TrackFile(outputPath, TrackedFileType.CopiedOutput, payload.SourceLineNumbers)); } if (payload.ContentFile) diff --git a/src/wix/test/WixToolsetTest.CoreIntegration/BundleFixture.cs b/src/wix/test/WixToolsetTest.CoreIntegration/BundleFixture.cs index 10d9a39a..601503ab 100644 --- a/src/wix/test/WixToolsetTest.CoreIntegration/BundleFixture.cs +++ b/src/wix/test/WixToolsetTest.CoreIntegration/BundleFixture.cs @@ -291,6 +291,46 @@ namespace WixToolsetTest.CoreIntegration } } + [Fact] + public void CanBuildUncompressedBundle() + { + var folder = TestData.Get(@"TestData") + Path.DirectorySeparatorChar; + + using (var fs = new DisposableFileSystem()) + { + var baseFolder = fs.GetFolder() + Path.DirectorySeparatorChar; + var intermediateFolder = Path.Combine(baseFolder, "obj"); + var exePath = Path.Combine(baseFolder, @"bin\test.exe"); + var trackingFile = Path.Combine(intermediateFolder, "trackingFile.txt"); + + var result = WixRunner.Execute(new[] + { + "build", + Path.Combine(folder, "BundleUncompressed", "UncompressedBundle.wxs"), + "-bindpath", Path.Combine(folder, "SimpleBundle", "data"), + "-bindpath", Path.Combine(folder, ".Data"), + "-intermediateFolder", intermediateFolder, + "-o", exePath, + "-trackingFile", trackingFile + }); + + result.AssertSuccess(); + + 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(); + WixAssert.CompareLineByLine(new[] + { + "BuiltOutput\tbin\\test.exe", + "BuiltOutput\tbin\\test.wixpdb", + "CopiedOutput\tbin\\test.txt", + "Input\tSimpleBundle\\data\\fakeba.dll", + "Input\tSimpleBundle\\data\\MsiPackage\\test.txt" + }, trackedLines); + } + } + [Fact] public void CantBuildWithDuplicateCacheIds() { diff --git a/src/wix/test/WixToolsetTest.CoreIntegration/TestData/BundleUncompressed/UncompressedBundle.wxs b/src/wix/test/WixToolsetTest.CoreIntegration/TestData/BundleUncompressed/UncompressedBundle.wxs new file mode 100644 index 00000000..a9d09ede --- /dev/null +++ b/src/wix/test/WixToolsetTest.CoreIntegration/TestData/BundleUncompressed/UncompressedBundle.wxs @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/wix/test/WixToolsetTest.Sdk/MsbuildFixture.cs b/src/wix/test/WixToolsetTest.Sdk/MsbuildFixture.cs index b3d25406..b1a97644 100644 --- a/src/wix/test/WixToolsetTest.Sdk/MsbuildFixture.cs +++ b/src/wix/test/WixToolsetTest.Sdk/MsbuildFixture.cs @@ -44,7 +44,7 @@ namespace WixToolsetTest.Sdk } } - [Theory(Skip = "https://github.com/wixtoolset/issues/issues/6407")] + [Theory] [InlineData(BuildSystem.DotNetCoreSdk)] [InlineData(BuildSystem.MSBuild)] [InlineData(BuildSystem.MSBuild64)] @@ -71,9 +71,9 @@ namespace WixToolsetTest.Sdk .ToArray(); WixAssert.CompareLineByLine(new[] { - @"bin\x86\Release\SimpleBundle.exe", - @"bin\x86\Release\SimpleBundle.wixpdb", @"bin\x86\Release\test.txt", + @"bin\x86\Release\UncompressedBundle.exe", + @"bin\x86\Release\UncompressedBundle.wixpdb", }, paths); } } -- cgit v1.2.3-55-g6feb