From 2449385e7c649821907a745d3859137977b3e78a Mon Sep 17 00:00:00 2001 From: Rob Mensching Date: Mon, 14 Mar 2022 11:13:11 -0700 Subject: Support containers in relative subfolders Fixes 5677 --- .../Bundles/CreateContainerCommand.cs | 3 +++ .../BundleFixture.cs | 31 +++++++++++++++++++++- .../TestData/Bundle/SubfolderContainer.wxs | 12 +++++++++ 3 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 src/wix/test/WixToolsetTest.CoreIntegration/TestData/Bundle/SubfolderContainer.wxs diff --git a/src/wix/WixToolset.Core.Burn/Bundles/CreateContainerCommand.cs b/src/wix/WixToolset.Core.Burn/Bundles/CreateContainerCommand.cs index 87a63cc3..f7db6c00 100644 --- a/src/wix/WixToolset.Core.Burn/Bundles/CreateContainerCommand.cs +++ b/src/wix/WixToolset.Core.Burn/Bundles/CreateContainerCommand.cs @@ -45,6 +45,9 @@ namespace WixToolset.Core.Burn.Bundles public void Execute() { var cabinetPath = Path.GetFullPath(this.OutputPath); + var cabinetFolder = Path.GetDirectoryName(cabinetPath); + + Directory.CreateDirectory(cabinetFolder); var files = new List(); diff --git a/src/wix/test/WixToolsetTest.CoreIntegration/BundleFixture.cs b/src/wix/test/WixToolsetTest.CoreIntegration/BundleFixture.cs index 77b122da..4ac9c3a4 100644 --- a/src/wix/test/WixToolsetTest.CoreIntegration/BundleFixture.cs +++ b/src/wix/test/WixToolsetTest.CoreIntegration/BundleFixture.cs @@ -8,9 +8,9 @@ namespace WixToolsetTest.CoreIntegration using System.Linq; using System.Text; using System.Xml; + using System.Xml.Linq; using Example.Extension; using WixBuildTools.TestSupport; - using WixToolset.Core; using WixToolset.Core.Burn; using WixToolset.Core.TestPackage; using WixToolset.Data; @@ -529,6 +529,35 @@ namespace WixToolsetTest.CoreIntegration } } + [Fact] + public void CantBuildWithSubfolderContainer() + { + var folder = TestData.Get(@"TestData"); + + using (var fs = new DisposableFileSystem()) + { + var baseFolder = fs.GetFolder(); + var intermediateFolder = Path.Combine(baseFolder, "obj"); + var exePath = Path.Combine(baseFolder, @"bin", "test.exe"); + var containerPath = Path.Combine(baseFolder, "bin", "Data", "c1"); + + var result = WixRunner.Execute(new[] + { + "build", + Path.Combine(folder, "Bundle", "SubfolderContainer.wxs"), + Path.Combine(folder, "BundleWithPackageGroupRef", "Bundle.wxs"), + "-bindpath", Path.Combine(folder, "SimpleBundle", "data"), + "-bindpath", Path.Combine(folder, ".Data"), + "-intermediateFolder", intermediateFolder, + "-o", exePath, + }); + + result.AssertSuccess(); + + Assert.True(File.Exists(containerPath), $"Failed to find external container: {containerPath}"); + } + } + [Fact] public void CantBuildWithUnscheduledPackage() { diff --git a/src/wix/test/WixToolsetTest.CoreIntegration/TestData/Bundle/SubfolderContainer.wxs b/src/wix/test/WixToolsetTest.CoreIntegration/TestData/Bundle/SubfolderContainer.wxs new file mode 100644 index 00000000..abb34533 --- /dev/null +++ b/src/wix/test/WixToolsetTest.CoreIntegration/TestData/Bundle/SubfolderContainer.wxs @@ -0,0 +1,12 @@ + + + + + + + + + + + + -- cgit v1.2.3-55-g6feb