From fddc154029b838c2fd83a2eee09d53468dd4cf08 Mon Sep 17 00:00:00 2001 From: Bob Arnson Date: Mon, 19 May 2025 22:17:08 -0400 Subject: Send all tables to extension decompilers. Also fix Firewall decompiler to decompile all possible Firewall tables. Fixes https://github.com/wixtoolset/issues/issues/9070 --- .../FirewallExtensionFixture.cs | 33 +++++++++++++++++++ .../TestData/DecompileWix4Firewall/Firewall4.msi | Bin 0 -> 196608 bytes .../ReferenceSource/Firewall4.wixproj | 6 ++++ .../ReferenceSource/Firewall4.wxs | 36 +++++++++++++++++++++ 4 files changed, 75 insertions(+) create mode 100644 src/ext/Firewall/test/WixToolsetTest.Firewall/TestData/DecompileWix4Firewall/Firewall4.msi create mode 100644 src/ext/Firewall/test/WixToolsetTest.Firewall/TestData/DecompileWix4Firewall/ReferenceSource/Firewall4.wixproj create mode 100644 src/ext/Firewall/test/WixToolsetTest.Firewall/TestData/DecompileWix4Firewall/ReferenceSource/Firewall4.wxs (limited to 'src/ext/Firewall/test') diff --git a/src/ext/Firewall/test/WixToolsetTest.Firewall/FirewallExtensionFixture.cs b/src/ext/Firewall/test/WixToolsetTest.Firewall/FirewallExtensionFixture.cs index 4b9aecd7..9b4cb2b1 100644 --- a/src/ext/Firewall/test/WixToolsetTest.Firewall/FirewallExtensionFixture.cs +++ b/src/ext/Firewall/test/WixToolsetTest.Firewall/FirewallExtensionFixture.cs @@ -621,6 +621,39 @@ namespace WixToolsetTest.Firewall }, locals.ToArray()); } + [TestMethod] + public void CanDecompileWix4FirewallPackage() + { + var folder = TestData.Get(@"TestData\DecompileWix4Firewall"); + var output = Path.Combine(folder, "DecompiledWix4Firewall.xml"); + + var result = WixRunner.Execute( + "msi", + "decompile", + "-ext", Path.GetFullPath(typeof(FirewallExtensionFactory).Assembly.Location), + Path.Combine(folder, "Firewall4.msi"), + "-o", output + ); + result.AssertSuccess(); + + var doc = XDocument.Load(output); + var actual = doc.Descendants() + .Where(e => e.Name.Namespace == "http://wixtoolset.org/schemas/v4/wxs/firewall") + .Select(fe => new { Name = fe.Name.LocalName, Attributes = fe.Attributes().Select(a => $"{a.Name.LocalName}={a.Value}").ToArray() }) + .ToArray(); + + WixAssert.CompareLineByLine(new[] + { + "FirewallException", + "RemoteAddress", + "RemoteAddress", + "RemoteAddress", + "RemoteAddress", + "RemoteAddress", + "FirewallException", + }, actual.Select(a => a.Name).ToArray()); + } + private static void Build(string[] args) { var result = WixRunner.Execute(args); diff --git a/src/ext/Firewall/test/WixToolsetTest.Firewall/TestData/DecompileWix4Firewall/Firewall4.msi b/src/ext/Firewall/test/WixToolsetTest.Firewall/TestData/DecompileWix4Firewall/Firewall4.msi new file mode 100644 index 00000000..1dde5df4 Binary files /dev/null and b/src/ext/Firewall/test/WixToolsetTest.Firewall/TestData/DecompileWix4Firewall/Firewall4.msi differ diff --git a/src/ext/Firewall/test/WixToolsetTest.Firewall/TestData/DecompileWix4Firewall/ReferenceSource/Firewall4.wixproj b/src/ext/Firewall/test/WixToolsetTest.Firewall/TestData/DecompileWix4Firewall/ReferenceSource/Firewall4.wixproj new file mode 100644 index 00000000..0098d7ac --- /dev/null +++ b/src/ext/Firewall/test/WixToolsetTest.Firewall/TestData/DecompileWix4Firewall/ReferenceSource/Firewall4.wixproj @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/ext/Firewall/test/WixToolsetTest.Firewall/TestData/DecompileWix4Firewall/ReferenceSource/Firewall4.wxs b/src/ext/Firewall/test/WixToolsetTest.Firewall/TestData/DecompileWix4Firewall/ReferenceSource/Firewall4.wxs new file mode 100644 index 00000000..8a89ad6c --- /dev/null +++ b/src/ext/Firewall/test/WixToolsetTest.Firewall/TestData/DecompileWix4Firewall/ReferenceSource/Firewall4.wxs @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -- cgit v1.2.3-55-g6feb