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.
Bob Arnson committed
Dec 22, 2021 at 23:52 UTC
b9c712f26d921f7ffe0509d1cc45456680e8139f
57 files changed
+395
-1620
src/ext/VisualStudio/VisualStudio.wixext.sln
+9
-9
@@ -30,6 +30,15 @@ Global
30
{45308B85-0628-4978-8FC8-6AD9E1AD5949}.Release|x64.ActiveCfg = Release|Win32
31
{45308B85-0628-4978-8FC8-6AD9E1AD5949}.Release|x86.ActiveCfg = Release|Win32
32
{45308B85-0628-4978-8FC8-6AD9E1AD5949}.Release|x86.Build.0 = Release|Win32
33
+ {14345C9D-8AF8-435A-BB1B-E067CE7EB321}.Debug|Any CPU.ActiveCfg = Debug|x86
34
+ {14345C9D-8AF8-435A-BB1B-E067CE7EB321}.Debug|Any CPU.Build.0 = Debug|x86
35
+ {14345C9D-8AF8-435A-BB1B-E067CE7EB321}.Debug|x64.ActiveCfg = Debug|x86
36
+ {14345C9D-8AF8-435A-BB1B-E067CE7EB321}.Debug|x86.ActiveCfg = Debug|x86
37
+ {14345C9D-8AF8-435A-BB1B-E067CE7EB321}.Debug|x86.Build.0 = Debug|x86
38
+ {14345C9D-8AF8-435A-BB1B-E067CE7EB321}.Release|Any CPU.ActiveCfg = Release|x86
39
+ {14345C9D-8AF8-435A-BB1B-E067CE7EB321}.Release|x64.ActiveCfg = Release|x86
40
+ {14345C9D-8AF8-435A-BB1B-E067CE7EB321}.Release|x86.ActiveCfg = Release|x86
41
+ {14345C9D-8AF8-435A-BB1B-E067CE7EB321}.Release|x86.Build.0 = Release|x86
42
{61BFD377-9DE1-48B4-8687-560DF68D6F3B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
43
{61BFD377-9DE1-48B4-8687-560DF68D6F3B}.Debug|Any CPU.Build.0 = Debug|Any CPU
44
{61BFD377-9DE1-48B4-8687-560DF68D6F3B}.Debug|x64.ActiveCfg = Debug|Any CPU
@@ -42,15 +51,6 @@ Global
51
{61BFD377-9DE1-48B4-8687-560DF68D6F3B}.Release|x64.Build.0 = Release|Any CPU
52
{61BFD377-9DE1-48B4-8687-560DF68D6F3B}.Release|x86.ActiveCfg = Release|Any CPU
53
{61BFD377-9DE1-48B4-8687-560DF68D6F3B}.Release|x86.Build.0 = Release|Any CPU
45
- {14345C9D-8AF8-435A-BB1B-E067CE7EB321}.Debug|Any CPU.ActiveCfg = Debug|x86
46
- {14345C9D-8AF8-435A-BB1B-E067CE7EB321}.Debug|Any CPU.Build.0 = Debug|x86
47
- {14345C9D-8AF8-435A-BB1B-E067CE7EB321}.Debug|x64.ActiveCfg = Debug|x86
48
- {14345C9D-8AF8-435A-BB1B-E067CE7EB321}.Debug|x86.ActiveCfg = Debug|x86
49
- {14345C9D-8AF8-435A-BB1B-E067CE7EB321}.Debug|x86.Build.0 = Debug|x86
50
- {14345C9D-8AF8-435A-BB1B-E067CE7EB321}.Release|Any CPU.ActiveCfg = Release|x86
51
- {14345C9D-8AF8-435A-BB1B-E067CE7EB321}.Release|x64.ActiveCfg = Release|x86
52
- {14345C9D-8AF8-435A-BB1B-E067CE7EB321}.Release|x86.ActiveCfg = Release|x86
53
- {14345C9D-8AF8-435A-BB1B-E067CE7EB321}.Release|x86.Build.0 = Release|x86
54
{DD2BD0F7-1E4A-4D11-954C-3505323C4E1B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
55
{DD2BD0F7-1E4A-4D11-954C-3505323C4E1B}.Debug|Any CPU.Build.0 = Debug|Any CPU
56
{DD2BD0F7-1E4A-4D11-954C-3505323C4E1B}.Debug|x64.ActiveCfg = Debug|Any CPU
src/ext/VisualStudio/ca/vsca.cpp
+81
@@ -53,6 +53,12 @@ static HRESULT ProcessVS2019(
53
__in BOOL fComplete
54
);
55
56
+static HRESULT ProcessVS2022(
57
+ __in_opt ISetupInstance* pInstance,
58
+ __in DWORD64 qwVersion,
59
+ __in BOOL fComplete
60
+ );
61
+
62
static HRESULT SetPropertyForComponent(
63
__in DWORD cComponents,
64
__in VS_COMPONENT_PROPERTY* rgComponents,
@@ -63,6 +69,7 @@ static VS_INSTANCE vrgInstances[] =
69
{
70
{ FILEMAKEVERSION(15, 0, 0, 0), FILEMAKEVERSION(15, 0xffff, 0xffff, 0xffff), ProcessVS2017 },
71
{ FILEMAKEVERSION(16, 0, 0, 0), FILEMAKEVERSION(16, 0xffff, 0xffff, 0xffff), ProcessVS2019 },
72
+ { FILEMAKEVERSION(17, 0, 0, 0), FILEMAKEVERSION(17, 0xffff, 0xffff, 0xffff), ProcessVS2022 },
73
};
74
75
/******************************************************************
@@ -485,6 +492,80 @@ LExit:
492
return hr;
493
}
494
495
+static HRESULT ProcessVS2022(
496
+ __in_opt ISetupInstance* pInstance,
497
+ __in DWORD64 qwVersion,
498
+ __in BOOL fComplete
499
+ )
500
+{
501
+ static ISetupInstance* pLatest = NULL;
502
+ static DWORD64 qwLatest = 0;
503
+
504
+ static LPCWSTR rgwzProducts[] =
505
+ {
506
+ L"Microsoft.VisualStudio.Product.Community",
507
+ L"Microsoft.VisualStudio.Product.Professional",
508
+ L"Microsoft.VisualStudio.Product.Enterprise",
509
+ };
510
+
511
+ // TODO: Consider making table-driven with these defaults per-version for easy customization.
512
+ static VS_COMPONENT_PROPERTY rgComponents[] =
513
+ {
514
+ { L"Microsoft.VisualStudio.Component.FSharp", L"VS2022_IDE_FSHARP_PROJECTSYSTEM_INSTALLED" },
515
+ { L"Microsoft.VisualStudio.Component.Roslyn.LanguageServices", L"VS2022_IDE_VB_PROJECTSYSTEM_INSTALLED" },
516
+ { L"Microsoft.VisualStudio.Component.Roslyn.LanguageServices", L"VS2022_IDE_VCSHARP_PROJECTSYSTEM_INSTALLED" },
517
+ { L"Microsoft.VisualStudio.PackageGroup.TestTools.Core", L"VS2022_IDE_VSTS_TESTSYSTEM_INSTALLED" },
518
+ { L"Microsoft.VisualStudio.Component.VC.CoreIde", L"VS2022_IDE_VC_PROJECTSYSTEM_INSTALLED" },
519
+ { L"Microsoft.VisualStudio.Component.Web", L"VS2022_IDE_VWD_PROJECTSYSTEM_INSTALLED" },
520
+ { L"Microsoft.VisualStudio.PackageGroup.DslRuntime", L"VS2022_IDE_MODELING_PROJECTSYSTEM_INSTALLED" },
521
+ };
522
+
523
+ HRESULT hr = S_OK;
524
+
525
+ if (fComplete)
526
+ {
527
+ if (pLatest)
528
+ {
529
+ hr = ProcessInstance(pLatest, L"VS2022_ROOT_FOLDER", countof(rgComponents), rgComponents);
530
+ ExitOnFailure(hr, "Failed to process VS2022 instance.");
531
+ }
532
+ }
533
+ else if (pInstance)
534
+ {
535
+ hr = InstanceInProducts(pInstance, countof(rgwzProducts), rgwzProducts);
536
+ ExitOnFailure(hr, "Failed to compare product IDs.");
537
+
538
+ if (S_FALSE == hr)
539
+ {
540
+ ExitFunction();
541
+ }
542
+
543
+ hr = InstanceIsGreater(pLatest, qwLatest, pInstance, qwVersion);
544
+ ExitOnFailure(hr, "Failed to compare instances.");
545
+
546
+ if (S_FALSE == hr)
547
+ {
548
+ ExitFunction();
549
+ }
550
+
551
+ ReleaseNullObject(pLatest);
552
+
553
+ pLatest = pInstance;
554
+ qwLatest = qwVersion;
555
+
556
+ // Caller will do a final Release() otherwise.
557
+ pLatest->AddRef();
558
+ }
559
+
560
+LExit:
561
+ if (fComplete)
562
+ {
563
+ ReleaseObject(pLatest);
564
+ }
565
+
566
+ return hr;
567
+}
568
+
569
static HRESULT SetPropertyForComponent(
570
__in DWORD cComponents,
571
__in VS_COMPONENT_PROPERTY* rgComponents,
src/ext/VisualStudio/ca/vsca.vcxproj
+8
@@ -11,6 +11,14 @@
11
<Configuration>Release</Configuration>
12
<Platform>Win32</Platform>
13
</ProjectConfiguration>
14
+ <ProjectConfiguration Include="Debug|x64">
15
+ <Configuration>Debug</Configuration>
16
+ <Platform>x64</Platform>
17
+ </ProjectConfiguration>
18
+ <ProjectConfiguration Include="Release|x64">
19
+ <Configuration>Release</Configuration>
20
+ <Platform>x64</Platform>
21
+ </ProjectConfiguration>
22
</ItemGroup>
23
24
<PropertyGroup Label="Globals">
src/ext/VisualStudio/test/WixToolsetTest.VisualStudio/TestData/UsingVsixPackage/Package.wxs
+3
-1
@@ -1,8 +1,10 @@
1
-<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
1
+<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" xmlns:vs="http://wixtoolset.org/schemas/v4/wxs/vs">
2
<Package Name="MsiPackage" Language="1033" Version="1.0.0.0" Manufacturer="Example Corporation" UpgradeCode="047730a5-30fe-4a62-a520-da9381b8226a">
3
<MajorUpgrade DowngradeErrorMessage="!(loc.DowngradeError)" />
4
5
+ <vs:FindVisualStudio />
6
<PropertyRef Id="VS2017DEVENV" />
7
+ <PropertyRef Id="VS2022_ROOT_FOLDER" />
8
9
<Feature Id="ProductFeature" Title="!(loc.FeatureTitle)">
10
<ComponentGroupRef Id="ProductComponents" />
src/ext/VisualStudio/test/WixToolsetTest.VisualStudio/TestData/UsingVsixPackage/PackageComponents.wxs
-1
@@ -7,7 +7,6 @@
7
<File Name="fake.vsix" Source="example.txt">
8
<vs:VsixPackage PackageId="ExampleVsix" />
9
</File>
10
-
10
</Component>
11
</ComponentGroup>
12
</Fragment>
src/ext/VisualStudio/test/WixToolsetTest.VisualStudio/VisualStudioExtensionFixture.cs
+1
-2
@@ -2,7 +2,6 @@
2
3
namespace WixToolsetTest.VisualStudio
4
{
5
- using System.Linq;
5
using WixBuildTools.TestSupport;
6
using WixToolset.Core.TestPackage;
7
using WixToolset.VisualStudio;
@@ -27,12 +26,12 @@ namespace WixToolsetTest.VisualStudio
26
"CustomAction:viuMpl8IvFSDAzTulrmpAzBwAmCRTQ\t1074\tVS_VSIX_INSTALLER_PATH\t/q \"[#filzi8nwT8Ta133xcfp7qSIdGdRiC0]\"\t",
27
"CustomAction:vrmLa9TyFoAVwf8JmA0_ZJHA69J2fo\t3442\tVS_VSIX_INSTALLER_PATH\t/q /u:\"ExampleVsix\" /admin\t",
28
"CustomAction:vruMpl8IvFSDAzTulrmpAzBwAmCRTQ\t1394\tVS_VSIX_INSTALLER_PATH\t/q /u:\"ExampleVsix\"\t",
30
- "CustomAction:VSFindInstances\t257\tVSCA\tFindInstances\t",
29
"CustomAction:vumLa9TyFoAVwf8JmA0_ZJHA69J2fo\t3186\tVS_VSIX_INSTALLER_PATH\t/q /u:\"ExampleVsix\" /admin\t",
30
"CustomAction:vuuMpl8IvFSDAzTulrmpAzBwAmCRTQ\t1138\tVS_VSIX_INSTALLER_PATH\t/q /u:\"ExampleVsix\"\t",
31
"CustomAction:Vwd2012VsixWhenVSAbsent\t51\tVS_VSIX_INSTALLER_PATH\t[VWD2012_VSIX_INSTALL_ROOT]\\Common7\\IDE\\VSIXInstaller.exe\t",
32
"CustomAction:Vwd2013VsixWhenVSAbsent\t51\tVS_VSIX_INSTALLER_PATH\t[VWD2013_VSIX_INSTALL_ROOT]\\Common7\\IDE\\VSIXInstaller.exe\t",
33
"CustomAction:Vwd2015VsixWhenVSAbsent\t51\tVS_VSIX_INSTALLER_PATH\t[VWD2015_VSIX_INSTALL_ROOT]\\Common7\\IDE\\VSIXInstaller.exe\t",
34
+ "CustomAction:Wix4VSFindInstances_X86\t257\tVSCA_X86\tFindInstances\t",
35
}, results);
36
}
37
src/ext/VisualStudio/wixext/Symbols/HelpFileSymbol.cs
deleted
-95
@@ -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
-
3
-namespace 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
-
26
-namespace 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
src/ext/VisualStudio/wixext/Symbols/HelpFileToNamespaceSymbol.cs
deleted
-55
@@ -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
-
3
-namespace 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
-
21
-namespace 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
src/ext/VisualStudio/wixext/Symbols/HelpFilterSymbol.cs
deleted
-55
@@ -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
-
3
-namespace 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
-
21
-namespace 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
src/ext/VisualStudio/wixext/Symbols/HelpFilterToNamespaceSymbol.cs
deleted
-55
@@ -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
-
3
-namespace 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
-
21
-namespace 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
src/ext/VisualStudio/wixext/Symbols/HelpNamespaceSymbol.cs
deleted
-63
@@ -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
-
3
-namespace 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
-
22
-namespace 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
src/ext/VisualStudio/wixext/Symbols/HelpPluginSymbol.cs
deleted
-79
@@ -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
-
3
-namespace 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
-
24
-namespace 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
src/ext/VisualStudio/wixext/Symbols/VSSymbolDefinitions.cs
deleted
-59
@@ -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
-
3
-namespace 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
-}
src/ext/VisualStudio/wixext/VSCompiler.cs
+5
-503
@@ -4,13 +4,12 @@ namespace WixToolset.VisualStudio
4
{
5
using System;
6
using System.Collections.Generic;
7
- using System.Globalization;
7
using System.Xml.Linq;
8
using WixToolset.Data;
9
using WixToolset.Data.Symbols;
10
using WixToolset.Data.WindowsInstaller;
11
using WixToolset.Extensibility;
13
- using WixToolset.VisualStudio.Symbols;
12
+ using WixToolset.Extensibility.Data;
13
14
/// <summary>
15
/// The compiler for the WiX Toolset Visual Studio Extension.
@@ -44,12 +43,6 @@ namespace WixToolset.VisualStudio
43
case "File":
44
switch (element.Name.LocalName)
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;
46
case "VsixPackage":
47
this.ParseVsixPackageElement(intermediate, section, element, context["ComponentId"], context["FileId"]);
48
break;
@@ -63,11 +56,8 @@ namespace WixToolset.VisualStudio
56
case "Package":
57
switch (element.Name.LocalName)
58
{
66
- case "HelpCollectionRef":
67
- this.ParseHelpCollectionRefElement(intermediate, section, element);
68
- break;
69
- case "HelpFilter":
70
- this.ParseHelpFilterElement(intermediate, section, element);
59
+ case "FindVisualStudio":
60
+ this.ParseFindVisualStudioElement(intermediate, section, element);
61
break;
62
default:
63
this.ParseHelper.UnexpectedElement(parentElement, element);
@@ -80,496 +70,13 @@ namespace WixToolset.VisualStudio
70
}
71
}
72
83
- private void ParseHelpCollectionRefElement(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)
73
+ private void ParseFindVisualStudioElement(Intermediate intermediate, IntermediateSection section, XElement element)
74
{
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
- }
76
77
this.ParseHelper.ParseForExtensionElements(this.Context.Extensions, intermediate, section, element);
78
534
- if (!this.Messaging.EncounteredError)
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
- }
79
+ this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, "Wix4VSFindInstances", this.Context.Platform, CustomActionPlatforms.X86 | CustomActionPlatforms.X64);
80
}
81
82
private void ParseVsixPackageElement(Intermediate intermediate, IntermediateSection section, XElement element, string componentId, string fileId)
@@ -819,10 +326,5 @@ namespace WixToolset.VisualStudio
326
}
327
}
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
- }
329
}
330
}
src/ext/VisualStudio/wixext/VSExtensionData.cs
-6
@@ -13,12 +13,6 @@ namespace WixToolset.VisualStudio
13
/// <value>The default culture.</value>
14
public override string DefaultCulture => "en-US";
15
16
- public override bool TryGetSymbolDefinitionByName(string name, out IntermediateSymbolDefinition symbolDefinition)
17
- {
18
- symbolDefinition = VSSymbolDefinitions.ByName(name);
19
- return symbolDefinition != null;
20
- }
21
-
16
public override Intermediate GetLibrary(ISymbolDefinitionCreator symbolDefinitions)
17
{
18
return Intermediate.Load(typeof(VSExtensionData).Assembly, "WixToolset.VisualStudio.vs.wixlib", symbolDefinitions);
src/ext/VisualStudio/wixext/VSExtensionFactory.cs
-1
@@ -12,7 +12,6 @@ namespace WixToolset.VisualStudio
12
{
13
typeof(VSCompiler),
14
typeof(VSExtensionData),
15
- typeof(VSWindowsInstallerBackendBinderExtension),
15
};
16
}
17
}
src/ext/VisualStudio/wixext/VSTableDefinitions.cs
deleted
-97
@@ -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
-
3
-namespace 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
-}
src/ext/VisualStudio/wixext/VSWindowsInstallerBackendBinderExtension.cs
deleted
-13
@@ -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
-
3
-namespace 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
-}
src/ext/VisualStudio/wixlib/HTML_Help_Registration__RTL_X86.wxs
deleted
-67
@@ -1,67 +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
-
3
-<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
4
- <Fragment>
5
- <StandardDirectory Id="CommonFilesFolder">
6
- <Directory Id="MSShared" Name="Microsoft Shared">
7
- <Directory Id="DevHelp" Name="DevHelp">
8
- <Directory Id="VSIPCC" Name="VSIPCC">
9
- </Directory>
10
- </Directory>
11
- </Directory>
12
- </StandardDirectory>
13
- </Fragment>
14
-
15
- <Fragment Id="HTML_Help_Registration_">
16
- <Binary Id="BIN_File_46002" SourceFile="$(sys.SOURCEFILEDIR)\Redist\BIN_File_46002.dll" />
17
- <Binary Id="BIN_File_46001" SourceFile="$(sys.SOURCEFILEDIR)\Redist\BIN_File_46001.dll" />
18
- <Binary Id="BIN_File_107602" SourceFile="$(sys.SOURCEFILEDIR)\Redist\BIN_File_107602.dll" />
19
- <!-- We are stuck using GUID'ed ids here because they were hardcoded in the Help2 dlls-->
20
- <CustomAction Id="CA_BeginHelpTransaction.3643236F_FC70_11D3_A536_0090278A1BB8" DllEntry="BeginTransaction" Execute="deferred" Impersonate="no" BinaryRef="BIN_File_46001" />
21
- <CustomAction Id="CA_RegisterPlugIn.3643236F_FC70_11D3_A536_0090278A1BB8" DllEntry="RegisterPlugIn2" Execute="deferred" Impersonate="no" BinaryRef="BIN_File_46001" />
22
- <CustomAction Id="CA_CommitHelpTransaction.3643236F_FC70_11D3_A536_0090278A1BB8" DllEntry="CommitTransaction" Return="ignore" Execute="commit" Impersonate="no" BinaryRef="BIN_File_46001" />
23
- <CustomAction Id="CA_CommitHelpTransactionNoRB.3643236F_FC70_11D3_A536_0090278A1BB8" DllEntry="CommitTransaction" Return="ignore" Execute="deferred" Impersonate="no" BinaryRef="BIN_File_46001" />
24
- <CustomAction Id="CA_ExportTempHxDs.3643236F_FC70_11D3_A536_0090278A1BB8" DllEntry="ExportTempHxDs" BinaryRef="BIN_File_46002" />
25
- <CustomAction Id="CA_RegisterNamespace.3643236F_FC70_11D3_A536_0090278A1BB8" DllEntry="RegisterNamespace2" Execute="deferred" Impersonate="no" BinaryRef="BIN_File_46001" />
26
- <CustomAction Id="CA_RollbackTempHxDs.3643236F_FC70_11D3_A536_0090278A1BB8" DllEntry="RemoveTempHxDs" Execute="rollback" Impersonate="no" BinaryRef="BIN_File_46001" />
27
- <CustomAction Id="CA_RegisterMicrosoftHelp.3643236F_FC70_11D3_A536_0090278A1BB8" DllEntry="RegisterMicrosoftHelp" Return="ignore" BinaryRef="BIN_File_46002" />
28
- <CustomAction Id="CA_RegisterHelpFile.3643236F_FC70_11D3_A536_0090278A1BB8" DllEntry="RegisterHelpFile" Execute="deferred" Impersonate="no" BinaryRef="BIN_File_46001" />
29
- <CustomAction Id="CA_RegisterFilter.3643236F_FC70_11D3_A536_0090278A1BB8" DllEntry="RegisterFilter2" Execute="deferred" Impersonate="no" BinaryRef="BIN_File_46001" />
30
- <CustomAction Id="CA_RemoveNamespace.3643236F_FC70_11D3_A536_0090278A1BB8" DllEntry="RemoveNamespace" Execute="deferred" Impersonate="no" BinaryRef="BIN_File_46001" />
31
- <CustomAction Id="CA_RemoveTempHxDs.3643236F_FC70_11D3_A536_0090278A1BB8" DllEntry="RemoveTempHxDs" Return="ignore" BinaryRef="BIN_File_46001" />
32
- <!-- This isn't actually executed, but the Help2 dlls use it to find the key for the binary file-->
33
- <CustomAction Id="CA_DummyForHXDS_DLL.3643236F_FC70_11D3_A536_0090278A1BB8" DllEntry="Bogus" BinaryRef="BIN_File_107602" />
34
- <CustomAction Id="CA_RollbackHelpTransaction.3643236F_FC70_11D3_A536_0090278A1BB8" DllEntry="RollbackTransaction" Execute="rollback" Impersonate="no" BinaryRef="BIN_File_46001" />
35
- <CustomAction Id="CA_RemoveHelpFile.3643236F_FC70_11D3_A536_0090278A1BB8" DllEntry="RemoveHelpFile" Execute="deferred" Impersonate="no" BinaryRef="BIN_File_46001" />
36
- <CustomAction Id="CA_UnRegisterMicrosoftHelp.3643236F_FC70_11D3_A536_0090278A1BB8" DllEntry="UnRegisterMicrosoftHelp" Return="ignore" BinaryRef="BIN_File_46002" />
37
-
38
- <InstallExecuteSequence>
39
- <Custom Action="CA_ExportTempHxDs.3643236F_FC70_11D3_A536_0090278A1BB8" Before="ProcessComponents" />
40
-
41
- <Custom Action="CA_RollbackHelpTransaction.3643236F_FC70_11D3_A536_0090278A1BB8" Before="CA_BeginHelpTransaction.3643236F_FC70_11D3_A536_0090278A1BB8" />
42
- <Custom Action="CA_BeginHelpTransaction.3643236F_FC70_11D3_A536_0090278A1BB8" After="RemoveFiles" />
43
- <Custom Action="CA_UnRegisterMicrosoftHelp.3643236F_FC70_11D3_A536_0090278A1BB8" After="CA_BeginHelpTransaction.3643236F_FC70_11D3_A536_0090278A1BB8" />
44
-
45
- <Custom Action="CA_RegisterMicrosoftHelp.3643236F_FC70_11D3_A536_0090278A1BB8" After="InstallFiles" />
46
-
47
- <Custom Action="CA_CommitHelpTransaction.3643236F_FC70_11D3_A536_0090278A1BB8" Before="InstallFinalize" Condition="( NOT RollbackDisabled )" />
48
- <Custom Action="CA_CommitHelpTransactionNoRB.3643236F_FC70_11D3_A536_0090278A1BB8" Before="InstallFinalize" Condition="( RollbackDisabled )" />
49
- <Custom Action="CA_RemoveTempHxDs.3643236F_FC70_11D3_A536_0090278A1BB8" After="InstallFinalize" />
50
- </InstallExecuteSequence>
51
-
52
- <CustomTable Id="HelpPlugin">
53
- <Column Id="HelpNamespace_" Type="string" Width="72" PrimaryKey="yes" />
54
- <Column Id="HelpNamespace_Parent" Type="string" Width="72" PrimaryKey="yes" />
55
- <Column Id="File_HxT" Nullable="yes" Type="string" Width="72" />
56
- <Column Id="File_HxA" Nullable="yes" Type="string" Width="72" />
57
- <Column Id="File_ParentHxT" Nullable="yes" Type="string" Width="72" />
58
- </CustomTable>
59
-
60
- <CustomTable Id="HelpNamespace">
61
- <Column Id="NamespaceKey" Type="string" Width="72" PrimaryKey="yes" />
62
- <Column Id="NamespaceName" Type="string" Width="0" />
63
- <Column Id="File_Collection" Type="string" Width="72" />
64
- <Column Id="Description" Nullable="yes" Localizable="yes" Type="string" Width="0" />
65
- </CustomTable>
66
- </Fragment>
67
-</Wix>
src/ext/VisualStudio/wixlib/Redist/BIN_File_107602.dll
Binary files a/src/ext/VisualStudio/wixlib/Redist/BIN_File_107602.dll and /dev/null differ
src/ext/VisualStudio/wixlib/Redist/BIN_File_46001.dll
Binary files a/src/ext/VisualStudio/wixlib/Redist/BIN_File_46001.dll and /dev/null differ
src/ext/VisualStudio/wixlib/Redist/BIN_File_46002.dll
Binary files a/src/ext/VisualStudio/wixlib/Redist/BIN_File_46002.dll and /dev/null differ
src/ext/VisualStudio/wixlib/VS2017.wxs
+2
-3
@@ -2,11 +2,10 @@
2
3
4
<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
5
+ <?include ..\..\caDecor.wxi ?>
6
+
7
<Fragment>
8
<Property Id="VS2017_ROOT_FOLDER" Secure="yes" />
7
-
8
- <!-- Currently supported only on x86 -->
9
- <CustomActionRef Id="VSFindInstances" />
9
</Fragment>
10
11
<Fragment>
src/ext/VisualStudio/wixlib/VS2019.wxs
+2
-3
@@ -2,11 +2,10 @@
2
3
4
<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
5
+ <?include ..\..\caDecor.wxi ?>
6
+
7
<Fragment>
8
<Property Id="VS2019_ROOT_FOLDER" Secure="yes" />
7
-
8
- <!-- Currently supported only on x86 -->
9
- <CustomActionRef Id="VSFindInstances" />
9
</Fragment>
10
11
<Fragment>
src/ext/VisualStudio/wixlib/VS2022.wxs
new
+141
@@ -0,0 +1,141 @@
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
+
3
+
4
+<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
5
+ <?include ..\..\caDecor.wxi ?>
6
+
7
+ <Fragment>
8
+ <Property Id="VS2022_ROOT_FOLDER" Secure="yes" />
9
+ </Fragment>
10
+
11
+ <Fragment>
12
+ <PropertyRef Id="VS2022_ROOT_FOLDER" />
13
+ <Property Id="VS2022_IDE_DIR" Secure="yes">
14
+ <DirectorySearch Id="VS2022DirectorySearch" Path="[VS2022_ROOT_FOLDER]">
15
+ <DirectorySearch Id="VS2022EnvironmentDirectorySearch" Path="Common7\IDE" Depth="1" />
16
+ </DirectorySearch>
17
+ </Property>
18
+ </Fragment>
19
+
20
+ <Fragment>
21
+ <Property Id="VS2022_EXTENSIONS_DIR" Secure="yes">
22
+ <DirectorySearchRef Id="VS2022EnvironmentDirectorySearch" Parent="VS2022DirectorySearch" Path="Common7\IDE">
23
+ <DirectorySearch Id="VS2022ExtensionsDirectorySearch" Path="Extensions" Depth="1" />
24
+ </DirectorySearchRef>
25
+ </Property>
26
+ </Fragment>
27
+
28
+ <Fragment>
29
+ <Property Id="VS2022_PROJECTTEMPLATES_DIR" Secure="yes">
30
+ <DirectorySearchRef Id="VS2022EnvironmentDirectorySearch" Parent="VS2022DirectorySearch" Path="Common7\IDE">
31
+ <DirectorySearch Id="VS2022ProjectTemplatesDirectorySearch" Path="ProjectTemplates" Depth="1" />
32
+ </DirectorySearchRef>
33
+ </Property>
34
+ </Fragment>
35
+
36
+ <Fragment>
37
+ <PropertyRef Id="VS2022_ROOT_FOLDER" />
38
+ <Property Id="VS2022_SCHEMAS_DIR" Secure="yes">
39
+ <DirectorySearch Id="VS2022XmlDirectorySearch" Path="[VS2022_ROOT_FOLDER]\Xml" Depth="1">
40
+ <DirectorySearch Id="VS2022XmlSchemasDirectorySearch" Path="Schemas" Depth="1" />
41
+ </DirectorySearch>
42
+ </Property>
43
+ </Fragment>
44
+
45
+ <Fragment>
46
+ <Property Id="VS2022_ITEMTEMPLATES_DIR" Secure="yes">
47
+ <DirectorySearchRef Id="VS2022EnvironmentDirectorySearch" Parent="VS2022DirectorySearch" Path="Common7\IDE">
48
+ <DirectorySearch Id="VS2022ItemTemplatesDirectorySearch" Path="ItemTemplates" Depth="1" />
49
+ </DirectorySearchRef>
50
+ </Property>
51
+ </Fragment>
52
+
53
+ <Fragment>
54
+ <PropertyRef Id="VS2022_ROOT_FOLDER" />
55
+ <Property Id="VS2022_BOOTSTRAPPER_PACKAGE_FOLDER" Secure="yes">
56
+ <DirectorySearch Id="VS2022SDKDirectorySearch" Path="[VS2022_ROOT_FOLDER]\SDK" Depth="1">
57
+ <DirectorySearch Id="SearchForVS2022BootstrapperPackageDirectory" Path="Bootstrapper" Depth="1" />
58
+ </DirectorySearch>
59
+ </Property>
60
+ </Fragment>
61
+
62
+ <Fragment>
63
+ <Property Id="VS2022DEVENV" Secure="yes">
64
+ <DirectorySearchRef Id="VS2022EnvironmentDirectorySearch" Parent="VS2022DirectorySearch" Path="Common7\IDE">
65
+ <FileSearch Id="VS2022DevEnvSearch" Name="devenv.exe" />
66
+ </DirectorySearchRef>
67
+ </Property>
68
+ </Fragment>
69
+
70
+ <Fragment>
71
+ <CustomAction Id="VS2022Setup" Property="VS2022DEVENV" ExeCommand="/setup" Execute="deferred" Return="ignore" Impersonate="no" />
72
+ <PropertyRef Id="VS2022DEVENV" />
73
+
74
+ <InstallExecuteSequence>
75
+ <Custom Action="VS2022Setup" Before="InstallFinalize" Overridable="yes" Condition="VS2022DEVENV" />
76
+ </InstallExecuteSequence>
77
+ </Fragment>
78
+
79
+ <Fragment>
80
+ <CustomAction Id="VS2022InstallVSTemplates" Property="VS2022DEVENV" ExeCommand="/InstallVSTemplates" Execute="deferred" Return="ignore" Impersonate="no" />
81
+ <PropertyRef Id="VS2022DEVENV" />
82
+
83
+ <InstallExecuteSequence>
84
+ <Custom Action="VS2022InstallVSTemplates" Before="InstallFinalize" Overridable="yes" Condition="VS2022DEVENV" />
85
+ </InstallExecuteSequence>
86
+ </Fragment>
87
+
88
+ <!-- Indicates whether the Visual C# project system is installed as a part of -->
89
+ <!-- Visual Studio 2019 standard or higher. If this property is set, that -->
90
+ <!-- means Visual Studio 2019 standard or higher is installed and the Visual -->
91
+ <!-- C# language tools were installed as a part of VS 2019 setup. -->
92
+ <Fragment>
93
+ <Property Id="VS2022_IDE_VCSHARP_PROJECTSYSTEM_INSTALLED" Secure="yes" />
94
+ <CustomActionRef Id="VSFindInstances" />
95
+ </Fragment>
96
+
97
+ <!-- Indicates whether the Visual Basic project system is installed as a part of -->
98
+ <!-- Visual Studio 2019 standard or higher. If this property is set, that -->
99
+ <!-- means Visual Studio 2019 standard or higher is installed and the Visual -->
100
+ <!-- Basic language tools were installed as a part of VS 2019 setup. -->
101
+ <Fragment>
102
+ <Property Id="VS2022_IDE_VB_PROJECTSYSTEM_INSTALLED" Secure="yes" />
103
+ <CustomActionRef Id="VSFindInstances" />
104
+ </Fragment>
105
+
106
+ <!-- Indicates whether the Visual Web Developer project system is installed as a part of -->
107
+ <!-- Visual Studio 2019 standard or higher. If this property is set, that -->
108
+ <!-- means Visual Studio 2019 standard or higher is installed and the Visual -->
109
+ <!-- Web Developer language tools were installed as a part of VS 2019 setup. -->
110
+ <Fragment>
111
+ <Property Id="VS2022_IDE_VWD_PROJECTSYSTEM_INSTALLED" Secure="yes" />
112
+ <CustomActionRef Id="VSFindInstances" />
113
+ </Fragment>
114
+
115
+ <!-- Indicates whether the Visual C++ project system is installed as a part of -->
116
+ <!-- Visual Studio 2019 standard or higher. If this property is set, that -->
117
+ <!-- means Visual Studio 2019 standard or higher is installed and the Visual -->
118
+ <!-- C++ language tools were installed as a part of VS 2019 setup. -->
119
+ <Fragment>
120
+ <Property Id="VS2022_IDE_VC_PROJECTSYSTEM_INSTALLED" Secure="yes" />
121
+ <CustomActionRef Id="VSFindInstances" />
122
+ </Fragment>
123
+
124
+ <!-- Indicates whether the Visual Studio 2019 Team Test project system is installed -->
125
+ <Fragment>
126
+ <Property Id="VS2022_IDE_VSTS_TESTSYSTEM_INSTALLED" Secure="yes" />
127
+ <CustomActionRef Id="VSFindInstances" />
128
+ </Fragment>
129
+
130
+ <!-- Indicates whether the Visual Studio Modeling project system is installed -->
131
+ <Fragment>
132
+ <Property Id="VS2022_IDE_MODELING_PROJECTSYSTEM_INSTALLED" Secure="yes" />
133
+ <CustomActionRef Id="VSFindInstances" />
134
+ </Fragment>
135
+
136
+ <!-- Indicates whether the Visual Studio F# project system is installed -->
137
+ <Fragment>
138
+ <Property Id="VS2022_IDE_FSHARP_PROJECTSYSTEM_INSTALLED" Secure="yes" />
139
+ <CustomActionRef Id="VSFindInstances" />
140
+ </Fragment>
141
+</Wix>
src/ext/VisualStudio/wixlib/VSExtension_Platform.wxi
+6
-4
@@ -1,16 +1,18 @@
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
3
<Include xmlns="http://wixtoolset.org/schemas/v4/wxs">
4
- <?include caSuffix.wxi ?>
4
+ <?include ..\..\caDecor.wxi ?>
5
+
6
<Fragment>
6
- <CustomAction Id="VSFindInstances$(var.Suffix)" DllEntry="FindInstances" Execute="firstSequence" Return="check" SuppressModularization="yes" BinaryRef="VSCA$(var.Suffix)" />
7
+ <CustomAction Id="$(var.Prefix)VSFindInstances$(var.Suffix)" DllEntry="FindInstances" Execute="firstSequence" Return="check" SuppressModularization="yes" BinaryRef="VSCA$(var.Suffix)" />
8
<InstallExecuteSequence>
8
- <Custom Action="VSFindInstances$(var.Suffix)" Before="AppSearch" Overridable="yes" />
9
+ <Custom Action="$(var.Prefix)VSFindInstances$(var.Suffix)" Before="AppSearch" Overridable="yes" />
10
</InstallExecuteSequence>
11
<InstallUISequence>
11
- <Custom Action="VSFindInstances$(var.Suffix)" Before="AppSearch" Overridable="yes" />
12
+ <Custom Action="$(var.Prefix)VSFindInstances$(var.Suffix)" Before="AppSearch" Overridable="yes" />
13
</InstallUISequence>
14
</Fragment>
15
+
16
<Fragment>
17
<Binary Id="VSCA$(var.Suffix)" SourceFile="vsca.dll" />
18
</Fragment>
src/ext/VisualStudio/wixlib/VSExtension_x64.wxs
new
+8
@@ -0,0 +1,8 @@
1
+<?xml version="1.0"?>
2
+<!-- 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. -->
3
+
4
+
5
+<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
6
+ <?define platform=x64 ?>
7
+ <?include VSExtension_Platform.wxi ?>
8
+</Wix>
src/ext/VisualStudio/wixlib/caSuffix.wxi
deleted
-28
@@ -1,28 +0,0 @@
1
-<?xml version="1.0" encoding="utf-8"?>
2
-<!-- 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. -->
3
-
4
-<Include xmlns="http://wixtoolset.org/schemas/v4/wxs">
5
- <?ifndef platform ?>
6
- <?error Required value "platform" not defined in include caSuffix.wxi ?>
7
- <?endif ?>
8
-
9
- <?ifdef Suffix ?>
10
- <?undef Suffix ?>
11
- <?undef DeferredSuffix ?>
12
- <?endif ?>
13
-
14
- <?if $(var.platform)="x86" ?>
15
- <?define Suffix="" ?>
16
- <?define DeferredSuffix="" ?>
17
- <?endif ?>
18
-
19
- <?if $(var.platform)="x64" ?>
20
- <?define Suffix="_x64" ?>
21
- <?define DeferredSuffix="_64" ?>
22
- <?endif ?>
23
-
24
- <?if $(var.platform)="arm" ?>
25
- <?define Suffix="_ARM" ?>
26
- <?define DeferredSuffix="_ARM" ?>
27
- <?endif ?>
28
-</Include>
src/ext/VisualStudio/wixlib/vs.wixproj
+2
-1
@@ -9,7 +9,8 @@
9
</PropertyGroup>
10
11
<ItemGroup>
12
- <ProjectReference Include="..\ca\vsca.vcxproj" Properties="Platform=x86" ReferenceOutputAssembly="false" />
12
+ <ProjectReference Include="..\ca\vsca.vcxproj" Properties="Platform=x86" ReferenceOutputAssembly="false" />
13
+ <ProjectReference Include="..\ca\vsca.vcxproj" Properties="Platform=x64" ReferenceOutputAssembly="false" />
14
</ItemGroup>
15
16
<ItemGroup>
src/ext/VisualStudio/wixlib/vs2005/VS2005_VSIPCC_Collection_Files_RTL.wxs
deleted
-63
@@ -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
-
3
-
4
-<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
5
- <Fragment Id="VS2005_Namespace">
6
- <DirectoryRef Id="VSIPCC">
7
- <Component Id="VSIPCC_Reg" Guid="96F72137-191F-4120-A2FA-9DA8F6C2C993" KeyPath="yes">
8
- <CreateFolder />
9
- <RegistryValue Id="_FldbVs8_RegFile_15039_________00000" Root="HKLM" Key="SOFTWARE\Microsoft\MSDN\8.0\Help\0x0409\{F658C410-5D42-41a9-AB6C-83E8FE395595}" Name="Filename" Type="string" Value="ms-help://MS.VSIPCC.v80" />
10
- </Component>
11
- <Directory Id="vsipcc_v8.0" Name="v8.0" FileSource="$(sys.SOURCEFILEDIR)\Redist">
12
- <Component Id="vsipcc_collection________" Guid="454FF049-0B57-4927-8A0C-AA10608A480C">
13
- <File Id="FL_vsipcc_reg_hxs_86878________" Name="vsipcc_reg.hxs" KeyPath="yes" />
14
- <File Id="FL_vsipcc_hxc_86879________" Name="vsipcc.hxc" />
15
- <File Id="FL_vsipcc_hxt_86880________" Name="vsipcc.hxt" />
16
- <File Id="FL_vsipccALinks_hxk_86881________" Name="vsipccALinks.hxk" />
17
- <File Id="FL_vsipccBLinks_hxk_86882________" Name="vsipccBLinks.hxk" />
18
- <File Id="FL_vsipccFLinks_hxk_86885________" Name="vsipccFLinks.hxk" />
19
- <File Id="FL_vsipccKLinks_hxk_86886________" Name="vsipccKLinks.hxk" />
20
- <File Id="FL_vsipccNamedURLs_hxk_86888________.3643236F_FC70_11D3_A536_0090278A1BB" Name="vsipccNamedURLs.hxk" />
21
- <File Id="FL_vsipccSlinks_hxk_93825________" Name="vsipccSlinks.hxk" />
22
- <File Id="FL_VsipCCSamples_HxK_103959________" Name="VsipCCSamples.HxK" />
23
- </Component>
24
- </Directory>
25
- </DirectoryRef>
26
- <CustomAction Id="CA_HxMerge_VSIPCC_VSCC" Return="ignore" Execute="commit" Impersonate="no" ExeCommand="ms-help://MS.VSCC.v80" BinaryRef="BIN_File_60377" />
27
- <CustomAction Id="CA_HxMerge_VSIPCC_VSExpCC" Return="ignore" Execute="commit" Impersonate="no" ExeCommand="ms-help://MS.VSExpressCC.v80" BinaryRef="BIN_File_60377" />
28
- <InstallExecuteSequence>
29
- <Custom Action="CA_HxMerge_VSIPCC_VSCC" After="CA_RegisterMicrosoftHelp.3643236F_FC70_11D3_A536_0090278A1BB8" />
30
- <Custom Action="CA_HxMerge_VSIPCC_VSExpCC" After="CA_RegisterMicrosoftHelp.3643236F_FC70_11D3_A536_0090278A1BB8" />
31
- </InstallExecuteSequence>
32
- <Binary Id="BIN_File_60377" SourceFile="$(sys.SOURCEFILEDIR)\Redist\BIN_File_60377.dll" />
33
- <CustomTable Id="HelpPlugin">
34
- <Row>
35
- <Data Column="HelpNamespace_" Value="MS_VSIPCC_v80" />
36
- <Data Column="HelpNamespace_Parent" Value="MS_VSCC_v80" />
37
- <Data Column="File_HxT" Value="FL_vsipcc_hxt_86880________" />
38
- <Data Column="File_HxA" />
39
- <Data Column="File_ParentHxT" />
40
- </Row>
41
- <Row>
42
- <Data Column="HelpNamespace_" Value="MS_VSIPCC_v80" />
43
- <Data Column="HelpNamespace_Parent" Value="MS_VSExpressCC_v80" />
44
- <Data Column="File_HxT" Value="FL_vsipcc_hxt_86880________" />
45
- <Data Column="File_HxA" />
46
- <Data Column="File_ParentHxT" />
47
- </Row>
48
- </CustomTable>
49
- <CustomTable Id="HelpNamespace">
50
- <Row>
51
- <Data Column="NamespaceKey" Value="MS_VSIPCC_v80" />
52
- <Data Column="NamespaceName" Value="MS.VSIPCC.v80" />
53
- <Data Column="File_Collection" Value="FL_vsipcc_hxc_86879________" />
54
- <Data Column="Description" Value="VSIP Documentation" />
55
- </Row>
56
- </CustomTable>
57
-
58
- <ComponentGroup Id="Help2_VS2005_Namespace_Components">
59
- <ComponentRef Id="VSIPCC_Reg" />
60
- <ComponentRef Id="vsipcc_collection________" />
61
- </ComponentGroup>
62
- </Fragment>
63
-</Wix>
src/ext/VisualStudio/wixlib/vs2005/redist/BIN_File_60377.dll
Binary files a/src/ext/VisualStudio/wixlib/vs2005/redist/BIN_File_60377.dll and /dev/null differ
src/ext/VisualStudio/wixlib/vs2005/redist/vsipCCSamples.HxK
deleted
-14
@@ -1,14 +0,0 @@
1
-<?xml version="1.0" encoding="utf-8"?>
2
-<!DOCTYPE HelpIndex>
3
-<HelpIndex
4
- DTDVersion = "1.0"
5
- Name = "Samples"
6
- Id = "VsipCCSamples"
7
- AutoInclude = "Yes"
8
- Merge = "Yes"
9
- Sort = "Yes"
10
- Title = "Samples"
11
- Visible = "No"
12
- LangId = "1033"
13
- >
14
-</HelpIndex>
\ No newline at end of file
src/ext/VisualStudio/wixlib/vs2005/redist/vsipcc.hxc
deleted
-33
@@ -1,33 +0,0 @@
1
-<?xml version="1.0"?>
2
-<!DOCTYPE HelpCollection>
3
-<HelpCollection
4
- DTDVersion = "1.0"
5
- Id = "vsipcc.8.0"
6
- FileVersion = "8.0.41025.0"
7
- LangId = "1033"
8
- Title = "Microsoft VSIP Combined Help Collection"
9
- Copyright = "Copyright (c) 2005 Microsoft Corporation. All Rights Reserved."
10
- >
11
- <TOCDef File = "vsipcc.HxT" Id = "InsertTOC:VSIPCC" />
12
- <KeywordIndexDef File = "vsipccALinks.HxK"/>
13
- <KeywordIndexDef File = "vsipccBLinks.HxK"/>
14
- <KeywordIndexDef File = "vsipccCLinks.HxK"/>
15
- <KeywordIndexDef File = "vsipccFLinks.HxK"/>
16
- <KeywordIndexDef File = "vsipccKLinks.HxK"/>
17
- <KeywordIndexDef File = "vsipccSLinks.HxK"/>
18
- <KeywordIndexDef File = "vsipccNamedUrls.HxK"/>
19
- <KeywordIndexDef File= "VsipCCSamples.HxK" />
20
-
21
- <ItemMoniker Name = "!DefaultNamedUrlIndex" ProgId = "HxDs.HxIndex" InitData = "VsccNamedUrls"/>
22
- <ItemMoniker Name = "!SampleInfo" ProgId = "HxDs.HxSampleCollection" InitData = "Samples"/>
23
- <ItemMoniker Name = "!DefaultTOC" ProgId = "HxDs.HxHierarchy" InitData = "TOC"/>
24
- <ItemMoniker Name = "!DefaultFullTextSearch" ProgId = "HxDs.HxFullTextSearch" InitData = ""/>
25
- <ItemMoniker Name = "!DefaultAssociativeIndex" ProgId = "HxDs.HxIndex" InitData = "A"/>
26
- <ItemMoniker Name = "!DefaultDynamicLinkIndex" ProgId = "HxDs.HxIndex" InitData = "B"/>
27
- <ItemMoniker Name = "!DefaultCodeIndex" ProgId = "HxDs.HxIndex" InitData = "C"/>
28
- <ItemMoniker Name = "!DefaultContextWindowIndex" ProgId = "HxDs.HxIndex" InitData = "F"/>
29
- <ItemMoniker Name = "!DefaultKeywordIndex" ProgId = "HxDs.HxIndex" InitData = "K"/>
30
- <ItemMoniker Name = "!DefaultSearchWindowIndex" ProgId = "HxDs.HxIndex" InitData = "S"/>
31
- <ItemMoniker Name = "!DefaultSampleIndex" ProgId="HxDs.HxIndex" InitData="Samples" />
32
-</HelpCollection>
33
-
src/ext/VisualStudio/wixlib/vs2005/redist/vsipcc.hxt
deleted
-15
@@ -1,15 +0,0 @@
1
-<?xml version="1.0"?>
2
-<!DOCTYPE HelpTOC>
3
-<HelpTOC
4
- DTDVersion = "1.0"
5
- Id = "vsipcc_TOC"
6
- FileVersion = "8.0.0.0"
7
- LangId = "1033"
8
- ParentNodeIcon = "Book"
9
- PluginStyle = "Flat"
10
- >
11
- <HelpTOCNode Id = "InsertTOC:VSIP" NodeType = "TOC"/>
12
- <HelpTOCNode Id = "InsertTOC:Partner" NodeType = "TOC"/>
13
-</HelpTOC>
14
-
15
-
src/ext/VisualStudio/wixlib/vs2005/redist/vsipccALinks.hxk
deleted
-13
@@ -1,13 +0,0 @@
1
-<?xml version="1.0"?>
2
-<!DOCTYPE HelpIndex>
3
-<HelpIndex
4
- DTDVersion = "1.0"
5
- Name = "A"
6
- Id = "vsipcc8.0_ALinks"
7
- Merge = "Yes"
8
- Sort = "Yes"
9
- Title = "HxLink Index"
10
- Visible = "No"
11
- LangId = "1033"
12
- >
13
-</HelpIndex>
\ No newline at end of file
src/ext/VisualStudio/wixlib/vs2005/redist/vsipccBLinks.hxk
deleted
-13
@@ -1,13 +0,0 @@
1
-<?xml version="1.0"?>
2
-<!DOCTYPE HelpIndex>
3
-<HelpIndex
4
- DTDVersion = "1.0"
5
- Name = "B"
6
- Id = "vsipcc8.0_BLinks"
7
- Merge = "Yes"
8
- Sort = "Yes"
9
- Title = "Dynamic Link Index"
10
- Visible = "No"
11
- LangId = "1033"
12
- >
13
-</HelpIndex>
src/ext/VisualStudio/wixlib/vs2005/redist/vsipccFLinks.hxk
deleted
-14
@@ -1,14 +0,0 @@
1
-<?xml version="1.0"?>
2
-<!DOCTYPE HelpIndex>
3
-<HelpIndex
4
- DTDVersion = "1.0"
5
- Name = "F"
6
- Id = "vsipcc8.0_FLinks"
7
- AutoInclude = "Yes"
8
- Merge = "Yes"
9
- Sort = "Yes"
10
- Title = "Dynamic Help and F1 Index"
11
- Visible = "No"
12
- LangId = "1033"
13
- >
14
-</HelpIndex>
\ No newline at end of file
src/ext/VisualStudio/wixlib/vs2005/redist/vsipccKLinks.hxk
deleted
-13
@@ -1,13 +0,0 @@
1
-<?xml version="1.0"?>
2
-<!DOCTYPE HelpIndex>
3
-<HelpIndex
4
- DTDVersion = "1.0"
5
- Name = "K"
6
- Id = "vsipcc8.0_KLinks"
7
- Merge = "Yes"
8
- Sort = "Yes"
9
- Title = "Keyword Index"
10
- Visible = "Yes"
11
- LangId = "1033"
12
- >
13
-</HelpIndex>
\ No newline at end of file
src/ext/VisualStudio/wixlib/vs2005/redist/vsipccNamedURLs.hxk
deleted
-13
@@ -1,13 +0,0 @@
1
-<?xml version="1.0"?>
2
-<!DOCTYPE HelpIndex>
3
-<HelpIndex
4
- DTDVersion = "1.0"
5
- Name = "VsipccNamedUrls"
6
- Id = "VsipccNamedUrls"
7
- Merge = "Yes"
8
- Sort = "Yes"
9
- Title = "VSIPCC NamedUrl Index"
10
- Visible = "No"
11
- LangId = "1033"
12
- >
13
-</HelpIndex>
\ No newline at end of file
src/ext/VisualStudio/wixlib/vs2005/redist/vsipccSlinks.hxk
deleted
-14
@@ -1,14 +0,0 @@
1
-<?xml version="1.0"?>
2
-<!DOCTYPE HelpIndex>
3
-<HelpIndex
4
- DTDVersion = "1.0"
5
- Name = "S"
6
- Id = "vsipcc8.0_SLinks"
7
- Merge = "Yes"
8
- Sort = "Yes"
9
- Title = "Search Enhancement Index"
10
- Visible = "No"
11
- LangId = "1033"
12
- >
13
-</HelpIndex>
14
-
src/ext/VisualStudio/wixlib/vs2005/redist/vsipcc_reg.hxs
Binary files a/src/ext/VisualStudio/wixlib/vs2005/redist/vsipcc_reg.hxs and /dev/null differ
src/ext/VisualStudio/wixlib/vs2008/VS2008_VSIPCC_Collection_Files_RTL.wxs
deleted
-60
@@ -1,60 +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
-
3
-
4
-<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
5
- <Fragment Id="VS2008_Namespace">
6
- <Binary Id="BIN_435439_x86_enu" SourceFile="$(sys.SOURCEFILEDIR)\Redist\BIN_435439_x86_enu.dll" />
7
- <CustomAction Id="CA_ScheduleExtHelpPlugin_VSCC_VSIPCC" DllEntry="ScheduleExtHelpPlugin" Return="ignore" BinaryRef="BIN_435439_x86_enu" />
8
- <CustomAction Id="CA_ExtHelpPlugin" DllEntry="ExtHelpPluginAction" Execute="deferred" Impersonate="no" BinaryRef="BIN_435439_x86_enu" />
9
-
10
- <DirectoryRef Id="VSIPCC">
11
- <Component Id="VSIPCC_Reg_27501" Guid="{7C32E9FB-9C4D-416B-8ACC-9D487ED0ADBD}" KeyPath="yes">
12
- <CreateFolder Directory="VSIPCC" />
13
- <RegistryValue Id="reg7291AF922BB02FD23E15437538DF9347" Root="HKLM" Key="SOFTWARE\Microsoft\MSDN\9.0\Help\0x0409\{F658C410-5D42-41a9-AB6C-83E8FE395595}" Name="Filename" Value="ms-help://MS.VSIPCC.v90" Type="string" />
14
- </Component>
15
- <Directory Id="vsipcc_v9.0" Name="v9.0" FileSource="$(sys.SOURCEFILEDIR)\Redist">
16
- <Component Id="vsipcc_collection_25097" Guid="{D419D13C-D6D8-4E2A-A3EF-B26398D36524}">
17
- <File Id="FL_vsipcc_reg_hxs_86878_86878_cn_ln" Name="vsipcc_reg.hxs" KeyPath="yes" Vital="no" />
18
- <File Id="FL_vsipcc_hxc_86879_86879_cn_ln" Name="_vsipcc90.hxc" Vital="no" />
19
- <File Id="FL_vsipcc_hxt_86880_86880_cn_ln" Name="_vsipcc90.hxt" Vital="no" />
20
- <File Id="FL_vsipccALinks_hxk_86881_86881_cn_ln" Name="_ALinks.hxk" Vital="no" />
21
- <File Id="FL_vsipccBLinks_hxk_86882_86882_cn_ln" Name="_BLinks.hxk" Vital="no" />
22
- <File Id="FL_vsipccCLinks_hxk_cn_ln" Name="_CLinks.hxk" Vital="no" />
23
- <File Id="FL_vsipccFLinks_hxk_86885_86885_cn_ln" Name="_FLinks.hxk" Vital="no" />
24
- <File Id="FL_vsipccKLinks_hxk_86886_86886_cn_ln" Name="_KLinks.hxk" Vital="no" />
25
- <File Id="FL_vsipccNamedURLs_hxk_86888_86888_cn_ln" Name="_vsipcc_namedUrls.hxk" Vital="no" />
26
- <File Id="FL_vsipccSlinks_hxk_93825_93825_cn_ln" Name="_SLinks.hxk" Vital="no" />
27
- <File Id="FL_VsipCCSamples_HxK_103959_103959_cn_ln" Name="_vsipcc_samples.HxK" Vital="no" />
28
- </Component>
29
- </Directory>
30
- </DirectoryRef>
31
- <CustomTable Id="HelpNamespace">
32
- <Row>
33
- <Data Column="NamespaceKey" Value="MS.VSIPCC.v90" />
34
- <Data Column="NamespaceName" Value="MS.VSIPCC.v90" />
35
- <Data Column="File_Collection" Value="FL_vsipcc_hxc_86879_86879_cn_ln" />
36
- <Data Column="Description" Value="VSIP Documentation" />
37
- </Row>
38
- </CustomTable>
39
- <CustomTable Id="HelpPlugin">
40
- <Row>
41
- <Data Column="HelpNamespace_" Value="MS.VSIPCC.v90" />
42
- <Data Column="HelpNamespace_Parent" Value="MS.VSCC.v90" />
43
- <Data Column="File_HxT" Value="FL_vsipcc_hxt_86880_86880_cn_ln" />
44
- <Data Column="File_HxA" />
45
- <Data Column="File_ParentHxT" />
46
- </Row>
47
- </CustomTable>
48
- <Property Id="EXTERNALPLUGINLIST" Value="MS.VSCC.v90;MS.VSIPCC.v90" />
49
- <Property Id="DirectoryTable_x86" Value="DirectoryTable" />
50
- <Property Id="HHFilterTable" Value="HHFilterTable" />
51
- <InstallExecuteSequence>
52
- <Custom Action="CA_ScheduleExtHelpPlugin_VSCC_VSIPCC" After="CA_RegisterMicrosoftHelp.3643236F_FC70_11D3_A536_0090278A1BB8" Condition="Not Installed" />
53
- </InstallExecuteSequence>
54
-
55
- <ComponentGroup Id="Help2_VS2008_Namespace_Components">
56
- <ComponentRef Id="VSIPCC_Reg_27501" />
57
- <ComponentRef Id="vsipcc_collection_25097" />
58
- </ComponentGroup>
59
- </Fragment>
60
-</Wix>
src/ext/VisualStudio/wixlib/vs2008/redist/BIN_435439_x86_enu.dll
Binary files a/src/ext/VisualStudio/wixlib/vs2008/redist/BIN_435439_x86_enu.dll and /dev/null differ
src/ext/VisualStudio/wixlib/vs2008/redist/_ALinks.hxk
deleted
-10
@@ -1,10 +0,0 @@
1
-<?xml version="1.0"?>
2
-<!DOCTYPE HelpIndex>
3
-<HelpIndex DTDVersion = "1.0"
4
- Name="A"
5
- Id = "_ALinks"
6
- Merge="Yes"
7
- Sort="Yes"
8
- Title="A-link Index"
9
- Visible="No">
10
-</HelpIndex>
\ No newline at end of file
src/ext/VisualStudio/wixlib/vs2008/redist/_BLinks.hxk
deleted
-10
@@ -1,10 +0,0 @@
1
-<?xml version="1.0"?>
2
-<!DOCTYPE HelpIndex>
3
-<HelpIndex DTDVersion = "1.0"
4
- Name="B"
5
- Id = "_BLinks"
6
- Merge="Yes"
7
- Sort="Yes"
8
- Title="B-link Index"
9
- Visible="No">
10
-</HelpIndex>
\ No newline at end of file
src/ext/VisualStudio/wixlib/vs2008/redist/_CLinks.hxk
deleted
-13
@@ -1,13 +0,0 @@
1
-<?xml version="1.0"?>
2
-<!DOCTYPE HelpIndex>
3
-<HelpIndex
4
- DTDVersion = "1.0"
5
- Name = "C"
6
- Id = "_CLinks"
7
- Merge = "Yes"
8
- Sort = "Yes"
9
- Title = "Code Index"
10
- Visible = "No"
11
- LangId = "1033"
12
- >
13
-</HelpIndex>
src/ext/VisualStudio/wixlib/vs2008/redist/_FLinks.hxk
deleted
-10
@@ -1,10 +0,0 @@
1
-<?xml version="1.0"?>
2
-<!DOCTYPE HelpIndex>
3
-<HelpIndex DTDVersion = "1.0"
4
- Name="F"
5
- Id = "_FLinks"
6
- Merge="Yes"
7
- Sort="Yes"
8
- Title="F-link Index"
9
- Visible="No">
10
-</HelpIndex>
\ No newline at end of file
src/ext/VisualStudio/wixlib/vs2008/redist/_KLinks.hxk
deleted
-10
@@ -1,10 +0,0 @@
1
-<?xml version="1.0"?>
2
-<!DOCTYPE HelpIndex>
3
-<HelpIndex Name = "K"
4
- Id = "_KLinks"
5
- DTDVersion = "1.0"
6
- Merge="Yes"
7
- Sort="Yes"
8
- Title="Keyword Index"
9
- Visible="Yes">
10
-</HelpIndex>
\ No newline at end of file
src/ext/VisualStudio/wixlib/vs2008/redist/_SLinks.hxk
deleted
-13
@@ -1,13 +0,0 @@
1
-<?xml version="1.0"?>
2
-<!DOCTYPE HelpIndex>
3
-<HelpIndex
4
- DTDVersion = "1.0"
5
- Name="S"
6
- Id = "_SLinks"
7
- AutoInclude = "Yes"
8
- Merge="Yes"
9
- Sort="Yes"
10
- Title="Search Index"
11
- Visible="No"
12
- LangId = "1033">
13
-</HelpIndex>
\ No newline at end of file
src/ext/VisualStudio/wixlib/vs2008/redist/_vsipcc90.hxc
deleted
-33
@@ -1,33 +0,0 @@
1
-<?xml version="1.0"?>
2
-<!DOCTYPE HelpCollection>
3
-<HelpCollection
4
- DTDVersion = "1.0"
5
- Id = "vsipcc.9.0"
6
- FileVersion = "9.0.20220.0"
7
- LangId = "1033"
8
- Title = "Visual Studio Orcas Partner Documentation"
9
- Copyright = "Copyright (c) 2007 Microsoft Corporation. All Rights Reserved."
10
- >
11
- <TOCDef File = "_vsipcc90.HxT" Id = "InsertTOC:VSIPCC" />
12
- <KeywordIndexDef File = "_ALinks.HxK"/>
13
- <KeywordIndexDef File = "_BLinks.HxK"/>
14
- <KeywordIndexDef File = "_CLinks.HxK"/>
15
- <KeywordIndexDef File = "_FLinks.HxK"/>
16
- <KeywordIndexDef File = "_KLinks.HxK"/>
17
- <KeywordIndexDef File = "_SLinks.HxK"/>
18
- <KeywordIndexDef File = "_vsipcc_NamedUrls.HxK"/>
19
- <KeywordIndexDef File= "_VsipCC_Samples.HxK" />
20
-
21
- <ItemMoniker Name = "!DefaultNamedUrlIndex" ProgId = "HxDs.HxIndex" InitData = "VsccNamedUrls"/>
22
- <ItemMoniker Name = "!SampleInfo" ProgId = "HxDs.HxSampleCollection" InitData = "Samples"/>
23
- <ItemMoniker Name = "!DefaultTOC" ProgId = "HxDs.HxHierarchy" InitData = "TOC"/>
24
- <ItemMoniker Name = "!DefaultFullTextSearch" ProgId = "HxDs.HxFullTextSearch" InitData = ""/>
25
- <ItemMoniker Name = "!DefaultAssociativeIndex" ProgId = "HxDs.HxIndex" InitData = "A"/>
26
- <ItemMoniker Name = "!DefaultDynamicLinkIndex" ProgId = "HxDs.HxIndex" InitData = "B"/>
27
- <ItemMoniker Name = "!DefaultCodeIndex" ProgId = "HxDs.HxIndex" InitData = "C"/>
28
- <ItemMoniker Name = "!DefaultContextWindowIndex" ProgId = "HxDs.HxIndex" InitData = "F"/>
29
- <ItemMoniker Name = "!DefaultKeywordIndex" ProgId = "HxDs.HxIndex" InitData = "K"/>
30
- <ItemMoniker Name = "!DefaultSearchWindowIndex" ProgId = "HxDs.HxIndex" InitData = "S"/>
31
- <ItemMoniker Name = "!DefaultSampleIndex" ProgId="HxDs.HxIndex" InitData="Samples" />
32
-</HelpCollection>
33
-
src/ext/VisualStudio/wixlib/vs2008/redist/_vsipcc90.hxt
deleted
-15
@@ -1,15 +0,0 @@
1
-<?xml version="1.0"?>
2
-<!DOCTYPE HelpTOC>
3
-<HelpTOC
4
- DTDVersion = "1.0"
5
- Id = "vsipcc_TOC"
6
- FileVersion = "9.0.20220.0"
7
- LangId = "1033"
8
- ParentNodeIcon = "Book"
9
- PluginStyle = "Flat"
10
- >
11
- <HelpTOCNode Id = "InsertTOC:VSIP" NodeType = "TOC"/>
12
- <HelpTOCNode Id = "InsertTOC:Partner" NodeType = "TOC"/>
13
-</HelpTOC>
14
-
15
-
src/ext/VisualStudio/wixlib/vs2008/redist/_vsipcc_namedUrls.hxk
deleted
-13
@@ -1,13 +0,0 @@
1
-<?xml version="1.0"?>
2
-<!DOCTYPE HelpIndex>
3
-<HelpIndex
4
- DTDVersion = "1.0"
5
- Name = "VsipccNamedUrls"
6
- Id = "VsipccNamedUrls"
7
- Merge = "Yes"
8
- Sort = "Yes"
9
- Title = "VSIPCC NamedUrl Index"
10
- Visible = "No"
11
- LangId = "1033"
12
- >
13
-</HelpIndex>
\ No newline at end of file
src/ext/VisualStudio/wixlib/vs2008/redist/_vsipcc_samples.HxK
deleted
-14
@@ -1,14 +0,0 @@
1
-<?xml version="1.0" encoding="utf-8"?>
2
-<!DOCTYPE HelpIndex>
3
-<HelpIndex
4
- DTDVersion = "1.0"
5
- Name = "Samples"
6
- Id = "VsipCCSamples"
7
- AutoInclude = "Yes"
8
- Merge = "Yes"
9
- Sort = "Yes"
10
- Title = "Samples"
11
- Visible = "No"
12
- LangId = "1033"
13
- >
14
-</HelpIndex>
\ No newline at end of file
src/ext/VisualStudio/wixlib/vs2008/redist/vsipcc_reg.hxs
Binary files a/src/ext/VisualStudio/wixlib/vs2008/redist/vsipcc_reg.hxs and /dev/null differ
src/internal/SetBuildNumber/Directory.Packages.props.pp
+1
-1
@@ -42,7 +42,7 @@
42
<PackageVersion Include="System.Text.Encoding.CodePages" Version="4.6.0" />
43
44
<PackageVersion Include="Microsoft.AspNetCore.Owin" Version="3.1.13" />
45
- <PackageVersion Include="Microsoft.VisualStudio.Setup.Configuration.Native" Version="1.14.114" />
45
+ <PackageVersion Include="Microsoft.VisualStudio.Setup.Configuration.Native" Version="3.0.4492" />
46
<PackageVersion Include="Microsoft.Win32.Registry" Version="4.7.0" />
47
48
<PackageVersion Include="NuGet.Credentials" Version="5.6.0" />
src/wix/WixToolset.Converters/WixConverter.cs
+77
-13
@@ -55,8 +55,9 @@ namespace WixToolset.Converters
55
private static readonly XNamespace Wix3Namespace = "http://schemas.microsoft.com/wix/2006/wi";
56
private static readonly XNamespace WixBalNamespace = "http://wixtoolset.org/schemas/v4/wxs/bal";
57
private static readonly XNamespace WixDependencyNamespace = "http://wixtoolset.org/schemas/v4/wxs/dependency";
58
- private static readonly XNamespace WixUtilNamespace = "http://wixtoolset.org/schemas/v4/wxs/util";
58
private static readonly XNamespace WixFirewallNamespace = "http://wixtoolset.org/schemas/v4/wxs/firewall";
59
+ private static readonly XNamespace WixUtilNamespace = "http://wixtoolset.org/schemas/v4/wxs/util";
60
+ private static readonly XNamespace WixVSNamespace = "http://wixtoolset.org/schemas/v4/wxs/vs";
61
62
private static readonly XName AdminExecuteSequenceElementName = WixNamespace + "AdminExecuteSequence";
63
private static readonly XName AdminUISequenceSequenceElementName = WixNamespace + "AdminUISequence";
@@ -288,6 +289,8 @@ namespace WixToolset.Converters
289
290
private int SourceVersion { get; set; }
291
292
+ public XElement XRoot { get; private set; }
293
+
294
/// <summary>
295
/// Convert a file.
296
/// </summary>
@@ -334,6 +337,8 @@ namespace WixToolset.Converters
337
TrimLeadingText(document);
338
}
339
340
+ this.XRoot = document.Root;
341
+
342
// Start converting the nodes at the top.
343
this.ConvertNodes(document.Nodes(), 0);
344
this.RemoveUnusedNamespaces(document.Root);
@@ -1269,14 +1274,14 @@ namespace WixToolset.Converters
1274
xPackage.SetAttributeValue("Scope", "perUser");
1275
break;
1276
case "elevated":
1272
- {
1273
- var xAllUsers = xPackage.Elements(PropertyElementName).SingleOrDefault(p => p.Attribute("Id")?.Value == "ALLUSERS");
1274
- if (xAllUsers?.Attribute("Value")?.Value == "1")
1277
{
1276
- xAllUsers?.Remove();
1278
+ var xAllUsers = xPackage.Elements(PropertyElementName).SingleOrDefault(p => p.Attribute("Id")?.Value == "ALLUSERS");
1279
+ if (xAllUsers?.Attribute("Value")?.Value == "1")
1280
+ {
1281
+ xAllUsers?.Remove();
1282
+ }
1283
}
1278
- }
1279
- break;
1284
+ break;
1285
}
1286
1287
xInstallPrivileges?.Remove();
@@ -1309,6 +1314,9 @@ namespace WixToolset.Converters
1314
private void ConvertPropertyRefElement(XElement element)
1315
{
1316
var newElementName = String.Empty;
1317
+ var newNamespace = WixUtilNamespace;
1318
+ var newNamespaceName = "util";
1319
+ var replace = true;
1320
1321
var id = element.Attribute("Id");
1322
switch (id?.Value)
@@ -1377,13 +1385,69 @@ namespace WixToolset.Converters
1385
case "WIX_NATIVE_MACHINE":
1386
newElementName = "QueryNativeMachine";
1387
break;
1388
+ case "VS2017_ROOT_FOLDER":
1389
+ case "VS2017DEVENV":
1390
+ case "VS2017_EXTENSIONS_DIR":
1391
+ case "VS2017_ITEMTEMPLATES_DIR":
1392
+ case "VS2017_PROJECTTEMPLATES_DIR":
1393
+ case "VS2017_SCHEMAS_DIR":
1394
+ case "VS2017_IDE_DIR":
1395
+ case "VS2017_BOOTSTRAPPER_PACKAGE_FOLDER":
1396
+ case "VS2017_IDE_FSHARP_PROJECTSYSTEM_INSTALLED":
1397
+ case "VS2017_IDE_VB_PROJECTSYSTEM_INSTALLED":
1398
+ case "VS2017_IDE_VCSHARP_PROJECTSYSTEM_INSTALLED":
1399
+ case "VS2017_IDE_VSTS_TESTSYSTEM_INSTALLED":
1400
+ case "VS2017_IDE_VC_PROJECTSYSTEM_INSTALLED":
1401
+ case "VS2017_IDE_VWD_PROJECTSYSTEM_INSTALLED":
1402
+ case "VS2017_IDE_MODELING_PROJECTSYSTEM_INSTALLED":
1403
+ case "VS2019_ROOT_FOLDER":
1404
+ case "VS2019DEVENV":
1405
+ case "VS2019_EXTENSIONS_DIR":
1406
+ case "VS2019_ITEMTEMPLATES_DIR":
1407
+ case "VS2019_PROJECTTEMPLATES_DIR":
1408
+ case "VS2019_SCHEMAS_DIR":
1409
+ case "VS2019_IDE_DIR":
1410
+ case "VS2019_BOOTSTRAPPER_PACKAGE_FOLDER":
1411
+ case "VS2019_IDE_FSHARP_PROJECTSYSTEM_INSTALLED":
1412
+ case "VS2019_IDE_VB_PROJECTSYSTEM_INSTALLED":
1413
+ case "VS2019_IDE_VCSHARP_PROJECTSYSTEM_INSTALLED":
1414
+ case "VS2019_IDE_VSTS_TESTSYSTEM_INSTALLED":
1415
+ case "VS2019_IDE_VC_PROJECTSYSTEM_INSTALLED":
1416
+ case "VS2019_IDE_VWD_PROJECTSYSTEM_INSTALLED":
1417
+ case "VS2019_IDE_MODELING_PROJECTSYSTEM_INSTALLED":
1418
+ case "VS2022_ROOT_FOLDER":
1419
+ case "VS2022DEVENV":
1420
+ case "VS2022_EXTENSIONS_DIR":
1421
+ case "VS2022_ITEMTEMPLATES_DIR":
1422
+ case "VS2022_PROJECTTEMPLATES_DIR":
1423
+ case "VS2022_SCHEMAS_DIR":
1424
+ case "VS2022_IDE_DIR":
1425
+ case "VS2022_BOOTSTRAPPER_PACKAGE_FOLDER":
1426
+ case "VS2022_IDE_FSHARP_PROJECTSYSTEM_INSTALLED":
1427
+ case "VS2022_IDE_VB_PROJECTSYSTEM_INSTALLED":
1428
+ case "VS2022_IDE_VCSHARP_PROJECTSYSTEM_INSTALLED":
1429
+ case "VS2022_IDE_VSTS_TESTSYSTEM_INSTALLED":
1430
+ case "VS2022_IDE_VC_PROJECTSYSTEM_INSTALLED":
1431
+ case "VS2022_IDE_VWD_PROJECTSYSTEM_INSTALLED":
1432
+ case "VS2022_IDE_MODELING_PROJECTSYSTEM_INSTALLED":
1433
+ newElementName = "FindVisualStudio";
1434
+ newNamespace = WixVSNamespace;
1435
+ newNamespaceName = "vs";
1436
+ replace = false;
1437
+ break;
1438
}
1439
1440
if (!String.IsNullOrEmpty(newElementName)
1383
- && this.OnError(ConverterTestType.UtilReferencesReplaced, element, "Custom action and property reference {0} to WixUtilExtension have been replaced with strongly-typed elements.", id))
1441
+ && this.OnError(ConverterTestType.ReferencesReplaced, element, "Custom action and property reference {0} have been replaced with strongly-typed elements.", id))
1442
{
1385
- element.AddAfterSelf(new XElement(WixUtilNamespace + newElementName));
1386
- element.Remove();
1443
+ this.XRoot.SetAttributeValue(XNamespace.Xmlns + newNamespaceName, newNamespace.NamespaceName);
1444
+
1445
+ element.AddBeforeSelf(new XElement(newNamespace + newElementName));
1446
+
1447
+ if (replace)
1448
+ {
1449
+ element.Remove();
1450
+ }
1451
}
1452
}
1453
@@ -1406,7 +1470,7 @@ namespace WixToolset.Converters
1470
}
1471
1472
if (!String.IsNullOrEmpty(newElementName)
1409
- && this.OnError(ConverterTestType.UtilReferencesReplaced, element, "Custom action and property reference {0} to WixUtilExtension have been replaced with strongly-typed elements.", id))
1473
+ && this.OnError(ConverterTestType.ReferencesReplaced, element, "Custom action and property reference {0} have been replaced with strongly-typed elements.", id))
1474
{
1475
element.AddAfterSelf(new XElement(WixUtilNamespace + newElementName));
1476
element.Remove();
@@ -2467,9 +2531,9 @@ namespace WixToolset.Converters
2531
DefiningStandardDirectoryDeprecated,
2532
2533
/// <summary>
2470
- /// Naked custom action and property references replaced with WixUtilExtension elements.
2534
+ /// Naked custom action and property references replaced with elements.
2535
/// </summary>
2472
- UtilReferencesReplaced,
2536
+ ReferencesReplaced,
2537
2538
/// <summary>
2539
/// Cache attribute value updated.
src/wix/test/WixToolsetTest.Converters/VSExtensionFixture.cs
new
+49
@@ -0,0 +1,49 @@
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
+
3
+namespace WixToolsetTest.Converters
4
+{
5
+ using System;
6
+ using System.Xml.Linq;
7
+ using WixBuildTools.TestSupport;
8
+ using WixToolset.Converters;
9
+ using WixToolsetTest.Converters.Mocks;
10
+ using Xunit;
11
+
12
+ public class VSExtensionFixture : BaseConverterFixture
13
+ {
14
+ [Fact]
15
+ public void FixVsLocatorPropertyRefs()
16
+ {
17
+ var parse = String.Join(Environment.NewLine,
18
+ "<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'>",
19
+ " <Fragment>",
20
+ " <PropertyRef Id=\"VS2019_ROOT_FOLDER\" />",
21
+ " <PropertyRef Id=\"VS2022_BOOTSTRAPPER_PACKAGE_FOLDER\" />",
22
+ " <CustomActionRef Id=\"VS2017Setup\" />",
23
+ " </Fragment>",
24
+ "</Wix>");
25
+
26
+ var expected = new[]
27
+ {
28
+ "<Wix xmlns=\"http://wixtoolset.org/schemas/v4/wxs\" xmlns:vs=\"http://wixtoolset.org/schemas/v4/wxs/vs\">",
29
+ " <Fragment>",
30
+ " <vs:FindVisualStudio /><PropertyRef Id=\"VS2019_ROOT_FOLDER\" />",
31
+ " <vs:FindVisualStudio /><PropertyRef Id=\"VS2022_BOOTSTRAPPER_PACKAGE_FOLDER\" />",
32
+ " <CustomActionRef Id=\"VS2017Setup\" />",
33
+ " </Fragment>",
34
+ "</Wix>"
35
+ };
36
+
37
+ var document = XDocument.Parse(parse, LoadOptions.PreserveWhitespace | LoadOptions.SetLineInfo);
38
+
39
+ var messaging = new MockMessaging();
40
+ var converter = new WixConverter(messaging, 2, null, null);
41
+
42
+ var errors = converter.ConvertDocument(document);
43
+ Assert.Equal(3, errors);
44
+
45
+ var actualLines = UnformattedDocumentLines(document);
46
+ WixAssert.CompareLineByLine(expected, actualLines);
47
+ }
48
+ }
49
+}