From 49f1209035aac1fcfad5dbbe25f7b2306d3be86c Mon Sep 17 00:00:00 2001 From: Rob Mensching Date: Thu, 7 Dec 2017 14:19:05 -0800 Subject: Support MSI backends creating custom tables and remove WixToolset.Data.WindowsInstaller --- .../Example.Extension/ExampleExtensionData.cs | 2 +- .../Example.Extension/ExampleExtensionFactory.cs | 4 +++ .../Example.Extension/ExampleTableDefinitions.cs | 21 ++++++++++++++ .../TestData/Example.Extension/ExampleTuple.cs | 4 +-- .../Example.Extension/ExampleTupleDefinitions.cs | 20 ++++++++++++++ .../ExampleWindowsInstallerBackendExtension.cs | 32 ++++++++++++++++++++++ .../TestData/Example.Extension/TupleDefinitions.cs | 18 ------------ 7 files changed, 80 insertions(+), 21 deletions(-) create mode 100644 src/test/TestData/Example.Extension/ExampleTableDefinitions.cs create mode 100644 src/test/TestData/Example.Extension/ExampleTupleDefinitions.cs create mode 100644 src/test/TestData/Example.Extension/ExampleWindowsInstallerBackendExtension.cs delete mode 100644 src/test/TestData/Example.Extension/TupleDefinitions.cs (limited to 'src/test/TestData') diff --git a/src/test/TestData/Example.Extension/ExampleExtensionData.cs b/src/test/TestData/Example.Extension/ExampleExtensionData.cs index 6b179ea6..724f9eea 100644 --- a/src/test/TestData/Example.Extension/ExampleExtensionData.cs +++ b/src/test/TestData/Example.Extension/ExampleExtensionData.cs @@ -19,7 +19,7 @@ namespace Example.Extension switch (name) { case "Example": - tupleDefinition = TupleDefinitions.Example; + tupleDefinition = ExampleTupleDefinitions.Example; break; default: diff --git a/src/test/TestData/Example.Extension/ExampleExtensionFactory.cs b/src/test/TestData/Example.Extension/ExampleExtensionFactory.cs index b91d06e9..a081b758 100644 --- a/src/test/TestData/Example.Extension/ExampleExtensionFactory.cs +++ b/src/test/TestData/Example.Extension/ExampleExtensionFactory.cs @@ -28,6 +28,10 @@ namespace Example.Extension { extension = new ExampleExtensionData(); } + else if (extensionType == typeof(IWindowsInstallerBackendExtension)) + { + extension = new ExampleWindowsInstallerBackendExtension(); + } else { extension = null; diff --git a/src/test/TestData/Example.Extension/ExampleTableDefinitions.cs b/src/test/TestData/Example.Extension/ExampleTableDefinitions.cs new file mode 100644 index 00000000..870b02e1 --- /dev/null +++ b/src/test/TestData/Example.Extension/ExampleTableDefinitions.cs @@ -0,0 +1,21 @@ +// 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 Example.Extension +{ + using System.Collections.Generic; + using WixToolset.Data.WindowsInstaller; + + public static class ExampleTableDefinitions + { + public static readonly TableDefinition ExampleTable = new TableDefinition( + "Example", + new List + { + new ColumnDefinition("Example", ColumnType.String, 72, true, false, ColumnCategory.Identifier), + new ColumnDefinition("Value", ColumnType.String, 0, false, false, ColumnCategory.Formatted), + } + ); + + public static readonly TableDefinition[] All = new[] { ExampleTable }; + } +} diff --git a/src/test/TestData/Example.Extension/ExampleTuple.cs b/src/test/TestData/Example.Extension/ExampleTuple.cs index f280a5c8..0fc0d82c 100644 --- a/src/test/TestData/Example.Extension/ExampleTuple.cs +++ b/src/test/TestData/Example.Extension/ExampleTuple.cs @@ -12,11 +12,11 @@ namespace Example.Extension public class ExampleTuple : IntermediateTuple { - public ExampleTuple() : base(TupleDefinitions.Example, null, null) + public ExampleTuple() : base(ExampleTupleDefinitions.Example, null, null) { } - public ExampleTuple(SourceLineNumber sourceLineNumber, Identifier id = null) : base(TupleDefinitions.Example, sourceLineNumber, id) + public ExampleTuple(SourceLineNumber sourceLineNumber, Identifier id = null) : base(ExampleTupleDefinitions.Example, sourceLineNumber, id) { } diff --git a/src/test/TestData/Example.Extension/ExampleTupleDefinitions.cs b/src/test/TestData/Example.Extension/ExampleTupleDefinitions.cs new file mode 100644 index 00000000..4775b827 --- /dev/null +++ b/src/test/TestData/Example.Extension/ExampleTupleDefinitions.cs @@ -0,0 +1,20 @@ +// 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 Example.Extension +{ + using WixToolset.Data; + + public static class ExampleTupleDefinitions + { + public const string ExampleName = "Example"; + + public static readonly IntermediateTupleDefinition Example = new IntermediateTupleDefinition( + ExampleName, + new[] + { + new IntermediateFieldDefinition(nameof(ExampleTupleFields.Example), IntermediateFieldType.String), + new IntermediateFieldDefinition(nameof(ExampleTupleFields.Value), IntermediateFieldType.String), + }, + typeof(ExampleTuple)); + } +} diff --git a/src/test/TestData/Example.Extension/ExampleWindowsInstallerBackendExtension.cs b/src/test/TestData/Example.Extension/ExampleWindowsInstallerBackendExtension.cs new file mode 100644 index 00000000..f00a5102 --- /dev/null +++ b/src/test/TestData/Example.Extension/ExampleWindowsInstallerBackendExtension.cs @@ -0,0 +1,32 @@ +// 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 Example.Extension +{ + using WixToolset.Data; + using WixToolset.Data.WindowsInstaller; + using WixToolset.Extensibility; + + internal class ExampleWindowsInstallerBackendExtension : BaseWindowsInstallerBackendExtension + { + public override bool TryAddTupleToOutput(IntermediateTuple tuple, Output output) + { +#if ALTERNATIVE_TO_USING_HELPER + switch (tuple.Definition.Name) + { + case TupleDefinitions.ExampleName: + { + var table = output.EnsureTable(ExampleTableDefinitions.ExampleTable); + var row = table.CreateRow(tuple.SourceLineNumbers); + row[0] = tuple[0].AsString(); + row[1] = tuple[1].AsString(); + } + return true; + } + + return false; +#else + return this.BackendHelper.TryAddTupleToOutputMatchingTableDefinitions(tuple, output, ExampleTableDefinitions.All); +#endif + } + } +} diff --git a/src/test/TestData/Example.Extension/TupleDefinitions.cs b/src/test/TestData/Example.Extension/TupleDefinitions.cs deleted file mode 100644 index 2c320fbc..00000000 --- a/src/test/TestData/Example.Extension/TupleDefinitions.cs +++ /dev/null @@ -1,18 +0,0 @@ -// 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 Example.Extension -{ - using WixToolset.Data; - - public static class TupleDefinitions - { - public static readonly IntermediateTupleDefinition Example = new IntermediateTupleDefinition( - "Example", - new[] - { - new IntermediateFieldDefinition(nameof(ExampleTupleFields.Example), IntermediateFieldType.String), - new IntermediateFieldDefinition(nameof(ExampleTupleFields.Value), IntermediateFieldType.String), - }, - typeof(ExampleTuple)); - } -} -- cgit v1.2.3-55-g6feb