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. --- .../ExtensibilityServices/ParseHelper.cs | 37 ++++++++++++++++++++++ 1 file changed, 37 insertions(+) (limited to 'src/WixToolset.Core/ExtensibilityServices') diff --git a/src/WixToolset.Core/ExtensibilityServices/ParseHelper.cs b/src/WixToolset.Core/ExtensibilityServices/ParseHelper.cs index 7447d420..2a851a21 100644 --- a/src/WixToolset.Core/ExtensibilityServices/ParseHelper.cs +++ b/src/WixToolset.Core/ExtensibilityServices/ParseHelper.cs @@ -260,6 +260,43 @@ namespace WixToolset.Core.ExtensibilityServices section.Tuples.Add(tuple); } + public void CreateWixSearchTuple(IntermediateSection section, SourceLineNumber sourceLineNumbers, string elementName, Identifier id, string variable, string condition, string after, string bundleExtensionId) + { + // TODO: verify variable is not a standard bundle variable + if (variable == null) + { + this.Messaging.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, elementName, "Variable")); + } + + section.Tuples.Add(new WixSearchTuple(sourceLineNumbers, id) + { + Variable = variable, + Condition = condition, + BundleExtensionRef = bundleExtensionId, + }); + + if (after != null) + { + this.CreateSimpleReference(section, sourceLineNumbers, "WixSearch", after); + // TODO: We're currently defaulting to "always run after", which we will need to change... + this.CreateWixSearchRelationTuple(section, sourceLineNumbers, id, after, 2); + } + + if (!String.IsNullOrEmpty(bundleExtensionId)) + { + this.CreateSimpleReference(section, sourceLineNumbers, "WixBundleExtension", bundleExtensionId); + } + } + + public void CreateWixSearchRelationTuple(IntermediateSection section, SourceLineNumber sourceLineNumbers, Identifier id, string parentId, int attributes) + { + section.Tuples.Add(new WixSearchRelationTuple(sourceLineNumbers, id) + { + ParentSearchRef = parentId, + Attributes = attributes, + }); + } + [Obsolete] public IntermediateTuple CreateRow(IntermediateSection section, SourceLineNumber sourceLineNumbers, string tableName, Identifier identifier = null) { -- cgit v1.2.3-55-g6feb