From 6b30680fd7a712b45538c3f0a89d652f0457a893 Mon Sep 17 00:00:00 2001 From: Rob Mensching Date: Fri, 22 May 2020 14:53:27 -0700 Subject: Support merging merge modules --- .../MsiQueryFixture.cs | 50 +++++++++++++++++++++ .../TestData/SimpleMerge/.data/test.msm | Bin 0 -> 24576 bytes .../TestData/SimpleMerge/Package.en-us.wxl | 11 +++++ .../TestData/SimpleMerge/Package.wxs | 24 ++++++++++ .../WixToolsetTest.CoreIntegration.csproj | 3 ++ 5 files changed, 88 insertions(+) create mode 100644 src/test/WixToolsetTest.CoreIntegration/TestData/SimpleMerge/.data/test.msm create mode 100644 src/test/WixToolsetTest.CoreIntegration/TestData/SimpleMerge/Package.en-us.wxl create mode 100644 src/test/WixToolsetTest.CoreIntegration/TestData/SimpleMerge/Package.wxs (limited to 'src/test/WixToolsetTest.CoreIntegration') diff --git a/src/test/WixToolsetTest.CoreIntegration/MsiQueryFixture.cs b/src/test/WixToolsetTest.CoreIntegration/MsiQueryFixture.cs index bb44395f..aa8a0a0d 100644 --- a/src/test/WixToolsetTest.CoreIntegration/MsiQueryFixture.cs +++ b/src/test/WixToolsetTest.CoreIntegration/MsiQueryFixture.cs @@ -8,6 +8,9 @@ namespace WixToolsetTest.CoreIntegration using Example.Extension; using WixBuildTools.TestSupport; using WixToolset.Core.TestPackage; + using WixToolset.Data; + using WixToolset.Data.Tuples; + using WixToolset.Data.WindowsInstaller; using Xunit; public class MsiQueryFixture @@ -1171,5 +1174,52 @@ namespace WixToolsetTest.CoreIntegration }, secureProperties.Substring(prefix.Length).Split(';').OrderBy(p => p)); } } + + [Fact] + public void CanMergeModule() + { + var folder = TestData.Get(@"TestData\SimpleMerge"); + + using (var fs = new DisposableFileSystem()) + { + var intermediateFolder = fs.GetFolder(); + var msiPath = Path.Combine(intermediateFolder, @"bin\test.msi"); + var cabPath = Path.Combine(intermediateFolder, @"bin\cab1.cab"); + + var result = WixRunner.Execute(new[] + { + "build", + Path.Combine(folder, "Package.wxs"), + "-loc", Path.Combine(folder, "Package.en-us.wxl"), + "-bindpath", Path.Combine(folder, ".data"), + "-intermediateFolder", intermediateFolder, + "-o", msiPath + }); + + result.AssertSuccess(); + + Assert.True(File.Exists(msiPath)); + Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\test.wixpdb"))); + + var intermediate = Intermediate.Load(Path.Combine(intermediateFolder, @"bin\test.wixpdb")); + var section = intermediate.Sections.Single(); + Assert.Empty(section.Tuples.OfType()); + + var data = WindowsInstallerData.Load(Path.Combine(intermediateFolder, @"bin\test.wixpdb")); + Assert.Null(data.Tables["File"]); + + var results = Query.QueryDatabase(msiPath, new[] { "File" }); + Assert.Equal(new[] + { + "File:filyIq8rqcxxf903Hsn5K9L0SWV73g.243FB739_4D05_472F_9CFB_EF6B1017B6DE\tModuleComponent.243FB739_4D05_472F_9CFB_EF6B1017B6DE\ttest.txt\t17\t\t\t512\t0" + }, results); + + var files = Query.GetCabinetFiles(cabPath); + Assert.Equal(new[] + { + "filyIq8rqcxxf903Hsn5K9L0SWV73g.243FB739_4D05_472F_9CFB_EF6B1017B6DE" + }, files.Select(f => f.Name).ToArray()); + } + } } } diff --git a/src/test/WixToolsetTest.CoreIntegration/TestData/SimpleMerge/.data/test.msm b/src/test/WixToolsetTest.CoreIntegration/TestData/SimpleMerge/.data/test.msm new file mode 100644 index 00000000..6f179aba Binary files /dev/null and b/src/test/WixToolsetTest.CoreIntegration/TestData/SimpleMerge/.data/test.msm differ diff --git a/src/test/WixToolsetTest.CoreIntegration/TestData/SimpleMerge/Package.en-us.wxl b/src/test/WixToolsetTest.CoreIntegration/TestData/SimpleMerge/Package.en-us.wxl new file mode 100644 index 00000000..38c12ac1 --- /dev/null +++ b/src/test/WixToolsetTest.CoreIntegration/TestData/SimpleMerge/Package.en-us.wxl @@ -0,0 +1,11 @@ + + + + + + A newer version of [ProductName] is already installed. + MsiPackage + + diff --git a/src/test/WixToolsetTest.CoreIntegration/TestData/SimpleMerge/Package.wxs b/src/test/WixToolsetTest.CoreIntegration/TestData/SimpleMerge/Package.wxs new file mode 100644 index 00000000..303e2ba8 --- /dev/null +++ b/src/test/WixToolsetTest.CoreIntegration/TestData/SimpleMerge/Package.wxs @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/test/WixToolsetTest.CoreIntegration/WixToolsetTest.CoreIntegration.csproj b/src/test/WixToolsetTest.CoreIntegration/WixToolsetTest.CoreIntegration.csproj index 0651ec7a..9d2cf1d6 100644 --- a/src/test/WixToolsetTest.CoreIntegration/WixToolsetTest.CoreIntegration.csproj +++ b/src/test/WixToolsetTest.CoreIntegration/WixToolsetTest.CoreIntegration.csproj @@ -77,6 +77,9 @@ + + + -- cgit v1.2.3-55-g6feb