aboutsummaryrefslogtreecommitdiff
path: root/src/WixToolset.Core.TestPackage
diff options
context:
space:
mode:
authorSean Hall <r.sean.hall@gmail.com>2020-03-27 13:54:56 +1000
committerSean Hall <r.sean.hall@gmail.com>2020-03-30 21:30:04 +1000
commit0baf6e26ec7ab2ff0b6ad36e9d44f3d68819b5d6 (patch)
tree1ef577d0246b662f4a8bda0ed935e987f03562a0 /src/WixToolset.Core.TestPackage
parentafbc6889c73d58136cb8851858ca3c17f41dc2c5 (diff)
downloadwix-0baf6e26ec7ab2ff0b6ad36e9d44f3d68819b5d6.tar.gz
wix-0baf6e26ec7ab2ff0b6ad36e9d44f3d68819b5d6.tar.bz2
wix-0baf6e26ec7ab2ff0b6ad36e9d44f3d68819b5d6.zip
Add ability for extensions to create custom bundle searches.
This required creating BundleExtensionData.xml.
Diffstat (limited to 'src/WixToolset.Core.TestPackage')
-rw-r--r--src/WixToolset.Core.TestPackage/BundleExtractor.cs34
-rw-r--r--src/WixToolset.Core.TestPackage/ExtractBAContainerResult.cs32
2 files changed, 66 insertions, 0 deletions
diff --git a/src/WixToolset.Core.TestPackage/BundleExtractor.cs b/src/WixToolset.Core.TestPackage/BundleExtractor.cs
index 3d7b2932..8a56f117 100644
--- a/src/WixToolset.Core.TestPackage/BundleExtractor.cs
+++ b/src/WixToolset.Core.TestPackage/BundleExtractor.cs
@@ -22,11 +22,31 @@ namespace WixToolset.Core.TestPackage
22 { 22 {
23 result.ManifestDocument = LoadBurnManifest(destinationFolderPath); 23 result.ManifestDocument = LoadBurnManifest(destinationFolderPath);
24 result.ManifestNamespaceManager = GetBurnNamespaceManager(result.ManifestDocument, "burn"); 24 result.ManifestNamespaceManager = GetBurnNamespaceManager(result.ManifestDocument, "burn");
25
26 result.BADataDocument = LoadBAData(destinationFolderPath);
27 result.BADataNamespaceManager = GetBADataNamespaceManager(result.BADataDocument, "ba");
28
29 result.BundleExtensionDataDocument = LoadBundleExtensionData(destinationFolderPath);
30 result.BundleExtensionDataNamespaceManager = GetBundleExtensionDataNamespaceManager(result.BundleExtensionDataDocument, "be");
25 } 31 }
26 32
27 return result; 33 return result;
28 } 34 }
29 35
36 public static XmlNamespaceManager GetBADataNamespaceManager(XmlDocument document, string prefix)
37 {
38 var namespaceManager = new XmlNamespaceManager(document.NameTable);
39 namespaceManager.AddNamespace(prefix, BurnCommon.BADataNamespace);
40 return namespaceManager;
41 }
42
43 public static XmlNamespaceManager GetBundleExtensionDataNamespaceManager(XmlDocument document, string prefix)
44 {
45 var namespaceManager = new XmlNamespaceManager(document.NameTable);
46 namespaceManager.AddNamespace(prefix, BurnCommon.BundleExtensionDataNamespace);
47 return namespaceManager;
48 }
49
30 public static XmlNamespaceManager GetBurnNamespaceManager(XmlDocument document, string prefix) 50 public static XmlNamespaceManager GetBurnNamespaceManager(XmlDocument document, string prefix)
31 { 51 {
32 var namespaceManager = new XmlNamespaceManager(document.NameTable); 52 var namespaceManager = new XmlNamespaceManager(document.NameTable);
@@ -34,6 +54,20 @@ namespace WixToolset.Core.TestPackage
34 return namespaceManager; 54 return namespaceManager;
35 } 55 }
36 56
57 public static XmlDocument LoadBAData(string baFolderPath)
58 {
59 var document = new XmlDocument();
60 document.Load(Path.Combine(baFolderPath, BurnCommon.BADataFileName));
61 return document;
62 }
63
64 public static XmlDocument LoadBundleExtensionData(string baFolderPath)
65 {
66 var document = new XmlDocument();
67 document.Load(Path.Combine(baFolderPath, BurnCommon.BundleExtensionDataFileName));
68 return document;
69 }
70
37 public static XmlDocument LoadBurnManifest(string baFolderPath) 71 public static XmlDocument LoadBurnManifest(string baFolderPath)
38 { 72 {
39 var document = new XmlDocument(); 73 var document = new XmlDocument();
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
8 8
9 public class ExtractBAContainerResult 9 public class ExtractBAContainerResult
10 { 10 {
11 public XmlDocument BundleExtensionDataDocument { get; set; }
12 public XmlNamespaceManager BundleExtensionDataNamespaceManager { get; set; }
13 public XmlDocument BADataDocument { get; set; }
14 public XmlNamespaceManager BADataNamespaceManager { get; set; }
11 public XmlDocument ManifestDocument { get; set; } 15 public XmlDocument ManifestDocument { get; set; }
12 public XmlNamespaceManager ManifestNamespaceManager { get; set; } 16 public XmlNamespaceManager ManifestNamespaceManager { get; set; }
13 public bool Success { get; set; } 17 public bool Success { get; set; }
@@ -26,6 +30,34 @@ namespace WixToolset.Core.TestPackage
26 return Path.Combine(extractedBAContainerFolderPath, relativeBAPath); 30 return Path.Combine(extractedBAContainerFolderPath, relativeBAPath);
27 } 31 }
28 32
33 public string GetBundleExtensionFilePath(string extractedBAContainerFolderPath, string extensionId)
34 {
35 var uxPayloads = this.SelectManifestNodes($"/burn:BurnManifest/burn:UX/burn:Payload[@Id='{extensionId}']");
36 var bextPayload = uxPayloads[0];
37 var relativeBextPath = bextPayload.Attributes["FilePath"].Value;
38 return Path.Combine(extractedBAContainerFolderPath, relativeBextPath);
39 }
40
41 /// <summary>
42 ///
43 /// </summary>
44 /// <param name="xpath">elements must have the 'ba' prefix</param>
45 /// <returns></returns>
46 public XmlNodeList SelectBADataNodes(string xpath)
47 {
48 return this.BADataDocument.SelectNodes(xpath, this.BADataNamespaceManager);
49 }
50
51 /// <summary>
52 ///
53 /// </summary>
54 /// <param name="xpath">elements must have the 'be' prefix</param>
55 /// <returns></returns>
56 public XmlNodeList SelectBundleExtensionDataNodes(string xpath)
57 {
58 return this.BundleExtensionDataDocument.SelectNodes(xpath, this.BundleExtensionDataNamespaceManager);
59 }
60
29 /// <summary> 61 /// <summary>
30 /// 62 ///
31 /// </summary> 63 /// </summary>