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