@joebigelow / wix-1 / commits / e53c6589

Extract object fields with modularization GUIDs.

Bob Arnson committed Jun 29, 2023 at 21:16 UTC e53c658973fa0ece0b64e7be7ca9ebcb7e05044a
4 files changed +30 -4
src/internal/WixInternal.TestSupport/XunitExtensions/WixAssert.cs
+19 -2
@@ -4,6 +4,7 @@ namespace WixInternal.TestSupport
4 {
5 using System;
6 using System.Collections.Generic;
7 + using System.IO;
8 using System.Linq;
9 using System.Text;
10 using System.Xml.Linq;
@@ -30,8 +31,8 @@ namespace WixInternal.TestSupport
31
32 public static void CompareXml(XContainer xExpected, XContainer xActual)
33 {
33 - 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}"))}");
34 - 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}"))}");
34 + var expecteds = ComparableElements(xExpected);
35 + var actuals = ComparableElements(xActual);
36
37 CompareLineByLine(expecteds.OrderBy(s => s).ToArray(), actuals.OrderBy(s => s).ToArray());
38 }
@@ -44,6 +45,22 @@ namespace WixInternal.TestSupport
45 CompareXml(expectedDoc, actualDoc);
46 }
47
48 + private static IEnumerable<string> ComparableElements(XContainer container)
49 + {
50 + return container.Descendants().Select(x => $"{x.Name.LocalName}:{String.Join(",", x.Attributes().OrderBy(a => a.Name.LocalName).Select(a => $"{a.Name.LocalName}={ComparableAttribute(a)}"))}");
51 + }
52 +
53 + private static string ComparableAttribute(XAttribute attribute)
54 + {
55 + switch (attribute.Name.LocalName)
56 + {
57 + case "SourceFile":
58 + return "<SourceFile>";
59 + default:
60 + return attribute.Value;
61 + }
62 + }
63 +
64 /// <summary>
65 /// Dynamically skips the test.
66 /// Requires that the test was marked with a fact attribute derived from <see cref="WixInternal.TestSupport.XunitExtensions.SkippableFactAttribute" />
src/wix/WixToolset.Core.WindowsInstaller/Unbind/UnbindDatabaseCommand.cs
+8
@@ -146,6 +146,7 @@ namespace WixToolset.Core.WindowsInstaller.Unbind
146 {
147 View validationView = null;
148 string modularizationGuid = null;
149 + string modularizationSuffix = null;
150
151 try
152 {
@@ -204,6 +205,11 @@ namespace WixToolset.Core.WindowsInstaller.Unbind
205 {
206 source = Path.Combine(this.ExportBasePath, tableName, row.GetPrimaryKey('.'));
207
208 + if (!String.IsNullOrEmpty(modularizationSuffix))
209 + {
210 + source += modularizationSuffix;
211 + }
212 +
213 Directory.CreateDirectory(Path.Combine(this.ExportBasePath, tableName));
214
215 using (var fs = this.FileSystem.OpenFile(null, source, FileMode.Create, FileAccess.Write, FileShare.None))
@@ -238,6 +244,8 @@ namespace WixToolset.Core.WindowsInstaller.Unbind
244 if (null == modularizationGuid)
245 {
246 var match = Modularization.Match(value);
247 + modularizationSuffix = match.Value;
248 +
249 if (match.Success)
250 {
251 modularizationGuid = String.Concat('{', match.Value.Substring(1).Replace('_', '-'), '}');
src/wix/test/WixToolsetTest.CoreIntegration/TestData/DecompileTargetDirMergeModule/Expected.wxs
+3 -2
@@ -1,6 +1,7 @@
1 -<?xml version="1.0" encoding="utf-8"?>
1 +<?xml version="1.0" encoding="utf-8"?>
2 <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
3 <Module Codepage="65001" Id="MergeModule1" Language="1033" Version="1.0.0.0" InstallerVersion="200" Guid="{F844F0E3-8CB4-4A0F-973E-31C4F9338382}">
4 + <Binary Id="Binary1" SourceFile="Expected.wxs" />
5 <StandardDirectory Id="ProgramFilesFolder">
6 <Directory Id="WixTestDir" ShortName="7bhhvaai" Name="WiX Toolset Test Directory">
7 <Component Id="ModuleComponent1" Guid="{D86EC5A2-9576-4699-BDC3-00586FF72CBE}" Bitness="always32">
@@ -20,4 +21,4 @@
21 </Component>
22 </StandardDirectory>
23 </Module>
23 -</Wix>
\ No newline at end of file
24 +</Wix>
src/wix/test/WixToolsetTest.CoreIntegration/TestData/DecompileTargetDirMergeModule/MergeModule1.msm
Binary files a/src/wix/test/WixToolsetTest.CoreIntegration/TestData/DecompileTargetDirMergeModule/MergeModule1.msm and b/src/wix/test/WixToolsetTest.CoreIntegration/TestData/DecompileTargetDirMergeModule/MergeModule1.msm differ