diff --git a/src/internal/WixInternal.TestSupport/XunitExtensions/WixAssert.cs b/src/internal/WixInternal.TestSupport/XunitExtensions/WixAssert.cs index 66f831a13..083e34f58 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 @@ public static void CompareLineByLine(string[] expectedLines, string[] actualLine 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 @@ public static void CompareXml(string expectedPath, string actualPath) 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 9ad936e4c..cfa532698 100644 --- a/src/wix/WixToolset.Core.WindowsInstaller/Unbind/UnbindDatabaseCommand.cs +++ b/src/wix/WixToolset.Core.WindowsInstaller/Unbind/UnbindDatabaseCommand.cs @@ -146,6 +146,7 @@ private string ProcessTables(WindowsInstallerData output, List exportedF { View validationView = null; string modularizationGuid = null; + string modularizationSuffix = null; try { @@ -204,6 +205,11 @@ private string ProcessTables(WindowsInstallerData output, List exportedF { 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 @@ private string ProcessTables(WindowsInstallerData output, List exportedF 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 4a89f56b0..501daabb0 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 a09cab20a..227712a44 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