From 0baf6e26ec7ab2ff0b6ad36e9d44f3d68819b5d6 Mon Sep 17 00:00:00 2001 From: Sean Hall Date: Fri, 27 Mar 2020 13:54:56 +1000 Subject: Add ability for extensions to create custom bundle searches. This required creating BundleExtensionData.xml. --- .../ExtractBAContainerResult.cs | 32 ++++++++++++++++++++++ 1 file changed, 32 insertions(+) (limited to 'src/WixToolset.Core.TestPackage/ExtractBAContainerResult.cs') diff --git a/src/WixToolset.Core.TestPackage/ExtractBAContainerResult.cs b/src/WixToolset.Core.TestPackage/ExtractBAContainerResult.cs index 6d2ea943..63d7bb31 100644 --- a/src/WixToolset.Core.TestPackage/ExtractBAContainerResult.cs +++ b/src/WixToolset.Core.TestPackage/ExtractBAContainerResult.cs @@ -8,6 +8,10 @@ namespace WixToolset.Core.TestPackage public class ExtractBAContainerResult { + public XmlDocument BundleExtensionDataDocument { get; set; } + public XmlNamespaceManager BundleExtensionDataNamespaceManager { get; set; } + public XmlDocument BADataDocument { get; set; } + public XmlNamespaceManager BADataNamespaceManager { get; set; } public XmlDocument ManifestDocument { get; set; } public XmlNamespaceManager ManifestNamespaceManager { get; set; } public bool Success { get; set; } @@ -26,6 +30,34 @@ namespace WixToolset.Core.TestPackage return Path.Combine(extractedBAContainerFolderPath, relativeBAPath); } + public string GetBundleExtensionFilePath(string extractedBAContainerFolderPath, string extensionId) + { + var uxPayloads = this.SelectManifestNodes($"/burn:BurnManifest/burn:UX/burn:Payload[@Id='{extensionId}']"); + var bextPayload = uxPayloads[0]; + var relativeBextPath = bextPayload.Attributes["FilePath"].Value; + return Path.Combine(extractedBAContainerFolderPath, relativeBextPath); + } + + /// + /// + /// + /// elements must have the 'ba' prefix + /// + public XmlNodeList SelectBADataNodes(string xpath) + { + return this.BADataDocument.SelectNodes(xpath, this.BADataNamespaceManager); + } + + /// + /// + /// + /// elements must have the 'be' prefix + /// + public XmlNodeList SelectBundleExtensionDataNodes(string xpath) + { + return this.BundleExtensionDataDocument.SelectNodes(xpath, this.BundleExtensionDataNamespaceManager); + } + /// /// /// -- cgit v1.2.3-55-g6feb