From abfe02f2e31480f2cfb72b3daa641d7e723448d9 Mon Sep 17 00:00:00 2001 From: Sean Hall Date: Sat, 16 May 2020 21:53:44 +1000 Subject: WIXFEAT:6164 Implement DisplayInternalUICondition. --- src/wixext/BalCompiler.cs | 17 +++++++++ src/wixext/Tuples/BalTupleDefinitions.cs | 5 +++ src/wixext/Tuples/WixBalPackageInfoTuple.cs | 55 +++++++++++++++++++++++++++++ src/wixext/bal.xsd | 15 ++++++++ 4 files changed, 92 insertions(+) create mode 100644 src/wixext/Tuples/WixBalPackageInfoTuple.cs (limited to 'src/wixext') diff --git a/src/wixext/BalCompiler.cs b/src/wixext/BalCompiler.cs index dfe29bde..03b74e57 100644 --- a/src/wixext/BalCompiler.cs +++ b/src/wixext/BalCompiler.cs @@ -104,6 +104,23 @@ namespace WixToolset.Bal { switch (attribute.Name.LocalName) { + case "DisplayInternalUICondition": + switch (parentElement.Name.LocalName) + { + case "MsiPackage": + case "MspPackage": + var displayInternalUICondition = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attribute); + section.AddTuple(new WixBalPackageInfoTuple(sourceLineNumbers, new Identifier(AccessModifier.Public, packageId)) + { + PackageId = packageId, + DisplayInternalUICondition = displayInternalUICondition, + }); + break; + default: + this.ParseHelper.UnexpectedAttribute(parentElement, attribute); + break; + } + break; case "PrereqLicenseFile": if (!this.prereqInfoTuplesByPackageId.TryGetValue(packageId, out prereqInfo)) diff --git a/src/wixext/Tuples/BalTupleDefinitions.cs b/src/wixext/Tuples/BalTupleDefinitions.cs index 9a294703..08e7ba2a 100644 --- a/src/wixext/Tuples/BalTupleDefinitions.cs +++ b/src/wixext/Tuples/BalTupleDefinitions.cs @@ -11,6 +11,7 @@ namespace WixToolset.Bal WixBalBAFactoryAssembly, WixBalBAFunctions, WixBalCondition, + WixBalPackageInfo, WixDncOptions, WixMbaPrereqInformation, WixStdbaOptions, @@ -44,6 +45,9 @@ namespace WixToolset.Bal case BalTupleDefinitionType.WixBalCondition: return BalTupleDefinitions.WixBalCondition; + case BalTupleDefinitionType.WixBalPackageInfo: + return BalTupleDefinitions.WixBalPackageInfo; + case BalTupleDefinitionType.WixDncOptions: return BalTupleDefinitions.WixDncOptions; @@ -66,6 +70,7 @@ namespace WixToolset.Bal WixBalBAFactoryAssembly.AddTag(BurnConstants.BootstrapperApplicationDataTupleDefinitionTag); WixBalBAFunctions.AddTag(BurnConstants.BootstrapperApplicationDataTupleDefinitionTag); WixBalCondition.AddTag(BurnConstants.BootstrapperApplicationDataTupleDefinitionTag); + WixBalPackageInfo.AddTag(BurnConstants.BootstrapperApplicationDataTupleDefinitionTag); WixDncOptions.AddTag(BurnConstants.BootstrapperApplicationDataTupleDefinitionTag); WixMbaPrereqInformation.AddTag(BurnConstants.BootstrapperApplicationDataTupleDefinitionTag); WixStdbaOptions.AddTag(BurnConstants.BootstrapperApplicationDataTupleDefinitionTag); diff --git a/src/wixext/Tuples/WixBalPackageInfoTuple.cs b/src/wixext/Tuples/WixBalPackageInfoTuple.cs new file mode 100644 index 00000000..32be3105 --- /dev/null +++ b/src/wixext/Tuples/WixBalPackageInfoTuple.cs @@ -0,0 +1,55 @@ +// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. + +namespace WixToolset.Bal +{ + using WixToolset.Data; + using WixToolset.Bal.Tuples; + + public static partial class BalTupleDefinitions + { + public static readonly IntermediateTupleDefinition WixBalPackageInfo = new IntermediateTupleDefinition( + BalTupleDefinitionType.WixBalPackageInfo.ToString(), + new[] + { + new IntermediateFieldDefinition(nameof(WixBalPackageInfoTupleFields.PackageId), IntermediateFieldType.String), + new IntermediateFieldDefinition(nameof(WixBalPackageInfoTupleFields.DisplayInternalUICondition), IntermediateFieldType.String), + }, + typeof(WixBalPackageInfoTuple)); + } +} + +namespace WixToolset.Bal.Tuples +{ + using WixToolset.Data; + + public enum WixBalPackageInfoTupleFields + { + PackageId, + DisplayInternalUICondition, + } + + public class WixBalPackageInfoTuple : IntermediateTuple + { + public WixBalPackageInfoTuple() : base(BalTupleDefinitions.WixBalPackageInfo, null, null) + { + } + + public WixBalPackageInfoTuple(SourceLineNumber sourceLineNumber, Identifier id = null) : base(BalTupleDefinitions.WixBalPackageInfo, sourceLineNumber, id) + { + } + + public IntermediateField this[WixBalPackageInfoTupleFields index] => this.Fields[(int)index]; + + public string PackageId + { + get => this.Fields[(int)WixBalPackageInfoTupleFields.PackageId].AsString(); + set => this.Set((int)WixBalPackageInfoTupleFields.PackageId, value); + } + + public string DisplayInternalUICondition + { + get => this.Fields[(int)WixBalPackageInfoTupleFields.DisplayInternalUICondition].AsString(); + set => this.Set((int)WixBalPackageInfoTupleFields.DisplayInternalUICondition, value); + } + } +} diff --git a/src/wixext/bal.xsd b/src/wixext/bal.xsd index ee1f8cec..1bec2873 100644 --- a/src/wixext/bal.xsd +++ b/src/wixext/bal.xsd @@ -277,6 +277,21 @@ + + + + Specifies whether the bundle will show the UI authored into the msi package. If not specified or the condition evaluates + to false, all information is routed to the bootstrapper application to provide a unified installation experience. + Otherwise, the UI authored into the msi package will be displayed on top of any bootstrapper application UI. + WixStdBA doesn't support EmbeddedUI. + + + + + + + + -- cgit v1.2.3-55-g6feb