aboutsummaryrefslogtreecommitdiff
path: root/src/ext/VisualStudio/wixext
diff options
context:
space:
mode:
authorBob Arnson <bob@firegiant.com>2021-12-22 23:52:40 -0500
committerBob Arnson <github@bobs.org>2021-12-23 12:32:16 -0500
commitb9c712f26d921f7ffe0509d1cc45456680e8139f (patch)
tree0cb80095c6c9ffe0c01ab9a723c25fd228a48649 /src/ext/VisualStudio/wixext
parent2f744bf58cc4edb5a712bfff8e7e42baba81768d (diff)
downloadwix-b9c712f26d921f7ffe0509d1cc45456680e8139f.tar.gz
wix-b9c712f26d921f7ffe0509d1cc45456680e8139f.tar.bz2
wix-b9c712f26d921f7ffe0509d1cc45456680e8139f.zip
Version extension ids.
https://github.com/wixtoolset/issues/issues/5933 - Add support for detecting VS2022. - Add x64 custom actions. - Remove ancient Help 2.0 support. - Update WixCop to add the new element to trigger custom action.
Diffstat (limited to 'src/ext/VisualStudio/wixext')
-rw-r--r--src/ext/VisualStudio/wixext/Symbols/HelpFileSymbol.cs95
-rw-r--r--src/ext/VisualStudio/wixext/Symbols/HelpFileToNamespaceSymbol.cs55
-rw-r--r--src/ext/VisualStudio/wixext/Symbols/HelpFilterSymbol.cs55
-rw-r--r--src/ext/VisualStudio/wixext/Symbols/HelpFilterToNamespaceSymbol.cs55
-rw-r--r--src/ext/VisualStudio/wixext/Symbols/HelpNamespaceSymbol.cs63
-rw-r--r--src/ext/VisualStudio/wixext/Symbols/HelpPluginSymbol.cs79
-rw-r--r--src/ext/VisualStudio/wixext/Symbols/VSSymbolDefinitions.cs59
-rw-r--r--src/ext/VisualStudio/wixext/VSCompiler.cs508
-rw-r--r--src/ext/VisualStudio/wixext/VSExtensionData.cs6
-rw-r--r--src/ext/VisualStudio/wixext/VSExtensionFactory.cs1
-rw-r--r--src/ext/VisualStudio/wixext/VSTableDefinitions.cs97
-rw-r--r--src/ext/VisualStudio/wixext/VSWindowsInstallerBackendBinderExtension.cs13
12 files changed, 5 insertions, 1081 deletions
diff --git a/src/ext/VisualStudio/wixext/Symbols/HelpFileSymbol.cs b/src/ext/VisualStudio/wixext/Symbols/HelpFileSymbol.cs
deleted file mode 100644
index 8078f4ab..00000000
--- a/src/ext/VisualStudio/wixext/Symbols/HelpFileSymbol.cs
+++ /dev/null
@@ -1,95 +0,0 @@
1// 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.
2
3namespace WixToolset.VisualStudio
4{
5 using WixToolset.Data;
6 using WixToolset.VisualStudio.Symbols;
7
8 public static partial class VSSymbolDefinitions
9 {
10 public static readonly IntermediateSymbolDefinition HelpFile = new IntermediateSymbolDefinition(
11 VSSymbolDefinitionType.HelpFile.ToString(),
12 new[]
13 {
14 new IntermediateFieldDefinition(nameof(HelpFileSymbolFields.HelpFileName), IntermediateFieldType.String),
15 new IntermediateFieldDefinition(nameof(HelpFileSymbolFields.LangID), IntermediateFieldType.Number),
16 new IntermediateFieldDefinition(nameof(HelpFileSymbolFields.HxSFileRef), IntermediateFieldType.String),
17 new IntermediateFieldDefinition(nameof(HelpFileSymbolFields.HxIFileRef), IntermediateFieldType.String),
18 new IntermediateFieldDefinition(nameof(HelpFileSymbolFields.HxQFileRef), IntermediateFieldType.String),
19 new IntermediateFieldDefinition(nameof(HelpFileSymbolFields.HxRFileRef), IntermediateFieldType.String),
20 new IntermediateFieldDefinition(nameof(HelpFileSymbolFields.SamplesFileRef), IntermediateFieldType.String),
21 },
22 typeof(HelpFileSymbol));
23 }
24}
25
26namespace WixToolset.VisualStudio.Symbols
27{
28 using WixToolset.Data;
29
30 public enum HelpFileSymbolFields
31 {
32 HelpFileName,
33 LangID,
34 HxSFileRef,
35 HxIFileRef,
36 HxQFileRef,
37 HxRFileRef,
38 SamplesFileRef,
39 }
40
41 public class HelpFileSymbol : IntermediateSymbol
42 {
43 public HelpFileSymbol() : base(VSSymbolDefinitions.HelpFile, null, null)
44 {
45 }
46
47 public HelpFileSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(VSSymbolDefinitions.HelpFile, sourceLineNumber, id)
48 {
49 }
50
51 public IntermediateField this[HelpFileSymbolFields index] => this.Fields[(int)index];
52
53 public string HelpFileName
54 {
55 get => this.Fields[(int)HelpFileSymbolFields.HelpFileName].AsString();
56 set => this.Set((int)HelpFileSymbolFields.HelpFileName, value);
57 }
58
59 public int? LangID
60 {
61 get => this.Fields[(int)HelpFileSymbolFields.LangID].AsNullableNumber();
62 set => this.Set((int)HelpFileSymbolFields.LangID, value);
63 }
64
65 public string HxSFileRef
66 {
67 get => this.Fields[(int)HelpFileSymbolFields.HxSFileRef].AsString();
68 set => this.Set((int)HelpFileSymbolFields.HxSFileRef, value);
69 }
70
71 public string HxIFileRef
72 {
73 get => this.Fields[(int)HelpFileSymbolFields.HxIFileRef].AsString();
74 set => this.Set((int)HelpFileSymbolFields.HxIFileRef, value);
75 }
76
77 public string HxQFileRef
78 {
79 get => this.Fields[(int)HelpFileSymbolFields.HxQFileRef].AsString();
80 set => this.Set((int)HelpFileSymbolFields.HxQFileRef, value);
81 }
82
83 public string HxRFileRef
84 {
85 get => this.Fields[(int)HelpFileSymbolFields.HxRFileRef].AsString();
86 set => this.Set((int)HelpFileSymbolFields.HxRFileRef, value);
87 }
88
89 public string SamplesFileRef
90 {
91 get => this.Fields[(int)HelpFileSymbolFields.SamplesFileRef].AsString();
92 set => this.Set((int)HelpFileSymbolFields.SamplesFileRef, value);
93 }
94 }
95} \ No newline at end of file
diff --git a/src/ext/VisualStudio/wixext/Symbols/HelpFileToNamespaceSymbol.cs b/src/ext/VisualStudio/wixext/Symbols/HelpFileToNamespaceSymbol.cs
deleted file mode 100644
index f18d6701..00000000
--- a/src/ext/VisualStudio/wixext/Symbols/HelpFileToNamespaceSymbol.cs
+++ /dev/null
@@ -1,55 +0,0 @@
1// 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.
2
3namespace WixToolset.VisualStudio
4{
5 using WixToolset.Data;
6 using WixToolset.VisualStudio.Symbols;
7
8 public static partial class VSSymbolDefinitions
9 {
10 public static readonly IntermediateSymbolDefinition HelpFileToNamespace = new IntermediateSymbolDefinition(
11 VSSymbolDefinitionType.HelpFileToNamespace.ToString(),
12 new[]
13 {
14 new IntermediateFieldDefinition(nameof(HelpFileToNamespaceSymbolFields.HelpFileRef), IntermediateFieldType.String),
15 new IntermediateFieldDefinition(nameof(HelpFileToNamespaceSymbolFields.HelpNamespaceRef), IntermediateFieldType.String),
16 },
17 typeof(HelpFileToNamespaceSymbol));
18 }
19}
20
21namespace WixToolset.VisualStudio.Symbols
22{
23 using WixToolset.Data;
24
25 public enum HelpFileToNamespaceSymbolFields
26 {
27 HelpFileRef,
28 HelpNamespaceRef,
29 }
30
31 public class HelpFileToNamespaceSymbol : IntermediateSymbol
32 {
33 public HelpFileToNamespaceSymbol() : base(VSSymbolDefinitions.HelpFileToNamespace, null, null)
34 {
35 }
36
37 public HelpFileToNamespaceSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(VSSymbolDefinitions.HelpFileToNamespace, sourceLineNumber, id)
38 {
39 }
40
41 public IntermediateField this[HelpFileToNamespaceSymbolFields index] => this.Fields[(int)index];
42
43 public string HelpFileRef
44 {
45 get => this.Fields[(int)HelpFileToNamespaceSymbolFields.HelpFileRef].AsString();
46 set => this.Set((int)HelpFileToNamespaceSymbolFields.HelpFileRef, value);
47 }
48
49 public string HelpNamespaceRef
50 {
51 get => this.Fields[(int)HelpFileToNamespaceSymbolFields.HelpNamespaceRef].AsString();
52 set => this.Set((int)HelpFileToNamespaceSymbolFields.HelpNamespaceRef, value);
53 }
54 }
55} \ No newline at end of file
diff --git a/src/ext/VisualStudio/wixext/Symbols/HelpFilterSymbol.cs b/src/ext/VisualStudio/wixext/Symbols/HelpFilterSymbol.cs
deleted file mode 100644
index 9deb47d0..00000000
--- a/src/ext/VisualStudio/wixext/Symbols/HelpFilterSymbol.cs
+++ /dev/null
@@ -1,55 +0,0 @@
1// 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.
2
3namespace WixToolset.VisualStudio
4{
5 using WixToolset.Data;
6 using WixToolset.VisualStudio.Symbols;
7
8 public static partial class VSSymbolDefinitions
9 {
10 public static readonly IntermediateSymbolDefinition HelpFilter = new IntermediateSymbolDefinition(
11 VSSymbolDefinitionType.HelpFilter.ToString(),
12 new[]
13 {
14 new IntermediateFieldDefinition(nameof(HelpFilterSymbolFields.Description), IntermediateFieldType.String),
15 new IntermediateFieldDefinition(nameof(HelpFilterSymbolFields.QueryString), IntermediateFieldType.String),
16 },
17 typeof(HelpFilterSymbol));
18 }
19}
20
21namespace WixToolset.VisualStudio.Symbols
22{
23 using WixToolset.Data;
24
25 public enum HelpFilterSymbolFields
26 {
27 Description,
28 QueryString,
29 }
30
31 public class HelpFilterSymbol : IntermediateSymbol
32 {
33 public HelpFilterSymbol() : base(VSSymbolDefinitions.HelpFilter, null, null)
34 {
35 }
36
37 public HelpFilterSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(VSSymbolDefinitions.HelpFilter, sourceLineNumber, id)
38 {
39 }
40
41 public IntermediateField this[HelpFilterSymbolFields index] => this.Fields[(int)index];
42
43 public string Description
44 {
45 get => this.Fields[(int)HelpFilterSymbolFields.Description].AsString();
46 set => this.Set((int)HelpFilterSymbolFields.Description, value);
47 }
48
49 public string QueryString
50 {
51 get => this.Fields[(int)HelpFilterSymbolFields.QueryString].AsString();
52 set => this.Set((int)HelpFilterSymbolFields.QueryString, value);
53 }
54 }
55} \ No newline at end of file
diff --git a/src/ext/VisualStudio/wixext/Symbols/HelpFilterToNamespaceSymbol.cs b/src/ext/VisualStudio/wixext/Symbols/HelpFilterToNamespaceSymbol.cs
deleted file mode 100644
index f3d21289..00000000
--- a/src/ext/VisualStudio/wixext/Symbols/HelpFilterToNamespaceSymbol.cs
+++ /dev/null
@@ -1,55 +0,0 @@
1// 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.
2
3namespace WixToolset.VisualStudio
4{
5 using WixToolset.Data;
6 using WixToolset.VisualStudio.Symbols;
7
8 public static partial class VSSymbolDefinitions
9 {
10 public static readonly IntermediateSymbolDefinition HelpFilterToNamespace = new IntermediateSymbolDefinition(
11 VSSymbolDefinitionType.HelpFilterToNamespace.ToString(),
12 new[]
13 {
14 new IntermediateFieldDefinition(nameof(HelpFilterToNamespaceSymbolFields.HelpFilterRef), IntermediateFieldType.String),
15 new IntermediateFieldDefinition(nameof(HelpFilterToNamespaceSymbolFields.HelpNamespaceRef), IntermediateFieldType.String),
16 },
17 typeof(HelpFilterToNamespaceSymbol));
18 }
19}
20
21namespace WixToolset.VisualStudio.Symbols
22{
23 using WixToolset.Data;
24
25 public enum HelpFilterToNamespaceSymbolFields
26 {
27 HelpFilterRef,
28 HelpNamespaceRef,
29 }
30
31 public class HelpFilterToNamespaceSymbol : IntermediateSymbol
32 {
33 public HelpFilterToNamespaceSymbol() : base(VSSymbolDefinitions.HelpFilterToNamespace, null, null)
34 {
35 }
36
37 public HelpFilterToNamespaceSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(VSSymbolDefinitions.HelpFilterToNamespace, sourceLineNumber, id)
38 {
39 }
40
41 public IntermediateField this[HelpFilterToNamespaceSymbolFields index] => this.Fields[(int)index];
42
43 public string HelpFilterRef
44 {
45 get => this.Fields[(int)HelpFilterToNamespaceSymbolFields.HelpFilterRef].AsString();
46 set => this.Set((int)HelpFilterToNamespaceSymbolFields.HelpFilterRef, value);
47 }
48
49 public string HelpNamespaceRef
50 {
51 get => this.Fields[(int)HelpFilterToNamespaceSymbolFields.HelpNamespaceRef].AsString();
52 set => this.Set((int)HelpFilterToNamespaceSymbolFields.HelpNamespaceRef, value);
53 }
54 }
55} \ No newline at end of file
diff --git a/src/ext/VisualStudio/wixext/Symbols/HelpNamespaceSymbol.cs b/src/ext/VisualStudio/wixext/Symbols/HelpNamespaceSymbol.cs
deleted file mode 100644
index 8d2c2f80..00000000
--- a/src/ext/VisualStudio/wixext/Symbols/HelpNamespaceSymbol.cs
+++ /dev/null
@@ -1,63 +0,0 @@
1// 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.
2
3namespace WixToolset.VisualStudio
4{
5 using WixToolset.Data;
6 using WixToolset.VisualStudio.Symbols;
7
8 public static partial class VSSymbolDefinitions
9 {
10 public static readonly IntermediateSymbolDefinition HelpNamespace = new IntermediateSymbolDefinition(
11 VSSymbolDefinitionType.HelpNamespace.ToString(),
12 new[]
13 {
14 new IntermediateFieldDefinition(nameof(HelpNamespaceSymbolFields.NamespaceName), IntermediateFieldType.String),
15 new IntermediateFieldDefinition(nameof(HelpNamespaceSymbolFields.CollectionFileRef), IntermediateFieldType.String),
16 new IntermediateFieldDefinition(nameof(HelpNamespaceSymbolFields.Description), IntermediateFieldType.String),
17 },
18 typeof(HelpNamespaceSymbol));
19 }
20}
21
22namespace WixToolset.VisualStudio.Symbols
23{
24 using WixToolset.Data;
25
26 public enum HelpNamespaceSymbolFields
27 {
28 NamespaceName,
29 CollectionFileRef,
30 Description,
31 }
32
33 public class HelpNamespaceSymbol : IntermediateSymbol
34 {
35 public HelpNamespaceSymbol() : base(VSSymbolDefinitions.HelpNamespace, null, null)
36 {
37 }
38
39 public HelpNamespaceSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(VSSymbolDefinitions.HelpNamespace, sourceLineNumber, id)
40 {
41 }
42
43 public IntermediateField this[HelpNamespaceSymbolFields index] => this.Fields[(int)index];
44
45 public string NamespaceName
46 {
47 get => this.Fields[(int)HelpNamespaceSymbolFields.NamespaceName].AsString();
48 set => this.Set((int)HelpNamespaceSymbolFields.NamespaceName, value);
49 }
50
51 public string CollectionFileRef
52 {
53 get => this.Fields[(int)HelpNamespaceSymbolFields.CollectionFileRef].AsString();
54 set => this.Set((int)HelpNamespaceSymbolFields.CollectionFileRef, value);
55 }
56
57 public string Description
58 {
59 get => this.Fields[(int)HelpNamespaceSymbolFields.Description].AsString();
60 set => this.Set((int)HelpNamespaceSymbolFields.Description, value);
61 }
62 }
63} \ No newline at end of file
diff --git a/src/ext/VisualStudio/wixext/Symbols/HelpPluginSymbol.cs b/src/ext/VisualStudio/wixext/Symbols/HelpPluginSymbol.cs
deleted file mode 100644
index a452fbd5..00000000
--- a/src/ext/VisualStudio/wixext/Symbols/HelpPluginSymbol.cs
+++ /dev/null
@@ -1,79 +0,0 @@
1// 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.
2
3namespace WixToolset.VisualStudio
4{
5 using WixToolset.Data;
6 using WixToolset.VisualStudio.Symbols;
7
8 public static partial class VSSymbolDefinitions
9 {
10 public static readonly IntermediateSymbolDefinition HelpPlugin = new IntermediateSymbolDefinition(
11 VSSymbolDefinitionType.HelpPlugin.ToString(),
12 new[]
13 {
14 new IntermediateFieldDefinition(nameof(HelpPluginSymbolFields.HelpNamespaceRef), IntermediateFieldType.String),
15 new IntermediateFieldDefinition(nameof(HelpPluginSymbolFields.ParentHelpNamespaceRef), IntermediateFieldType.String),
16 new IntermediateFieldDefinition(nameof(HelpPluginSymbolFields.HxTFileRef), IntermediateFieldType.String),
17 new IntermediateFieldDefinition(nameof(HelpPluginSymbolFields.HxAFileRef), IntermediateFieldType.String),
18 new IntermediateFieldDefinition(nameof(HelpPluginSymbolFields.ParentHxTFileRef), IntermediateFieldType.String),
19 },
20 typeof(HelpPluginSymbol));
21 }
22}
23
24namespace WixToolset.VisualStudio.Symbols
25{
26 using WixToolset.Data;
27
28 public enum HelpPluginSymbolFields
29 {
30 HelpNamespaceRef,
31 ParentHelpNamespaceRef,
32 HxTFileRef,
33 HxAFileRef,
34 ParentHxTFileRef,
35 }
36
37 public class HelpPluginSymbol : IntermediateSymbol
38 {
39 public HelpPluginSymbol() : base(VSSymbolDefinitions.HelpPlugin, null, null)
40 {
41 }
42
43 public HelpPluginSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(VSSymbolDefinitions.HelpPlugin, sourceLineNumber, id)
44 {
45 }
46
47 public IntermediateField this[HelpPluginSymbolFields index] => this.Fields[(int)index];
48
49 public string HelpNamespaceRef
50 {
51 get => this.Fields[(int)HelpPluginSymbolFields.HelpNamespaceRef].AsString();
52 set => this.Set((int)HelpPluginSymbolFields.HelpNamespaceRef, value);
53 }
54
55 public string ParentHelpNamespaceRef
56 {
57 get => this.Fields[(int)HelpPluginSymbolFields.ParentHelpNamespaceRef].AsString();
58 set => this.Set((int)HelpPluginSymbolFields.ParentHelpNamespaceRef, value);
59 }
60
61 public string HxTFileRef
62 {
63 get => this.Fields[(int)HelpPluginSymbolFields.HxTFileRef].AsString();
64 set => this.Set((int)HelpPluginSymbolFields.HxTFileRef, value);
65 }
66
67 public string HxAFileRef
68 {
69 get => this.Fields[(int)HelpPluginSymbolFields.HxAFileRef].AsString();
70 set => this.Set((int)HelpPluginSymbolFields.HxAFileRef, value);
71 }
72
73 public string ParentHxTFileRef
74 {
75 get => this.Fields[(int)HelpPluginSymbolFields.ParentHxTFileRef].AsString();
76 set => this.Set((int)HelpPluginSymbolFields.ParentHxTFileRef, value);
77 }
78 }
79} \ No newline at end of file
diff --git a/src/ext/VisualStudio/wixext/Symbols/VSSymbolDefinitions.cs b/src/ext/VisualStudio/wixext/Symbols/VSSymbolDefinitions.cs
deleted file mode 100644
index cea6a2b6..00000000
--- a/src/ext/VisualStudio/wixext/Symbols/VSSymbolDefinitions.cs
+++ /dev/null
@@ -1,59 +0,0 @@
1// 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.
2
3namespace WixToolset.VisualStudio
4{
5 using System;
6 using WixToolset.Data;
7
8 public enum VSSymbolDefinitionType
9 {
10 HelpFile,
11 HelpFileToNamespace,
12 HelpFilter,
13 HelpFilterToNamespace,
14 HelpNamespace,
15 HelpPlugin,
16 }
17
18 public static partial class VSSymbolDefinitions
19 {
20 public static readonly Version Version = new Version("4.0.0");
21
22 public static IntermediateSymbolDefinition ByName(string name)
23 {
24 if (!Enum.TryParse(name, out VSSymbolDefinitionType type))
25 {
26 return null;
27 }
28
29 return ByType(type);
30 }
31
32 public static IntermediateSymbolDefinition ByType(VSSymbolDefinitionType type)
33 {
34 switch (type)
35 {
36 case VSSymbolDefinitionType.HelpFile:
37 return VSSymbolDefinitions.HelpFile;
38
39 case VSSymbolDefinitionType.HelpFileToNamespace:
40 return VSSymbolDefinitions.HelpFileToNamespace;
41
42 case VSSymbolDefinitionType.HelpFilter:
43 return VSSymbolDefinitions.HelpFilter;
44
45 case VSSymbolDefinitionType.HelpFilterToNamespace:
46 return VSSymbolDefinitions.HelpFilterToNamespace;
47
48 case VSSymbolDefinitionType.HelpNamespace:
49 return VSSymbolDefinitions.HelpNamespace;
50
51 case VSSymbolDefinitionType.HelpPlugin:
52 return VSSymbolDefinitions.HelpPlugin;
53
54 default:
55 throw new ArgumentOutOfRangeException(nameof(type));
56 }
57 }
58 }
59}
diff --git a/src/ext/VisualStudio/wixext/VSCompiler.cs b/src/ext/VisualStudio/wixext/VSCompiler.cs
index 65f0f97d..1901a700 100644
--- a/src/ext/VisualStudio/wixext/VSCompiler.cs
+++ b/src/ext/VisualStudio/wixext/VSCompiler.cs
@@ -4,13 +4,12 @@ namespace WixToolset.VisualStudio
4{ 4{
5 using System; 5 using System;
6 using System.Collections.Generic; 6 using System.Collections.Generic;
7 using System.Globalization;
8 using System.Xml.Linq; 7 using System.Xml.Linq;
9 using WixToolset.Data; 8 using WixToolset.Data;
10 using WixToolset.Data.Symbols; 9 using WixToolset.Data.Symbols;
11 using WixToolset.Data.WindowsInstaller; 10 using WixToolset.Data.WindowsInstaller;
12 using WixToolset.Extensibility; 11 using WixToolset.Extensibility;
13 using WixToolset.VisualStudio.Symbols; 12 using WixToolset.Extensibility.Data;
14 13
15 /// <summary> 14 /// <summary>
16 /// The compiler for the WiX Toolset Visual Studio Extension. 15 /// The compiler for the WiX Toolset Visual Studio Extension.
@@ -44,12 +43,6 @@ namespace WixToolset.VisualStudio
44 case "File": 43 case "File":
45 switch (element.Name.LocalName) 44 switch (element.Name.LocalName)
46 { 45 {
47 case "HelpCollection":
48 this.ParseHelpCollectionElement(intermediate, section, element, context["FileId"]);
49 break;
50 case "HelpFile":
51 this.ParseHelpFileElement(intermediate, section, element, context["FileId"]);
52 break;
53 case "VsixPackage": 46 case "VsixPackage":
54 this.ParseVsixPackageElement(intermediate, section, element, context["ComponentId"], context["FileId"]); 47 this.ParseVsixPackageElement(intermediate, section, element, context["ComponentId"], context["FileId"]);
55 break; 48 break;
@@ -63,11 +56,8 @@ namespace WixToolset.VisualStudio
63 case "Package": 56 case "Package":
64 switch (element.Name.LocalName) 57 switch (element.Name.LocalName)
65 { 58 {
66 case "HelpCollectionRef": 59 case "FindVisualStudio":
67 this.ParseHelpCollectionRefElement(intermediate, section, element); 60 this.ParseFindVisualStudioElement(intermediate, section, element);
68 break;
69 case "HelpFilter":
70 this.ParseHelpFilterElement(intermediate, section, element);
71 break; 61 break;
72 default: 62 default:
73 this.ParseHelper.UnexpectedElement(parentElement, element); 63 this.ParseHelper.UnexpectedElement(parentElement, element);
@@ -80,496 +70,13 @@ namespace WixToolset.VisualStudio
80 } 70 }
81 } 71 }
82 72
83 private void ParseHelpCollectionRefElement(Intermediate intermediate, IntermediateSection section, XElement element) 73 private void ParseFindVisualStudioElement(Intermediate intermediate, IntermediateSection section, XElement element)
84 {
85 var sourceLineNumbers = this.ParseHelper.GetSourceLineNumbers(element);
86 Identifier id = null;
87
88 foreach (var attrib in element.Attributes())
89 {
90 if (String.IsNullOrEmpty(attrib.Name.NamespaceName) || this.Namespace == attrib.Name.Namespace)
91 {
92 switch (attrib.Name.LocalName)
93 {
94 case "Id":
95 id = this.ParseHelper.GetAttributeIdentifier(sourceLineNumbers, attrib);
96 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, VSSymbolDefinitions.HelpNamespace, id.Id);
97 break;
98 default:
99 this.ParseHelper.UnexpectedAttribute(element, attrib);
100 break;
101 }
102 }
103 else
104 {
105 this.ParseHelper.ParseExtensionAttribute(this.Context.Extensions, intermediate, section, element, attrib);
106 }
107 }
108
109 if (null == id)
110 {
111 this.Messaging.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, element.Name.LocalName, "Id"));
112 }
113
114 foreach (var child in element.Elements())
115 {
116 if (this.Namespace == child.Name.Namespace)
117 {
118 switch (child.Name.LocalName)
119 {
120 case "HelpFileRef":
121 this.ParseHelpFileRefElement(intermediate, section, child, id);
122 break;
123 default:
124 this.ParseHelper.UnexpectedElement(element, child);
125 break;
126 }
127 }
128 else
129 {
130 this.ParseHelper.ParseExtensionElement(this.Context.Extensions, intermediate, section, element, child);
131 }
132 }
133 }
134
135 private void ParseHelpCollectionElement(Intermediate intermediate, IntermediateSection section, XElement element, string fileId)
136 {
137 var sourceLineNumbers = this.ParseHelper.GetSourceLineNumbers(element);
138 Identifier id = null;
139 string description = null;
140 string name = null;
141 var suppressCAs = YesNoType.No;
142
143 foreach (var attrib in element.Attributes())
144 {
145 if (String.IsNullOrEmpty(attrib.Name.NamespaceName) || this.Namespace == attrib.Name.Namespace)
146 {
147 switch (attrib.Name.LocalName)
148 {
149 case "Id":
150 id = this.ParseHelper.GetAttributeIdentifier(sourceLineNumbers, attrib);
151 break;
152 case "Description":
153 description = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
154 break;
155 case "Name":
156 name = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
157 break;
158 case "SuppressCustomActions":
159 suppressCAs = this.ParseHelper.GetAttributeYesNoValue(sourceLineNumbers, attrib);
160 break;
161 default:
162 this.ParseHelper.UnexpectedAttribute(element, attrib);
163 break;
164 }
165 }
166 else
167 {
168 this.ParseHelper.ParseExtensionAttribute(this.Context.Extensions, intermediate, section, element, attrib);
169 }
170 }
171
172 if (null == id)
173 {
174 id = this.ParseHelper.CreateIdentifier("vshc", fileId, description, name);
175 }
176
177 if (null == description)
178 {
179 this.Messaging.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, element.Name.LocalName, "Description"));
180 }
181
182 if (null == name)
183 {
184 this.Messaging.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, element.Name.LocalName, "Name"));
185 }
186
187 foreach (var child in element.Elements())
188 {
189 if (this.Namespace == child.Name.Namespace)
190 {
191 switch (child.Name.LocalName)
192 {
193 case "HelpFileRef":
194 this.ParseHelpFileRefElement(intermediate, section, child, id);
195 break;
196 case "HelpFilterRef":
197 this.ParseHelpFilterRefElement(intermediate, section, child, id);
198 break;
199 case "PlugCollectionInto":
200 this.ParsePlugCollectionIntoElement(intermediate, section, child, id);
201 break;
202 default:
203 this.ParseHelper.UnexpectedElement(element, child);
204 break;
205 }
206 }
207 else
208 {
209 this.ParseHelper.ParseExtensionElement(this.Context.Extensions, intermediate, section, element, child);
210 }
211 }
212
213 if (!this.Messaging.EncounteredError)
214 {
215 section.AddSymbol(new HelpNamespaceSymbol(sourceLineNumbers, id)
216 {
217 NamespaceName = name,
218 CollectionFileRef = fileId,
219 Description = description,
220 });
221
222 if (YesNoType.No == suppressCAs)
223 {
224 this.AddReferenceToRegisterMicrosoftHelp(section, sourceLineNumbers);
225 }
226 }
227 }
228
229 private void ParseHelpFileElement(Intermediate intermediate, IntermediateSection section, XElement element, string fileId)
230 {
231 var sourceLineNumbers = this.ParseHelper.GetSourceLineNumbers(element);
232 Identifier id = null;
233 string name = null;
234 var language = CompilerConstants.IntegerNotSet;
235 string hxi = null;
236 string hxq = null;
237 string hxr = null;
238 string samples = null;
239 var suppressCAs = YesNoType.No;
240
241 foreach (var attrib in element.Attributes())
242 {
243 if (String.IsNullOrEmpty(attrib.Name.NamespaceName) || this.Namespace == attrib.Name.Namespace)
244 {
245 switch (attrib.Name.LocalName)
246 {
247 case "Id":
248 id = this.ParseHelper.GetAttributeIdentifier(sourceLineNumbers, attrib);
249 break;
250 case "AttributeIndex":
251 hxr = this.ParseHelper.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
252 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, SymbolDefinitions.File, hxr);
253 break;
254 case "Index":
255 hxi = this.ParseHelper.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
256 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, SymbolDefinitions.File, hxi);
257 break;
258 case "Language":
259 language = this.ParseHelper.GetAttributeIntegerValue(sourceLineNumbers, attrib, 0, short.MaxValue);
260 break;
261 case "Name":
262 name = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
263 break;
264 case "SampleLocation":
265 samples = this.ParseHelper.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
266 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, SymbolDefinitions.File, samples);
267 break;
268 case "Search":
269 hxq = this.ParseHelper.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
270 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, SymbolDefinitions.File, hxq);
271 break;
272 case "SuppressCustomActions":
273 suppressCAs = this.ParseHelper.GetAttributeYesNoValue(sourceLineNumbers, attrib);
274 break;
275 default:
276 this.ParseHelper.UnexpectedAttribute(element, attrib);
277 break;
278 }
279 }
280 else
281 {
282 this.ParseHelper.ParseExtensionAttribute(this.Context.Extensions, intermediate, section, element, attrib);
283 }
284 }
285
286 if (null == id)
287 {
288 id = this.ParseHelper.CreateIdentifier("vshf", fileId, name, language.ToString(CultureInfo.InvariantCulture.NumberFormat));
289 }
290
291 if (null == name)
292 {
293 this.Messaging.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, element.Name.LocalName, "Name"));
294 }
295
296 // Uninstall will always fail silently, leaving file registered, if Language is not set
297 if (CompilerConstants.IntegerNotSet == language)
298 {
299 this.Messaging.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, element.Name.LocalName, "Language"));
300 }
301
302 this.ParseHelper.ParseForExtensionElements(this.Context.Extensions, intermediate, section, element);
303
304 if (!this.Messaging.EncounteredError)
305 {
306 section.AddSymbol(new HelpFileSymbol(sourceLineNumbers, id)
307 {
308 HelpFileName = name,
309 LangID = language,
310 HxSFileRef = fileId,
311 HxIFileRef = hxi,
312 HxQFileRef = hxq,
313 HxRFileRef = hxr,
314 SamplesFileRef = samples,
315 });
316
317 if (YesNoType.No == suppressCAs)
318 {
319 this.AddReferenceToRegisterMicrosoftHelp(section, sourceLineNumbers);
320 }
321 }
322 }
323
324 private void ParseHelpFileRefElement(Intermediate intermediate, IntermediateSection section, XElement element, Identifier collectionId)
325 {
326 var sourceLineNumbers = this.ParseHelper.GetSourceLineNumbers(element);
327 Identifier id = null;
328
329 foreach (var attrib in element.Attributes())
330 {
331 if (String.IsNullOrEmpty(attrib.Name.NamespaceName) || this.Namespace == attrib.Name.Namespace)
332 {
333 switch (attrib.Name.LocalName)
334 {
335 case "Id":
336 id = this.ParseHelper.GetAttributeIdentifier(sourceLineNumbers, attrib);
337 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, VSSymbolDefinitions.HelpFile, id.Id);
338 break;
339 default:
340 this.ParseHelper.UnexpectedAttribute(element, attrib);
341 break;
342 }
343 }
344 else
345 {
346 this.ParseHelper.ParseExtensionAttribute(this.Context.Extensions, intermediate, section, element, attrib);
347 }
348 }
349
350 if (null == id)
351 {
352 this.Messaging.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, element.Name.LocalName, "Id"));
353 }
354
355 this.ParseHelper.ParseForExtensionElements(this.Context.Extensions, intermediate, section, element);
356
357 if (!this.Messaging.EncounteredError)
358 {
359 section.AddSymbol(new HelpFileToNamespaceSymbol(sourceLineNumbers, id)
360 {
361 HelpFileRef = id.Id,
362 HelpNamespaceRef = collectionId.Id,
363 });
364 }
365 }
366
367 private void ParseHelpFilterElement(Intermediate intermediate, IntermediateSection section, XElement element)
368 {
369 var sourceLineNumbers = this.ParseHelper.GetSourceLineNumbers(element);
370 Identifier id = null;
371 string filterDefinition = null;
372 string name = null;
373 var suppressCAs = YesNoType.No;
374
375 foreach (var attrib in element.Attributes())
376 {
377 if (String.IsNullOrEmpty(attrib.Name.NamespaceName) || this.Namespace == attrib.Name.Namespace)
378 {
379 switch (attrib.Name.LocalName)
380 {
381 case "Id":
382 id = this.ParseHelper.GetAttributeIdentifier(sourceLineNumbers, attrib);
383 break;
384 case "FilterDefinition":
385 filterDefinition = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
386 break;
387 case "Name":
388 name = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
389 break;
390 case "SuppressCustomActions":
391 suppressCAs = this.ParseHelper.GetAttributeYesNoValue(sourceLineNumbers, attrib);
392 break;
393 default:
394 this.ParseHelper.UnexpectedAttribute(element, attrib);
395 break;
396 }
397 }
398 else
399 {
400 this.ParseHelper.ParseExtensionAttribute(this.Context.Extensions, intermediate, section, element, attrib);
401 }
402 }
403
404 if (null == id)
405 {
406 id = this.ParseHelper.CreateIdentifier("hfl", name, filterDefinition);
407 }
408
409 if (null == name)
410 {
411 this.Messaging.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, element.Name.LocalName, "Name"));
412 }
413
414 this.ParseHelper.ParseForExtensionElements(this.Context.Extensions, intermediate, section, element);
415
416 if (!this.Messaging.EncounteredError)
417 {
418 section.AddSymbol(new HelpFilterSymbol(sourceLineNumbers, id)
419 {
420 Description = name,
421 QueryString = filterDefinition,
422 });
423
424 if (YesNoType.No == suppressCAs)
425 {
426 this.AddReferenceToRegisterMicrosoftHelp(section, sourceLineNumbers);
427 }
428 }
429 }
430
431 private void ParseHelpFilterRefElement(Intermediate intermediate, IntermediateSection section, XElement element, Identifier collectionId)
432 {
433 var sourceLineNumbers = this.ParseHelper.GetSourceLineNumbers(element);
434 Identifier id = null;
435
436 foreach (var attrib in element.Attributes())
437 {
438 if (String.IsNullOrEmpty(attrib.Name.NamespaceName) || this.Namespace == attrib.Name.Namespace)
439 {
440 switch (attrib.Name.LocalName)
441 {
442 case "Id":
443 id = this.ParseHelper.GetAttributeIdentifier(sourceLineNumbers, attrib);
444 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, VSSymbolDefinitions.HelpFilter, id.Id);
445 break;
446 default:
447 this.ParseHelper.UnexpectedAttribute(element, attrib);
448 break;
449 }
450 }
451 else
452 {
453 this.ParseHelper.ParseExtensionAttribute(this.Context.Extensions, intermediate, section, element, attrib);
454 }
455 }
456
457 if (null == id)
458 {
459 this.Messaging.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, element.Name.LocalName, "Id"));
460 }
461
462 this.ParseHelper.ParseForExtensionElements(this.Context.Extensions, intermediate, section, element);
463
464 if (!this.Messaging.EncounteredError)
465 {
466 section.AddSymbol(new HelpFilterToNamespaceSymbol(sourceLineNumbers, id)
467 {
468 HelpFilterRef = id.Id,
469 HelpNamespaceRef = collectionId.Id,
470 });
471 }
472 }
473
474 private void ParsePlugCollectionIntoElement(Intermediate intermediate, IntermediateSection section, XElement element, Identifier parentId)
475 { 74 {
476 var sourceLineNumbers = this.ParseHelper.GetSourceLineNumbers(element); 75 var sourceLineNumbers = this.ParseHelper.GetSourceLineNumbers(element);
477 string hxa = null;
478 string hxt = null;
479 string hxtParent = null;
480 string namespaceParent = null;
481 string feature = null;
482 var suppressExternalNamespaces = YesNoType.No;
483
484 foreach (var attrib in element.Attributes())
485 {
486 if (String.IsNullOrEmpty(attrib.Name.NamespaceName) || this.Namespace == attrib.Name.Namespace)
487 {
488 switch (attrib.Name.LocalName)
489 {
490 case "Attributes":
491 hxa = this.ParseHelper.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
492 break;
493 case "TableOfContents":
494 hxt = this.ParseHelper.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
495 break;
496 case "TargetCollection":
497 namespaceParent = this.ParseHelper.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
498 break;
499 case "TargetTableOfContents":
500 hxtParent = this.ParseHelper.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
501 break;
502 case "TargetFeature":
503 feature = this.ParseHelper.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
504 break;
505 case "SuppressExternalNamespaces":
506 suppressExternalNamespaces = this.ParseHelper.GetAttributeYesNoValue(sourceLineNumbers, attrib);
507 break;
508 default:
509 this.ParseHelper.UnexpectedAttribute(element, attrib);
510 break;
511 }
512 }
513 else
514 {
515 this.ParseHelper.ParseExtensionAttribute(this.Context.Extensions, intermediate, section, element, attrib);
516 }
517 }
518
519 var pluginVS05 = namespaceParent.Equals("MS_VSIPCC_v80", StringComparison.Ordinal);
520 var pluginVS08 = namespaceParent.Equals("MS.VSIPCC.v90", StringComparison.Ordinal);
521
522 if (null == namespaceParent)
523 {
524 this.Messaging.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, element.Name.LocalName, "TargetCollection"));
525 }
526
527 if (null == feature && (pluginVS05 || pluginVS08) && YesNoType.No == suppressExternalNamespaces)
528 {
529 this.Messaging.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, element.Name.LocalName, "TargetFeature"));
530 }
531 76
532 this.ParseHelper.ParseForExtensionElements(this.Context.Extensions, intermediate, section, element); 77 this.ParseHelper.ParseForExtensionElements(this.Context.Extensions, intermediate, section, element);
533 78
534 if (!this.Messaging.EncounteredError) 79 this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, "Wix4VSFindInstances", this.Context.Platform, CustomActionPlatforms.X86 | CustomActionPlatforms.X64);
535 {
536 section.AddSymbol(new HelpPluginSymbol(sourceLineNumbers, parentId)
537 {
538 HelpNamespaceRef = parentId.Id,
539 ParentHelpNamespaceRef = namespaceParent,
540 HxTFileRef = hxt,
541 HxAFileRef = hxa,
542 ParentHxTFileRef = hxtParent,
543 });
544
545 if (pluginVS05)
546 {
547 if (YesNoType.No == suppressExternalNamespaces)
548 {
549 // Bring in the help 2 base namespace components for VS 2005
550 this.ParseHelper.CreateComplexReference(section, sourceLineNumbers, ComplexReferenceParentType.Feature, feature, String.Empty,
551 ComplexReferenceChildType.ComponentGroup, "Help2_VS2005_Namespace_Components", false);
552 // Reference CustomAction since nothing will happen without it
553 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, SymbolDefinitions.CustomAction, "CA_HxMerge_VSIPCC_VSCC");
554 }
555 }
556 else if (pluginVS08)
557 {
558 if (YesNoType.No == suppressExternalNamespaces)
559 {
560 // Bring in the help 2 base namespace components for VS 2008
561 this.ParseHelper.CreateComplexReference(section, sourceLineNumbers, ComplexReferenceParentType.Feature, feature, String.Empty,
562 ComplexReferenceChildType.ComponentGroup, "Help2_VS2008_Namespace_Components", false);
563 // Reference CustomAction since nothing will happen without it
564 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, SymbolDefinitions.CustomAction, "CA_ScheduleExtHelpPlugin_VSCC_VSIPCC");
565 }
566 }
567 else
568 {
569 // Reference the parent namespace to enforce the foreign key relationship
570 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, VSSymbolDefinitions.HelpNamespace, namespaceParent);
571 }
572 }
573 } 80 }
574 81
575 private void ParseVsixPackageElement(Intermediate intermediate, IntermediateSection section, XElement element, string componentId, string fileId) 82 private void ParseVsixPackageElement(Intermediate intermediate, IntermediateSection section, XElement element, string componentId, string fileId)
@@ -819,10 +326,5 @@ namespace WixToolset.VisualStudio
819 } 326 }
820 } 327 }
821 } 328 }
822
823 private void AddReferenceToRegisterMicrosoftHelp(IntermediateSection section, SourceLineNumber sourceLineNumbers)
824 {
825 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, SymbolDefinitions.CustomAction, "CA_RegisterMicrosoftHelp.3643236F_FC70_11D3_A536_0090278A1BB8");
826 }
827 } 329 }
828} 330}
diff --git a/src/ext/VisualStudio/wixext/VSExtensionData.cs b/src/ext/VisualStudio/wixext/VSExtensionData.cs
index 51199d2c..82c5b118 100644
--- a/src/ext/VisualStudio/wixext/VSExtensionData.cs
+++ b/src/ext/VisualStudio/wixext/VSExtensionData.cs
@@ -13,12 +13,6 @@ namespace WixToolset.VisualStudio
13 /// <value>The default culture.</value> 13 /// <value>The default culture.</value>
14 public override string DefaultCulture => "en-US"; 14 public override string DefaultCulture => "en-US";
15 15
16 public override bool TryGetSymbolDefinitionByName(string name, out IntermediateSymbolDefinition symbolDefinition)
17 {
18 symbolDefinition = VSSymbolDefinitions.ByName(name);
19 return symbolDefinition != null;
20 }
21
22 public override Intermediate GetLibrary(ISymbolDefinitionCreator symbolDefinitions) 16 public override Intermediate GetLibrary(ISymbolDefinitionCreator symbolDefinitions)
23 { 17 {
24 return Intermediate.Load(typeof(VSExtensionData).Assembly, "WixToolset.VisualStudio.vs.wixlib", symbolDefinitions); 18 return Intermediate.Load(typeof(VSExtensionData).Assembly, "WixToolset.VisualStudio.vs.wixlib", symbolDefinitions);
diff --git a/src/ext/VisualStudio/wixext/VSExtensionFactory.cs b/src/ext/VisualStudio/wixext/VSExtensionFactory.cs
index c6e0cc31..57d2732d 100644
--- a/src/ext/VisualStudio/wixext/VSExtensionFactory.cs
+++ b/src/ext/VisualStudio/wixext/VSExtensionFactory.cs
@@ -12,7 +12,6 @@ namespace WixToolset.VisualStudio
12 { 12 {
13 typeof(VSCompiler), 13 typeof(VSCompiler),
14 typeof(VSExtensionData), 14 typeof(VSExtensionData),
15 typeof(VSWindowsInstallerBackendBinderExtension),
16 }; 15 };
17 } 16 }
18} 17}
diff --git a/src/ext/VisualStudio/wixext/VSTableDefinitions.cs b/src/ext/VisualStudio/wixext/VSTableDefinitions.cs
deleted file mode 100644
index 0c3ca907..00000000
--- a/src/ext/VisualStudio/wixext/VSTableDefinitions.cs
+++ /dev/null
@@ -1,97 +0,0 @@
1// 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.
2
3namespace WixToolset.VisualStudio
4{
5 using WixToolset.Data.WindowsInstaller;
6
7 public static class VSTableDefinitions
8 {
9 public static readonly TableDefinition HelpFile = new TableDefinition(
10 "HelpFile",
11 VSSymbolDefinitions.HelpFile,
12 new[]
13 {
14 new ColumnDefinition("HelpFileKey", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "Primary Key for HelpFile Table (required).", modularizeType: ColumnModularizeType.Column),
15 new ColumnDefinition("HelpFileName", ColumnType.String, 72, primaryKey: false, nullable: false, ColumnCategory.Text, description: "Internal Microsoft Help ID for this HelpFile (required)."),
16 new ColumnDefinition("LangID", ColumnType.Number, 2, primaryKey: false, nullable: true, ColumnCategory.Language, description: "Language ID for content file (optional)."),
17 new ColumnDefinition("File_HxS", ColumnType.String, 72, primaryKey: false, nullable: false, ColumnCategory.Identifier, keyTable: "File", keyColumn: 1, description: "Key for HxS (Title) file (required).", modularizeType: ColumnModularizeType.Column),
18 new ColumnDefinition("File_HxI", ColumnType.String, 72, primaryKey: false, nullable: true, ColumnCategory.Identifier, keyTable: "File", keyColumn: 1, description: "Key for HxI (Index) file (optional).", modularizeType: ColumnModularizeType.Column),
19 new ColumnDefinition("File_HxQ", ColumnType.String, 72, primaryKey: false, nullable: true, ColumnCategory.Identifier, keyTable: "File", keyColumn: 1, description: "Key for HxQ (Query) file (optional).", modularizeType: ColumnModularizeType.Column),
20 new ColumnDefinition("File_HxR", ColumnType.String, 72, primaryKey: false, nullable: true, ColumnCategory.Identifier, keyTable: "File", keyColumn: 1, description: "Key for HxR (Attributes) file (optional).", modularizeType: ColumnModularizeType.Column),
21 new ColumnDefinition("File_Samples", ColumnType.String, 72, primaryKey: false, nullable: true, ColumnCategory.Identifier, keyTable: "File", keyColumn: 1, description: "Key for a file that is in the 'root' of the samples directory for this HelpFile (optional).", modularizeType: ColumnModularizeType.Column),
22 },
23 symbolIdIsPrimaryKey: true
24 );
25
26 public static readonly TableDefinition HelpFileToNamespace = new TableDefinition(
27 "HelpFileToNamespace",
28 VSSymbolDefinitions.HelpFileToNamespace,
29 new[]
30 {
31 new ColumnDefinition("HelpFile_", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, keyTable: "HelpFile", keyColumn: 1, description: "Foreign key into HelpFile table (required).", modularizeType: ColumnModularizeType.Column),
32 new ColumnDefinition("HelpNamespace_", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, keyTable: "HelpNamespace", keyColumn: 1, description: "Foreign key into HelpNamespace table (required)."),
33 },
34 symbolIdIsPrimaryKey: false
35 );
36
37 public static readonly TableDefinition HelpFilter = new TableDefinition(
38 "HelpFilter",
39 VSSymbolDefinitions.HelpFilter,
40 new[]
41 {
42 new ColumnDefinition("FilterKey", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "Primary Key for HelpFilter (required).", modularizeType: ColumnModularizeType.Column),
43 new ColumnDefinition("Description", ColumnType.Localized, 0, primaryKey: false, nullable: false, ColumnCategory.Text, description: "Friendly name for Filter (required)."),
44 new ColumnDefinition("QueryString", ColumnType.String, 0, primaryKey: false, nullable: true, ColumnCategory.Text, description: "Query String for Help Filter (optional)."),
45 },
46 symbolIdIsPrimaryKey: true
47 );
48
49 public static readonly TableDefinition HelpFilterToNamespace = new TableDefinition(
50 "HelpFilterToNamespace",
51 VSSymbolDefinitions.HelpFilterToNamespace,
52 new[]
53 {
54 new ColumnDefinition("HelpFilter_", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, keyTable: "HelpFilter", keyColumn: 1, description: "Foreign key into HelpFilter table (required).", modularizeType: ColumnModularizeType.Column),
55 new ColumnDefinition("HelpNamespace_", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, keyTable: "HelpNamespace", keyColumn: 1, description: "Foreign key into HelpNamespace table (required)."),
56 },
57 symbolIdIsPrimaryKey: false
58 );
59
60 public static readonly TableDefinition HelpNamespace = new TableDefinition(
61 "HelpNamespace",
62 VSSymbolDefinitions.HelpNamespace,
63 new[]
64 {
65 new ColumnDefinition("NamespaceKey", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "Primary Key for HelpNamespace (required)."),
66 new ColumnDefinition("NamespaceName", ColumnType.String, 0, primaryKey: false, nullable: false, ColumnCategory.Text, description: "Internal Microsoft Help ID for this Namespace (required)."),
67 new ColumnDefinition("File_Collection", ColumnType.String, 72, primaryKey: false, nullable: false, ColumnCategory.Identifier, keyTable: "File", keyColumn: 1, description: "Key for HxC (Collection) file (required).", modularizeType: ColumnModularizeType.Column),
68 new ColumnDefinition("Description", ColumnType.Localized, 0, primaryKey: false, nullable: true, ColumnCategory.Text, description: "Friendly name for Namespace (optional)."),
69 },
70 symbolIdIsPrimaryKey: true
71 );
72
73 public static readonly TableDefinition HelpPlugin = new TableDefinition(
74 "HelpPlugin",
75 VSSymbolDefinitions.HelpPlugin,
76 new[]
77 {
78 new ColumnDefinition("HelpNamespace_", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, keyTable: "HelpNamespace", keyColumn: 1, description: "Foreign key into HelpNamespace table for the child namespace that will be plugged into the parent namespace (required)."),
79 new ColumnDefinition("HelpNamespace_Parent", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, keyTable: "HelpNamespace", keyColumn: 1, description: "Foreign key into HelpNamespace table for the parent namespace into which the child will be inserted (required)."),
80 new ColumnDefinition("File_HxT", ColumnType.String, 72, primaryKey: false, nullable: true, ColumnCategory.Identifier, keyTable: "File", keyColumn: 1, description: "Key for HxT file of child namespace (optional).", modularizeType: ColumnModularizeType.Column),
81 new ColumnDefinition("File_HxA", ColumnType.String, 72, primaryKey: false, nullable: true, ColumnCategory.Identifier, keyTable: "File", keyColumn: 1, description: "Key for HxA (Attributes) file of child namespace (optional).", modularizeType: ColumnModularizeType.Column),
82 new ColumnDefinition("File_ParentHxT", ColumnType.String, 72, primaryKey: false, nullable: true, ColumnCategory.Identifier, keyTable: "File", keyColumn: 1, description: "Key for HxT file of parent namespace that now includes the new child namespace (optional).", modularizeType: ColumnModularizeType.Column),
83 },
84 symbolIdIsPrimaryKey: false
85 );
86
87 public static readonly TableDefinition[] All = new[]
88 {
89 HelpFile,
90 HelpFileToNamespace,
91 HelpFilter,
92 HelpFilterToNamespace,
93 HelpNamespace,
94 HelpPlugin,
95 };
96 }
97}
diff --git a/src/ext/VisualStudio/wixext/VSWindowsInstallerBackendBinderExtension.cs b/src/ext/VisualStudio/wixext/VSWindowsInstallerBackendBinderExtension.cs
deleted file mode 100644
index d0d8648c..00000000
--- a/src/ext/VisualStudio/wixext/VSWindowsInstallerBackendBinderExtension.cs
+++ /dev/null
@@ -1,13 +0,0 @@
1// 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.
2
3namespace WixToolset.VisualStudio
4{
5 using System.Collections.Generic;
6 using WixToolset.Data.WindowsInstaller;
7 using WixToolset.Extensibility;
8
9 public class VSWindowsInstallerBackendBinderExtension : BaseWindowsInstallerBackendBinderExtension
10 {
11 public override IReadOnlyCollection<TableDefinition> TableDefinitions => VSTableDefinitions.All;
12 }
13}