From 5f744a8c7da649721f7022dc174febd79e7e3e14 Mon Sep 17 00:00:00 2001 From: Rob Mensching Date: Sat, 14 Jan 2023 17:29:40 -0800 Subject: Remove extension data after extensions get PreDecompileTables callback Also update Util.wixext decompiler extension to handle the new elements that compile into CustomActions with no additional table data. These exposed the weakness in the decompiler where extension data was removed before extensions got a chance to pre-decompile. Fixes 7151 --- .../WixToolsetTest.Util/UtilExtensionFixture.cs | 43 +++++++++++++++++++++- 1 file changed, 41 insertions(+), 2 deletions(-) (limited to 'src/ext/Util/test/WixToolsetTest.Util/UtilExtensionFixture.cs') diff --git a/src/ext/Util/test/WixToolsetTest.Util/UtilExtensionFixture.cs b/src/ext/Util/test/WixToolsetTest.Util/UtilExtensionFixture.cs index 2b59b2a9..a9b37870 100644 --- a/src/ext/Util/test/WixToolsetTest.Util/UtilExtensionFixture.cs +++ b/src/ext/Util/test/WixToolsetTest.Util/UtilExtensionFixture.cs @@ -9,6 +9,7 @@ namespace WixToolsetTest.Util using WixInternal.Core.TestPackage; using WixToolset.Util; using Xunit; + using System.Xml.Linq; public class UtilExtensionFixture { @@ -62,9 +63,20 @@ namespace WixToolsetTest.Util var output = Path.Combine(folder, "decompile.xml"); build.BuildAndDecompileAndBuild(Build, Decompile, output); - File.Exists(output); - } + var doc = XDocument.Load(output); + var utilElementNames = doc.Descendants() + .Where(e => e.Name.Namespace == "http://wixtoolset.org/schemas/v4/wxs/util") + .Select(e => e.Name.LocalName) + .OrderBy(s => s) + .ToArray(); + WixAssert.CompareLineByLine(new[] + { + "FileShare", + "FileSharePermission", + "User", + }, utilElementNames); + } [Fact] public void CanBuildCloseApplication() @@ -225,11 +237,38 @@ namespace WixToolsetTest.Util "CustomAction:Wix4BroadcastEnvironmentChange_A64\t65\tWix4UtilCA_A64\tWixBroadcastEnvironmentChange\t", "CustomAction:Wix4BroadcastSettingChange_A64\t65\tWix4UtilCA_A64\tWixBroadcastSettingChange\t", "CustomAction:Wix4CheckRebootRequired_A64\t65\tWix4UtilCA_A64\tWixCheckRebootRequired\t", + "CustomAction:Wix4QueryNativeMachine_A64\t257\tWix4UtilCA_A64\tWixQueryNativeMachine\t", "CustomAction:Wix4QueryOsDriverInfo_A64\t257\tWix4UtilCA_A64\tWixQueryOsDriverInfo\t", "CustomAction:Wix4QueryOsInfo_A64\t257\tWix4UtilCA_A64\tWixQueryOsInfo\t", }, results.OrderBy(s => s).ToArray()); } + [Fact] + public void CanBuildAndDecompiileQueries() + { + var folder = TestData.Get(@"TestData\Queries"); + var build = new Builder(folder, typeof(UtilExtensionFactory), new[] { folder }); + var output = Path.Combine(folder, "decompile.xml"); + + build.BuildAndDecompileAndBuild(Build, Decompile, output); + + var doc = XDocument.Load(output); + var utilElementNames = doc.Descendants() + .Where(e => e.Name.Namespace == "http://wixtoolset.org/schemas/v4/wxs/util") + .Select(e => e.Name.LocalName) + .OrderBy(s => s) + .ToArray(); + WixAssert.CompareLineByLine(new[] + { + "BroadcastEnvironmentChange", + "BroadcastSettingChange", + "CheckRebootRequired", + "QueryNativeMachine", + "QueryWindowsDriverInfo", + "QueryWindowsSuiteInfo", + }, utilElementNames); + } + [Fact] public void CanBuildWithXmlConfig() { -- cgit v1.2.3-55-g6feb