From 22dadeafca72b87e75ed697162fa33ccc85723dd Mon Sep 17 00:00:00 2001 From: Bob Arnson Date: Thu, 29 Jun 2023 21:16:35 -0400 Subject: Extract object fields with modularization GUIDs. --- .../XunitExtensions/WixAssert.cs | 21 +++++++++++++++++++-- .../Unbind/UnbindDatabaseCommand.cs | 8 ++++++++ .../DecompileTargetDirMergeModule/Expected.wxs | 5 +++-- .../DecompileTargetDirMergeModule/MergeModule1.msm | Bin 32768 -> 32768 bytes 4 files changed, 30 insertions(+), 4 deletions(-) diff --git a/src/internal/WixInternal.TestSupport/XunitExtensions/WixAssert.cs b/src/internal/WixInternal.TestSupport/XunitExtensions/WixAssert.cs index 66f831a1..083e34f5 100644 --- a/src/internal/WixInternal.TestSupport/XunitExtensions/WixAssert.cs +++ b/src/internal/WixInternal.TestSupport/XunitExtensions/WixAssert.cs @@ -4,6 +4,7 @@ namespace WixInternal.TestSupport { using System; using System.Collections.Generic; + using System.IO; using System.Linq; using System.Text; using System.Xml.Linq; @@ -30,8 +31,8 @@ namespace WixInternal.TestSupport public static void CompareXml(XContainer xExpected, XContainer xActual) { - var expecteds = xExpected.Descendants().Select(x => $"{x.Name.LocalName}:{String.Join(",", x.Attributes().OrderBy(a => a.Name.LocalName).Select(a => $"{a.Name.LocalName}={a.Value}"))}"); - var actuals = xActual.Descendants().Select(x => $"{x.Name.LocalName}:{String.Join(",", x.Attributes().OrderBy(a => a.Name.LocalName).Select(a => $"{a.Name.LocalName}={a.Value}"))}"); + var expecteds = ComparableElements(xExpected); + var actuals = ComparableElements(xActual); CompareLineByLine(expecteds.OrderBy(s => s).ToArray(), actuals.OrderBy(s => s).ToArray()); } @@ -44,6 +45,22 @@ namespace WixInternal.TestSupport CompareXml(expectedDoc, actualDoc); } + private static IEnumerable ComparableElements(XContainer container) + { + return container.Descendants().Select(x => $"{x.Name.LocalName}:{String.Join(",", x.Attributes().OrderBy(a => a.Name.LocalName).Select(a => $"{a.Name.LocalName}={ComparableAttribute(a)}"))}"); + } + + private static string ComparableAttribute(XAttribute attribute) + { + switch (attribute.Name.LocalName) + { + case "SourceFile": + return ""; + default: + return attribute.Value; + } + } + /// /// Dynamically skips the test. /// Requires that the test was marked with a fact attribute derived from diff --git a/src/wix/WixToolset.Core.WindowsInstaller/Unbind/UnbindDatabaseCommand.cs b/src/wix/WixToolset.Core.WindowsInstaller/Unbind/UnbindDatabaseCommand.cs index 9ad936e4..cfa53269 100644 --- a/src/wix/WixToolset.Core.WindowsInstaller/Unbind/UnbindDatabaseCommand.cs +++ b/src/wix/WixToolset.Core.WindowsInstaller/Unbind/UnbindDatabaseCommand.cs @@ -146,6 +146,7 @@ namespace WixToolset.Core.WindowsInstaller.Unbind { View validationView = null; string modularizationGuid = null; + string modularizationSuffix = null; try { @@ -204,6 +205,11 @@ namespace WixToolset.Core.WindowsInstaller.Unbind { source = Path.Combine(this.ExportBasePath, tableName, row.GetPrimaryKey('.')); + if (!String.IsNullOrEmpty(modularizationSuffix)) + { + source += modularizationSuffix; + } + Directory.CreateDirectory(Path.Combine(this.ExportBasePath, tableName)); using (var fs = this.FileSystem.OpenFile(null, source, FileMode.Create, FileAccess.Write, FileShare.None)) @@ -238,6 +244,8 @@ namespace WixToolset.Core.WindowsInstaller.Unbind if (null == modularizationGuid) { var match = Modularization.Match(value); + modularizationSuffix = match.Value; + if (match.Success) { modularizationGuid = String.Concat('{', match.Value.Substring(1).Replace('_', '-'), '}'); diff --git a/src/wix/test/WixToolsetTest.CoreIntegration/TestData/DecompileTargetDirMergeModule/Expected.wxs b/src/wix/test/WixToolsetTest.CoreIntegration/TestData/DecompileTargetDirMergeModule/Expected.wxs index 4a89f56b..501daabb 100644 --- a/src/wix/test/WixToolsetTest.CoreIntegration/TestData/DecompileTargetDirMergeModule/Expected.wxs +++ b/src/wix/test/WixToolsetTest.CoreIntegration/TestData/DecompileTargetDirMergeModule/Expected.wxs @@ -1,6 +1,7 @@ - + + @@ -20,4 +21,4 @@ - \ No newline at end of file + diff --git a/src/wix/test/WixToolsetTest.CoreIntegration/TestData/DecompileTargetDirMergeModule/MergeModule1.msm b/src/wix/test/WixToolsetTest.CoreIntegration/TestData/DecompileTargetDirMergeModule/MergeModule1.msm index a09cab20..227712a4 100644 Binary files a/src/wix/test/WixToolsetTest.CoreIntegration/TestData/DecompileTargetDirMergeModule/MergeModule1.msm and b/src/wix/test/WixToolsetTest.CoreIntegration/TestData/DecompileTargetDirMergeModule/MergeModule1.msm differ -- cgit v1.2.3-55-g6feb