@joebigelow / wix-1 / commits / b9c712f2

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 +}