aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBob Arnson <bob@firegiant.com>2021-12-22 23:52:40 -0500
committerBob Arnson <github@bobs.org>2021-12-23 12:32:16 -0500
commitb9c712f26d921f7ffe0509d1cc45456680e8139f (patch)
tree0cb80095c6c9ffe0c01ab9a723c25fd228a48649
parent2f744bf58cc4edb5a712bfff8e7e42baba81768d (diff)
downloadwix-b9c712f26d921f7ffe0509d1cc45456680e8139f.tar.gz
wix-b9c712f26d921f7ffe0509d1cc45456680e8139f.tar.bz2
wix-b9c712f26d921f7ffe0509d1cc45456680e8139f.zip
Version extension ids.
https://github.com/wixtoolset/issues/issues/5933 - Add support for detecting VS2022. - Add x64 custom actions. - Remove ancient Help 2.0 support. - Update WixCop to add the new element to trigger custom action.
-rw-r--r--src/ext/VisualStudio/VisualStudio.wixext.sln18
-rw-r--r--src/ext/VisualStudio/ca/vsca.cpp81
-rw-r--r--src/ext/VisualStudio/ca/vsca.vcxproj8
-rw-r--r--src/ext/VisualStudio/test/WixToolsetTest.VisualStudio/TestData/UsingVsixPackage/Package.wxs4
-rw-r--r--src/ext/VisualStudio/test/WixToolsetTest.VisualStudio/TestData/UsingVsixPackage/PackageComponents.wxs1
-rw-r--r--src/ext/VisualStudio/test/WixToolsetTest.VisualStudio/VisualStudioExtensionFixture.cs3
-rw-r--r--src/ext/VisualStudio/wixext/Symbols/HelpFileSymbol.cs95
-rw-r--r--src/ext/VisualStudio/wixext/Symbols/HelpFileToNamespaceSymbol.cs55
-rw-r--r--src/ext/VisualStudio/wixext/Symbols/HelpFilterSymbol.cs55
-rw-r--r--src/ext/VisualStudio/wixext/Symbols/HelpFilterToNamespaceSymbol.cs55
-rw-r--r--src/ext/VisualStudio/wixext/Symbols/HelpNamespaceSymbol.cs63
-rw-r--r--src/ext/VisualStudio/wixext/Symbols/HelpPluginSymbol.cs79
-rw-r--r--src/ext/VisualStudio/wixext/Symbols/VSSymbolDefinitions.cs59
-rw-r--r--src/ext/VisualStudio/wixext/VSCompiler.cs508
-rw-r--r--src/ext/VisualStudio/wixext/VSExtensionData.cs6
-rw-r--r--src/ext/VisualStudio/wixext/VSExtensionFactory.cs1
-rw-r--r--src/ext/VisualStudio/wixext/VSTableDefinitions.cs97
-rw-r--r--src/ext/VisualStudio/wixext/VSWindowsInstallerBackendBinderExtension.cs13
-rw-r--r--src/ext/VisualStudio/wixlib/HTML_Help_Registration__RTL_X86.wxs67
-rw-r--r--src/ext/VisualStudio/wixlib/Redist/BIN_File_107602.dllbin866816 -> 0 bytes
-rw-r--r--src/ext/VisualStudio/wixlib/Redist/BIN_File_46001.dllbin129536 -> 0 bytes
-rw-r--r--src/ext/VisualStudio/wixlib/Redist/BIN_File_46002.dllbin108544 -> 0 bytes
-rw-r--r--src/ext/VisualStudio/wixlib/VS2017.wxs5
-rw-r--r--src/ext/VisualStudio/wixlib/VS2019.wxs5
-rw-r--r--src/ext/VisualStudio/wixlib/VS2022.wxs141
-rw-r--r--src/ext/VisualStudio/wixlib/VSExtension_Platform.wxi10
-rw-r--r--src/ext/VisualStudio/wixlib/VSExtension_x64.wxs8
-rw-r--r--src/ext/VisualStudio/wixlib/caSuffix.wxi28
-rw-r--r--src/ext/VisualStudio/wixlib/vs.wixproj3
-rw-r--r--src/ext/VisualStudio/wixlib/vs2005/VS2005_VSIPCC_Collection_Files_RTL.wxs63
-rw-r--r--src/ext/VisualStudio/wixlib/vs2005/redist/BIN_File_60377.dllbin45056 -> 0 bytes
-rw-r--r--src/ext/VisualStudio/wixlib/vs2005/redist/vsipCCSamples.HxK14
-rw-r--r--src/ext/VisualStudio/wixlib/vs2005/redist/vsipcc.hxc33
-rw-r--r--src/ext/VisualStudio/wixlib/vs2005/redist/vsipcc.hxt15
-rw-r--r--src/ext/VisualStudio/wixlib/vs2005/redist/vsipccALinks.hxk13
-rw-r--r--src/ext/VisualStudio/wixlib/vs2005/redist/vsipccBLinks.hxk13
-rw-r--r--src/ext/VisualStudio/wixlib/vs2005/redist/vsipccFLinks.hxk14
-rw-r--r--src/ext/VisualStudio/wixlib/vs2005/redist/vsipccKLinks.hxk13
-rw-r--r--src/ext/VisualStudio/wixlib/vs2005/redist/vsipccNamedURLs.hxk13
-rw-r--r--src/ext/VisualStudio/wixlib/vs2005/redist/vsipccSlinks.hxk14
-rw-r--r--src/ext/VisualStudio/wixlib/vs2005/redist/vsipcc_reg.hxsbin18400 -> 0 bytes
-rw-r--r--src/ext/VisualStudio/wixlib/vs2008/VS2008_VSIPCC_Collection_Files_RTL.wxs60
-rw-r--r--src/ext/VisualStudio/wixlib/vs2008/redist/BIN_435439_x86_enu.dllbin103944 -> 0 bytes
-rw-r--r--src/ext/VisualStudio/wixlib/vs2008/redist/_ALinks.hxk10
-rw-r--r--src/ext/VisualStudio/wixlib/vs2008/redist/_BLinks.hxk10
-rw-r--r--src/ext/VisualStudio/wixlib/vs2008/redist/_CLinks.hxk13
-rw-r--r--src/ext/VisualStudio/wixlib/vs2008/redist/_FLinks.hxk10
-rw-r--r--src/ext/VisualStudio/wixlib/vs2008/redist/_KLinks.hxk10
-rw-r--r--src/ext/VisualStudio/wixlib/vs2008/redist/_SLinks.hxk13
-rw-r--r--src/ext/VisualStudio/wixlib/vs2008/redist/_vsipcc90.hxc33
-rw-r--r--src/ext/VisualStudio/wixlib/vs2008/redist/_vsipcc90.hxt15
-rw-r--r--src/ext/VisualStudio/wixlib/vs2008/redist/_vsipcc_namedUrls.hxk13
-rw-r--r--src/ext/VisualStudio/wixlib/vs2008/redist/_vsipcc_samples.HxK14
-rw-r--r--src/ext/VisualStudio/wixlib/vs2008/redist/vsipcc_reg.hxsbin18488 -> 0 bytes
-rw-r--r--src/internal/SetBuildNumber/Directory.Packages.props.pp2
-rw-r--r--src/wix/WixToolset.Converters/WixConverter.cs90
-rw-r--r--src/wix/test/WixToolsetTest.Converters/VSExtensionFixture.cs49
57 files changed, 395 insertions, 1620 deletions
diff --git a/src/ext/VisualStudio/VisualStudio.wixext.sln b/src/ext/VisualStudio/VisualStudio.wixext.sln
index 5f30fbcf..9bdd6228 100644
--- a/src/ext/VisualStudio/VisualStudio.wixext.sln
+++ b/src/ext/VisualStudio/VisualStudio.wixext.sln
@@ -30,6 +30,15 @@ Global
30 {45308B85-0628-4978-8FC8-6AD9E1AD5949}.Release|x64.ActiveCfg = Release|Win32 30 {45308B85-0628-4978-8FC8-6AD9E1AD5949}.Release|x64.ActiveCfg = Release|Win32
31 {45308B85-0628-4978-8FC8-6AD9E1AD5949}.Release|x86.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 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
33 {61BFD377-9DE1-48B4-8687-560DF68D6F3B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 42 {61BFD377-9DE1-48B4-8687-560DF68D6F3B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
34 {61BFD377-9DE1-48B4-8687-560DF68D6F3B}.Debug|Any CPU.Build.0 = Debug|Any CPU 43 {61BFD377-9DE1-48B4-8687-560DF68D6F3B}.Debug|Any CPU.Build.0 = Debug|Any CPU
35 {61BFD377-9DE1-48B4-8687-560DF68D6F3B}.Debug|x64.ActiveCfg = Debug|Any CPU 44 {61BFD377-9DE1-48B4-8687-560DF68D6F3B}.Debug|x64.ActiveCfg = Debug|Any CPU
@@ -42,15 +51,6 @@ Global
42 {61BFD377-9DE1-48B4-8687-560DF68D6F3B}.Release|x64.Build.0 = Release|Any CPU 51 {61BFD377-9DE1-48B4-8687-560DF68D6F3B}.Release|x64.Build.0 = Release|Any CPU
43 {61BFD377-9DE1-48B4-8687-560DF68D6F3B}.Release|x86.ActiveCfg = Release|Any CPU 52 {61BFD377-9DE1-48B4-8687-560DF68D6F3B}.Release|x86.ActiveCfg = Release|Any CPU
44 {61BFD377-9DE1-48B4-8687-560DF68D6F3B}.Release|x86.Build.0 = 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 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 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 56 {DD2BD0F7-1E4A-4D11-954C-3505323C4E1B}.Debug|x64.ActiveCfg = Debug|Any CPU
diff --git a/src/ext/VisualStudio/ca/vsca.cpp b/src/ext/VisualStudio/ca/vsca.cpp
index 54a54a34..736add1f 100644
--- a/src/ext/VisualStudio/ca/vsca.cpp
+++ b/src/ext/VisualStudio/ca/vsca.cpp
@@ -53,6 +53,12 @@ static HRESULT ProcessVS2019(
53 __in BOOL fComplete 53 __in BOOL fComplete
54 ); 54 );
55 55
56static HRESULT ProcessVS2022(
57 __in_opt ISetupInstance* pInstance,
58 __in DWORD64 qwVersion,
59 __in BOOL fComplete
60 );
61
56static HRESULT SetPropertyForComponent( 62static HRESULT SetPropertyForComponent(
57 __in DWORD cComponents, 63 __in DWORD cComponents,
58 __in VS_COMPONENT_PROPERTY* rgComponents, 64 __in VS_COMPONENT_PROPERTY* rgComponents,
@@ -63,6 +69,7 @@ static VS_INSTANCE vrgInstances[] =
63{ 69{
64 { FILEMAKEVERSION(15, 0, 0, 0), FILEMAKEVERSION(15, 0xffff, 0xffff, 0xffff), ProcessVS2017 }, 70 { FILEMAKEVERSION(15, 0, 0, 0), FILEMAKEVERSION(15, 0xffff, 0xffff, 0xffff), ProcessVS2017 },
65 { FILEMAKEVERSION(16, 0, 0, 0), FILEMAKEVERSION(16, 0xffff, 0xffff, 0xffff), ProcessVS2019 }, 71 { FILEMAKEVERSION(16, 0, 0, 0), FILEMAKEVERSION(16, 0xffff, 0xffff, 0xffff), ProcessVS2019 },
72 { FILEMAKEVERSION(17, 0, 0, 0), FILEMAKEVERSION(17, 0xffff, 0xffff, 0xffff), ProcessVS2022 },
66}; 73};
67 74
68/****************************************************************** 75/******************************************************************
@@ -485,6 +492,80 @@ LExit:
485 return hr; 492 return hr;
486} 493}
487 494
495static 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
560LExit:
561 if (fComplete)
562 {
563 ReleaseObject(pLatest);
564 }
565
566 return hr;
567}
568
488static HRESULT SetPropertyForComponent( 569static HRESULT SetPropertyForComponent(
489 __in DWORD cComponents, 570 __in DWORD cComponents,
490 __in VS_COMPONENT_PROPERTY* rgComponents, 571 __in VS_COMPONENT_PROPERTY* rgComponents,
diff --git a/src/ext/VisualStudio/ca/vsca.vcxproj b/src/ext/VisualStudio/ca/vsca.vcxproj
index 8d6a3500..0b838b82 100644
--- a/src/ext/VisualStudio/ca/vsca.vcxproj
+++ b/src/ext/VisualStudio/ca/vsca.vcxproj
@@ -11,6 +11,14 @@
11 <Configuration>Release</Configuration> 11 <Configuration>Release</Configuration>
12 <Platform>Win32</Platform> 12 <Platform>Win32</Platform>
13 </ProjectConfiguration> 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>
14 </ItemGroup> 22 </ItemGroup>
15 23
16 <PropertyGroup Label="Globals"> 24 <PropertyGroup Label="Globals">
diff --git a/src/ext/VisualStudio/test/WixToolsetTest.VisualStudio/TestData/UsingVsixPackage/Package.wxs b/src/ext/VisualStudio/test/WixToolsetTest.VisualStudio/TestData/UsingVsixPackage/Package.wxs
index c2196807..0434f81f 100644
--- a/src/ext/VisualStudio/test/WixToolsetTest.VisualStudio/TestData/UsingVsixPackage/Package.wxs
+++ b/src/ext/VisualStudio/test/WixToolsetTest.VisualStudio/TestData/UsingVsixPackage/Package.wxs
@@ -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"> 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)" /> 3 <MajorUpgrade DowngradeErrorMessage="!(loc.DowngradeError)" />
4 4
5 <vs:FindVisualStudio />
5 <PropertyRef Id="VS2017DEVENV" /> 6 <PropertyRef Id="VS2017DEVENV" />
7 <PropertyRef Id="VS2022_ROOT_FOLDER" />
6 8
7 <Feature Id="ProductFeature" Title="!(loc.FeatureTitle)"> 9 <Feature Id="ProductFeature" Title="!(loc.FeatureTitle)">
8 <ComponentGroupRef Id="ProductComponents" /> 10 <ComponentGroupRef Id="ProductComponents" />
diff --git a/src/ext/VisualStudio/test/WixToolsetTest.VisualStudio/TestData/UsingVsixPackage/PackageComponents.wxs b/src/ext/VisualStudio/test/WixToolsetTest.VisualStudio/TestData/UsingVsixPackage/PackageComponents.wxs
index c8c72cc0..d647e422 100644
--- a/src/ext/VisualStudio/test/WixToolsetTest.VisualStudio/TestData/UsingVsixPackage/PackageComponents.wxs
+++ b/src/ext/VisualStudio/test/WixToolsetTest.VisualStudio/TestData/UsingVsixPackage/PackageComponents.wxs
@@ -7,7 +7,6 @@
7 <File Name="fake.vsix" Source="example.txt"> 7 <File Name="fake.vsix" Source="example.txt">
8 <vs:VsixPackage PackageId="ExampleVsix" /> 8 <vs:VsixPackage PackageId="ExampleVsix" />
9 </File> 9 </File>
10
11 </Component> 10 </Component>
12 </ComponentGroup> 11 </ComponentGroup>
13 </Fragment> 12 </Fragment>
diff --git a/src/ext/VisualStudio/test/WixToolsetTest.VisualStudio/VisualStudioExtensionFixture.cs b/src/ext/VisualStudio/test/WixToolsetTest.VisualStudio/VisualStudioExtensionFixture.cs
index 306962e3..1a574261 100644
--- a/src/ext/VisualStudio/test/WixToolsetTest.VisualStudio/VisualStudioExtensionFixture.cs
+++ b/src/ext/VisualStudio/test/WixToolsetTest.VisualStudio/VisualStudioExtensionFixture.cs
@@ -2,7 +2,6 @@
2 2
3namespace WixToolsetTest.VisualStudio 3namespace WixToolsetTest.VisualStudio
4{ 4{
5 using System.Linq;
6 using WixBuildTools.TestSupport; 5 using WixBuildTools.TestSupport;
7 using WixToolset.Core.TestPackage; 6 using WixToolset.Core.TestPackage;
8 using WixToolset.VisualStudio; 7 using WixToolset.VisualStudio;
@@ -27,12 +26,12 @@ namespace WixToolsetTest.VisualStudio
27 "CustomAction:viuMpl8IvFSDAzTulrmpAzBwAmCRTQ\t1074\tVS_VSIX_INSTALLER_PATH\t/q \"[#filzi8nwT8Ta133xcfp7qSIdGdRiC0]\"\t", 26 "CustomAction:viuMpl8IvFSDAzTulrmpAzBwAmCRTQ\t1074\tVS_VSIX_INSTALLER_PATH\t/q \"[#filzi8nwT8Ta133xcfp7qSIdGdRiC0]\"\t",
28 "CustomAction:vrmLa9TyFoAVwf8JmA0_ZJHA69J2fo\t3442\tVS_VSIX_INSTALLER_PATH\t/q /u:\"ExampleVsix\" /admin\t", 27 "CustomAction:vrmLa9TyFoAVwf8JmA0_ZJHA69J2fo\t3442\tVS_VSIX_INSTALLER_PATH\t/q /u:\"ExampleVsix\" /admin\t",
29 "CustomAction:vruMpl8IvFSDAzTulrmpAzBwAmCRTQ\t1394\tVS_VSIX_INSTALLER_PATH\t/q /u:\"ExampleVsix\"\t", 28 "CustomAction:vruMpl8IvFSDAzTulrmpAzBwAmCRTQ\t1394\tVS_VSIX_INSTALLER_PATH\t/q /u:\"ExampleVsix\"\t",
30 "CustomAction:VSFindInstances\t257\tVSCA\tFindInstances\t",
31 "CustomAction:vumLa9TyFoAVwf8JmA0_ZJHA69J2fo\t3186\tVS_VSIX_INSTALLER_PATH\t/q /u:\"ExampleVsix\" /admin\t", 29 "CustomAction:vumLa9TyFoAVwf8JmA0_ZJHA69J2fo\t3186\tVS_VSIX_INSTALLER_PATH\t/q /u:\"ExampleVsix\" /admin\t",
32 "CustomAction:vuuMpl8IvFSDAzTulrmpAzBwAmCRTQ\t1138\tVS_VSIX_INSTALLER_PATH\t/q /u:\"ExampleVsix\"\t", 30 "CustomAction:vuuMpl8IvFSDAzTulrmpAzBwAmCRTQ\t1138\tVS_VSIX_INSTALLER_PATH\t/q /u:\"ExampleVsix\"\t",
33 "CustomAction:Vwd2012VsixWhenVSAbsent\t51\tVS_VSIX_INSTALLER_PATH\t[VWD2012_VSIX_INSTALL_ROOT]\\Common7\\IDE\\VSIXInstaller.exe\t", 31 "CustomAction:Vwd2012VsixWhenVSAbsent\t51\tVS_VSIX_INSTALLER_PATH\t[VWD2012_VSIX_INSTALL_ROOT]\\Common7\\IDE\\VSIXInstaller.exe\t",
34 "CustomAction:Vwd2013VsixWhenVSAbsent\t51\tVS_VSIX_INSTALLER_PATH\t[VWD2013_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",
35 "CustomAction:Vwd2015VsixWhenVSAbsent\t51\tVS_VSIX_INSTALLER_PATH\t[VWD2015_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",
36 }, results); 35 }, results);
37 } 36 }
38 37
diff --git a/src/ext/VisualStudio/wixext/Symbols/HelpFileSymbol.cs b/src/ext/VisualStudio/wixext/Symbols/HelpFileSymbol.cs
deleted file mode 100644
index 8078f4ab..00000000
--- a/src/ext/VisualStudio/wixext/Symbols/HelpFileSymbol.cs
+++ /dev/null
@@ -1,95 +0,0 @@
1// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2
3namespace WixToolset.VisualStudio
4{
5 using WixToolset.Data;
6 using WixToolset.VisualStudio.Symbols;
7
8 public static partial class VSSymbolDefinitions
9 {
10 public static readonly IntermediateSymbolDefinition HelpFile = new IntermediateSymbolDefinition(
11 VSSymbolDefinitionType.HelpFile.ToString(),
12 new[]
13 {
14 new IntermediateFieldDefinition(nameof(HelpFileSymbolFields.HelpFileName), IntermediateFieldType.String),
15 new IntermediateFieldDefinition(nameof(HelpFileSymbolFields.LangID), IntermediateFieldType.Number),
16 new IntermediateFieldDefinition(nameof(HelpFileSymbolFields.HxSFileRef), IntermediateFieldType.String),
17 new IntermediateFieldDefinition(nameof(HelpFileSymbolFields.HxIFileRef), IntermediateFieldType.String),
18 new IntermediateFieldDefinition(nameof(HelpFileSymbolFields.HxQFileRef), IntermediateFieldType.String),
19 new IntermediateFieldDefinition(nameof(HelpFileSymbolFields.HxRFileRef), IntermediateFieldType.String),
20 new IntermediateFieldDefinition(nameof(HelpFileSymbolFields.SamplesFileRef), IntermediateFieldType.String),
21 },
22 typeof(HelpFileSymbol));
23 }
24}
25
26namespace WixToolset.VisualStudio.Symbols
27{
28 using WixToolset.Data;
29
30 public enum HelpFileSymbolFields
31 {
32 HelpFileName,
33 LangID,
34 HxSFileRef,
35 HxIFileRef,
36 HxQFileRef,
37 HxRFileRef,
38 SamplesFileRef,
39 }
40
41 public class HelpFileSymbol : IntermediateSymbol
42 {
43 public HelpFileSymbol() : base(VSSymbolDefinitions.HelpFile, null, null)
44 {
45 }
46
47 public HelpFileSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(VSSymbolDefinitions.HelpFile, sourceLineNumber, id)
48 {
49 }
50
51 public IntermediateField this[HelpFileSymbolFields index] => this.Fields[(int)index];
52
53 public string HelpFileName
54 {
55 get => this.Fields[(int)HelpFileSymbolFields.HelpFileName].AsString();
56 set => this.Set((int)HelpFileSymbolFields.HelpFileName, value);
57 }
58
59 public int? LangID
60 {
61 get => this.Fields[(int)HelpFileSymbolFields.LangID].AsNullableNumber();
62 set => this.Set((int)HelpFileSymbolFields.LangID, value);
63 }
64
65 public string HxSFileRef
66 {
67 get => this.Fields[(int)HelpFileSymbolFields.HxSFileRef].AsString();
68 set => this.Set((int)HelpFileSymbolFields.HxSFileRef, value);
69 }
70
71 public string HxIFileRef
72 {
73 get => this.Fields[(int)HelpFileSymbolFields.HxIFileRef].AsString();
74 set => this.Set((int)HelpFileSymbolFields.HxIFileRef, value);
75 }
76
77 public string HxQFileRef
78 {
79 get => this.Fields[(int)HelpFileSymbolFields.HxQFileRef].AsString();
80 set => this.Set((int)HelpFileSymbolFields.HxQFileRef, value);
81 }
82
83 public string HxRFileRef
84 {
85 get => this.Fields[(int)HelpFileSymbolFields.HxRFileRef].AsString();
86 set => this.Set((int)HelpFileSymbolFields.HxRFileRef, value);
87 }
88
89 public string SamplesFileRef
90 {
91 get => this.Fields[(int)HelpFileSymbolFields.SamplesFileRef].AsString();
92 set => this.Set((int)HelpFileSymbolFields.SamplesFileRef, value);
93 }
94 }
95} \ No newline at end of file
diff --git a/src/ext/VisualStudio/wixext/Symbols/HelpFileToNamespaceSymbol.cs b/src/ext/VisualStudio/wixext/Symbols/HelpFileToNamespaceSymbol.cs
deleted file mode 100644
index f18d6701..00000000
--- a/src/ext/VisualStudio/wixext/Symbols/HelpFileToNamespaceSymbol.cs
+++ /dev/null
@@ -1,55 +0,0 @@
1// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2
3namespace WixToolset.VisualStudio
4{
5 using WixToolset.Data;
6 using WixToolset.VisualStudio.Symbols;
7
8 public static partial class VSSymbolDefinitions
9 {
10 public static readonly IntermediateSymbolDefinition HelpFileToNamespace = new IntermediateSymbolDefinition(
11 VSSymbolDefinitionType.HelpFileToNamespace.ToString(),
12 new[]
13 {
14 new IntermediateFieldDefinition(nameof(HelpFileToNamespaceSymbolFields.HelpFileRef), IntermediateFieldType.String),
15 new IntermediateFieldDefinition(nameof(HelpFileToNamespaceSymbolFields.HelpNamespaceRef), IntermediateFieldType.String),
16 },
17 typeof(HelpFileToNamespaceSymbol));
18 }
19}
20
21namespace WixToolset.VisualStudio.Symbols
22{
23 using WixToolset.Data;
24
25 public enum HelpFileToNamespaceSymbolFields
26 {
27 HelpFileRef,
28 HelpNamespaceRef,
29 }
30
31 public class HelpFileToNamespaceSymbol : IntermediateSymbol
32 {
33 public HelpFileToNamespaceSymbol() : base(VSSymbolDefinitions.HelpFileToNamespace, null, null)
34 {
35 }
36
37 public HelpFileToNamespaceSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(VSSymbolDefinitions.HelpFileToNamespace, sourceLineNumber, id)
38 {
39 }
40
41 public IntermediateField this[HelpFileToNamespaceSymbolFields index] => this.Fields[(int)index];
42
43 public string HelpFileRef
44 {
45 get => this.Fields[(int)HelpFileToNamespaceSymbolFields.HelpFileRef].AsString();
46 set => this.Set((int)HelpFileToNamespaceSymbolFields.HelpFileRef, value);
47 }
48
49 public string HelpNamespaceRef
50 {
51 get => this.Fields[(int)HelpFileToNamespaceSymbolFields.HelpNamespaceRef].AsString();
52 set => this.Set((int)HelpFileToNamespaceSymbolFields.HelpNamespaceRef, value);
53 }
54 }
55} \ No newline at end of file
diff --git a/src/ext/VisualStudio/wixext/Symbols/HelpFilterSymbol.cs b/src/ext/VisualStudio/wixext/Symbols/HelpFilterSymbol.cs
deleted file mode 100644
index 9deb47d0..00000000
--- a/src/ext/VisualStudio/wixext/Symbols/HelpFilterSymbol.cs
+++ /dev/null
@@ -1,55 +0,0 @@
1// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2
3namespace WixToolset.VisualStudio
4{
5 using WixToolset.Data;
6 using WixToolset.VisualStudio.Symbols;
7
8 public static partial class VSSymbolDefinitions
9 {
10 public static readonly IntermediateSymbolDefinition HelpFilter = new IntermediateSymbolDefinition(
11 VSSymbolDefinitionType.HelpFilter.ToString(),
12 new[]
13 {
14 new IntermediateFieldDefinition(nameof(HelpFilterSymbolFields.Description), IntermediateFieldType.String),
15 new IntermediateFieldDefinition(nameof(HelpFilterSymbolFields.QueryString), IntermediateFieldType.String),
16 },
17 typeof(HelpFilterSymbol));
18 }
19}
20
21namespace WixToolset.VisualStudio.Symbols
22{
23 using WixToolset.Data;
24
25 public enum HelpFilterSymbolFields
26 {
27 Description,
28 QueryString,
29 }
30
31 public class HelpFilterSymbol : IntermediateSymbol
32 {
33 public HelpFilterSymbol() : base(VSSymbolDefinitions.HelpFilter, null, null)
34 {
35 }
36
37 public HelpFilterSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(VSSymbolDefinitions.HelpFilter, sourceLineNumber, id)
38 {
39 }
40
41 public IntermediateField this[HelpFilterSymbolFields index] => this.Fields[(int)index];
42
43 public string Description
44 {
45 get => this.Fields[(int)HelpFilterSymbolFields.Description].AsString();
46 set => this.Set((int)HelpFilterSymbolFields.Description, value);
47 }
48
49 public string QueryString
50 {
51 get => this.Fields[(int)HelpFilterSymbolFields.QueryString].AsString();
52 set => this.Set((int)HelpFilterSymbolFields.QueryString, value);
53 }
54 }
55} \ No newline at end of file
diff --git a/src/ext/VisualStudio/wixext/Symbols/HelpFilterToNamespaceSymbol.cs b/src/ext/VisualStudio/wixext/Symbols/HelpFilterToNamespaceSymbol.cs
deleted file mode 100644
index f3d21289..00000000
--- a/src/ext/VisualStudio/wixext/Symbols/HelpFilterToNamespaceSymbol.cs
+++ /dev/null
@@ -1,55 +0,0 @@
1// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2
3namespace WixToolset.VisualStudio
4{
5 using WixToolset.Data;
6 using WixToolset.VisualStudio.Symbols;
7
8 public static partial class VSSymbolDefinitions
9 {
10 public static readonly IntermediateSymbolDefinition HelpFilterToNamespace = new IntermediateSymbolDefinition(
11 VSSymbolDefinitionType.HelpFilterToNamespace.ToString(),
12 new[]
13 {
14 new IntermediateFieldDefinition(nameof(HelpFilterToNamespaceSymbolFields.HelpFilterRef), IntermediateFieldType.String),
15 new IntermediateFieldDefinition(nameof(HelpFilterToNamespaceSymbolFields.HelpNamespaceRef), IntermediateFieldType.String),
16 },
17 typeof(HelpFilterToNamespaceSymbol));
18 }
19}
20
21namespace WixToolset.VisualStudio.Symbols
22{
23 using WixToolset.Data;
24
25 public enum HelpFilterToNamespaceSymbolFields
26 {
27 HelpFilterRef,
28 HelpNamespaceRef,
29 }
30
31 public class HelpFilterToNamespaceSymbol : IntermediateSymbol
32 {
33 public HelpFilterToNamespaceSymbol() : base(VSSymbolDefinitions.HelpFilterToNamespace, null, null)
34 {
35 }
36
37 public HelpFilterToNamespaceSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(VSSymbolDefinitions.HelpFilterToNamespace, sourceLineNumber, id)
38 {
39 }
40
41 public IntermediateField this[HelpFilterToNamespaceSymbolFields index] => this.Fields[(int)index];
42
43 public string HelpFilterRef
44 {
45 get => this.Fields[(int)HelpFilterToNamespaceSymbolFields.HelpFilterRef].AsString();
46 set => this.Set((int)HelpFilterToNamespaceSymbolFields.HelpFilterRef, value);
47 }
48
49 public string HelpNamespaceRef
50 {
51 get => this.Fields[(int)HelpFilterToNamespaceSymbolFields.HelpNamespaceRef].AsString();
52 set => this.Set((int)HelpFilterToNamespaceSymbolFields.HelpNamespaceRef, value);
53 }
54 }
55} \ No newline at end of file
diff --git a/src/ext/VisualStudio/wixext/Symbols/HelpNamespaceSymbol.cs b/src/ext/VisualStudio/wixext/Symbols/HelpNamespaceSymbol.cs
deleted file mode 100644
index 8d2c2f80..00000000
--- a/src/ext/VisualStudio/wixext/Symbols/HelpNamespaceSymbol.cs
+++ /dev/null
@@ -1,63 +0,0 @@
1// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2
3namespace WixToolset.VisualStudio
4{
5 using WixToolset.Data;
6 using WixToolset.VisualStudio.Symbols;
7
8 public static partial class VSSymbolDefinitions
9 {
10 public static readonly IntermediateSymbolDefinition HelpNamespace = new IntermediateSymbolDefinition(
11 VSSymbolDefinitionType.HelpNamespace.ToString(),
12 new[]
13 {
14 new IntermediateFieldDefinition(nameof(HelpNamespaceSymbolFields.NamespaceName), IntermediateFieldType.String),
15 new IntermediateFieldDefinition(nameof(HelpNamespaceSymbolFields.CollectionFileRef), IntermediateFieldType.String),
16 new IntermediateFieldDefinition(nameof(HelpNamespaceSymbolFields.Description), IntermediateFieldType.String),
17 },
18 typeof(HelpNamespaceSymbol));
19 }
20}
21
22namespace WixToolset.VisualStudio.Symbols
23{
24 using WixToolset.Data;
25
26 public enum HelpNamespaceSymbolFields
27 {
28 NamespaceName,
29 CollectionFileRef,
30 Description,
31 }
32
33 public class HelpNamespaceSymbol : IntermediateSymbol
34 {
35 public HelpNamespaceSymbol() : base(VSSymbolDefinitions.HelpNamespace, null, null)
36 {
37 }
38
39 public HelpNamespaceSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(VSSymbolDefinitions.HelpNamespace, sourceLineNumber, id)
40 {
41 }
42
43 public IntermediateField this[HelpNamespaceSymbolFields index] => this.Fields[(int)index];
44
45 public string NamespaceName
46 {
47 get => this.Fields[(int)HelpNamespaceSymbolFields.NamespaceName].AsString();
48 set => this.Set((int)HelpNamespaceSymbolFields.NamespaceName, value);
49 }
50
51 public string CollectionFileRef
52 {
53 get => this.Fields[(int)HelpNamespaceSymbolFields.CollectionFileRef].AsString();
54 set => this.Set((int)HelpNamespaceSymbolFields.CollectionFileRef, value);
55 }
56
57 public string Description
58 {
59 get => this.Fields[(int)HelpNamespaceSymbolFields.Description].AsString();
60 set => this.Set((int)HelpNamespaceSymbolFields.Description, value);
61 }
62 }
63} \ No newline at end of file
diff --git a/src/ext/VisualStudio/wixext/Symbols/HelpPluginSymbol.cs b/src/ext/VisualStudio/wixext/Symbols/HelpPluginSymbol.cs
deleted file mode 100644
index a452fbd5..00000000
--- a/src/ext/VisualStudio/wixext/Symbols/HelpPluginSymbol.cs
+++ /dev/null
@@ -1,79 +0,0 @@
1// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2
3namespace WixToolset.VisualStudio
4{
5 using WixToolset.Data;
6 using WixToolset.VisualStudio.Symbols;
7
8 public static partial class VSSymbolDefinitions
9 {
10 public static readonly IntermediateSymbolDefinition HelpPlugin = new IntermediateSymbolDefinition(
11 VSSymbolDefinitionType.HelpPlugin.ToString(),
12 new[]
13 {
14 new IntermediateFieldDefinition(nameof(HelpPluginSymbolFields.HelpNamespaceRef), IntermediateFieldType.String),
15 new IntermediateFieldDefinition(nameof(HelpPluginSymbolFields.ParentHelpNamespaceRef), IntermediateFieldType.String),
16 new IntermediateFieldDefinition(nameof(HelpPluginSymbolFields.HxTFileRef), IntermediateFieldType.String),
17 new IntermediateFieldDefinition(nameof(HelpPluginSymbolFields.HxAFileRef), IntermediateFieldType.String),
18 new IntermediateFieldDefinition(nameof(HelpPluginSymbolFields.ParentHxTFileRef), IntermediateFieldType.String),
19 },
20 typeof(HelpPluginSymbol));
21 }
22}
23
24namespace WixToolset.VisualStudio.Symbols
25{
26 using WixToolset.Data;
27
28 public enum HelpPluginSymbolFields
29 {
30 HelpNamespaceRef,
31 ParentHelpNamespaceRef,
32 HxTFileRef,
33 HxAFileRef,
34 ParentHxTFileRef,
35 }
36
37 public class HelpPluginSymbol : IntermediateSymbol
38 {
39 public HelpPluginSymbol() : base(VSSymbolDefinitions.HelpPlugin, null, null)
40 {
41 }
42
43 public HelpPluginSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(VSSymbolDefinitions.HelpPlugin, sourceLineNumber, id)
44 {
45 }
46
47 public IntermediateField this[HelpPluginSymbolFields index] => this.Fields[(int)index];
48
49 public string HelpNamespaceRef
50 {
51 get => this.Fields[(int)HelpPluginSymbolFields.HelpNamespaceRef].AsString();
52 set => this.Set((int)HelpPluginSymbolFields.HelpNamespaceRef, value);
53 }
54
55 public string ParentHelpNamespaceRef
56 {
57 get => this.Fields[(int)HelpPluginSymbolFields.ParentHelpNamespaceRef].AsString();
58 set => this.Set((int)HelpPluginSymbolFields.ParentHelpNamespaceRef, value);
59 }
60
61 public string HxTFileRef
62 {
63 get => this.Fields[(int)HelpPluginSymbolFields.HxTFileRef].AsString();
64 set => this.Set((int)HelpPluginSymbolFields.HxTFileRef, value);
65 }
66
67 public string HxAFileRef
68 {
69 get => this.Fields[(int)HelpPluginSymbolFields.HxAFileRef].AsString();
70 set => this.Set((int)HelpPluginSymbolFields.HxAFileRef, value);
71 }
72
73 public string ParentHxTFileRef
74 {
75 get => this.Fields[(int)HelpPluginSymbolFields.ParentHxTFileRef].AsString();
76 set => this.Set((int)HelpPluginSymbolFields.ParentHxTFileRef, value);
77 }
78 }
79} \ No newline at end of file
diff --git a/src/ext/VisualStudio/wixext/Symbols/VSSymbolDefinitions.cs b/src/ext/VisualStudio/wixext/Symbols/VSSymbolDefinitions.cs
deleted file mode 100644
index cea6a2b6..00000000
--- a/src/ext/VisualStudio/wixext/Symbols/VSSymbolDefinitions.cs
+++ /dev/null
@@ -1,59 +0,0 @@
1// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2
3namespace WixToolset.VisualStudio
4{
5 using System;
6 using WixToolset.Data;
7
8 public enum VSSymbolDefinitionType
9 {
10 HelpFile,
11 HelpFileToNamespace,
12 HelpFilter,
13 HelpFilterToNamespace,
14 HelpNamespace,
15 HelpPlugin,
16 }
17
18 public static partial class VSSymbolDefinitions
19 {
20 public static readonly Version Version = new Version("4.0.0");
21
22 public static IntermediateSymbolDefinition ByName(string name)
23 {
24 if (!Enum.TryParse(name, out VSSymbolDefinitionType type))
25 {
26 return null;
27 }
28
29 return ByType(type);
30 }
31
32 public static IntermediateSymbolDefinition ByType(VSSymbolDefinitionType type)
33 {
34 switch (type)
35 {
36 case VSSymbolDefinitionType.HelpFile:
37 return VSSymbolDefinitions.HelpFile;
38
39 case VSSymbolDefinitionType.HelpFileToNamespace:
40 return VSSymbolDefinitions.HelpFileToNamespace;
41
42 case VSSymbolDefinitionType.HelpFilter:
43 return VSSymbolDefinitions.HelpFilter;
44
45 case VSSymbolDefinitionType.HelpFilterToNamespace:
46 return VSSymbolDefinitions.HelpFilterToNamespace;
47
48 case VSSymbolDefinitionType.HelpNamespace:
49 return VSSymbolDefinitions.HelpNamespace;
50
51 case VSSymbolDefinitionType.HelpPlugin:
52 return VSSymbolDefinitions.HelpPlugin;
53
54 default:
55 throw new ArgumentOutOfRangeException(nameof(type));
56 }
57 }
58 }
59}
diff --git a/src/ext/VisualStudio/wixext/VSCompiler.cs b/src/ext/VisualStudio/wixext/VSCompiler.cs
index 65f0f97d..1901a700 100644
--- a/src/ext/VisualStudio/wixext/VSCompiler.cs
+++ b/src/ext/VisualStudio/wixext/VSCompiler.cs
@@ -4,13 +4,12 @@ namespace WixToolset.VisualStudio
4{ 4{
5 using System; 5 using System;
6 using System.Collections.Generic; 6 using System.Collections.Generic;
7 using System.Globalization;
8 using System.Xml.Linq; 7 using System.Xml.Linq;
9 using WixToolset.Data; 8 using WixToolset.Data;
10 using WixToolset.Data.Symbols; 9 using WixToolset.Data.Symbols;
11 using WixToolset.Data.WindowsInstaller; 10 using WixToolset.Data.WindowsInstaller;
12 using WixToolset.Extensibility; 11 using WixToolset.Extensibility;
13 using WixToolset.VisualStudio.Symbols; 12 using WixToolset.Extensibility.Data;
14 13
15 /// <summary> 14 /// <summary>
16 /// The compiler for the WiX Toolset Visual Studio Extension. 15 /// The compiler for the WiX Toolset Visual Studio Extension.
@@ -44,12 +43,6 @@ namespace WixToolset.VisualStudio
44 case "File": 43 case "File":
45 switch (element.Name.LocalName) 44 switch (element.Name.LocalName)
46 { 45 {
47 case "HelpCollection":
48 this.ParseHelpCollectionElement(intermediate, section, element, context["FileId"]);
49 break;
50 case "HelpFile":
51 this.ParseHelpFileElement(intermediate, section, element, context["FileId"]);
52 break;
53 case "VsixPackage": 46 case "VsixPackage":
54 this.ParseVsixPackageElement(intermediate, section, element, context["ComponentId"], context["FileId"]); 47 this.ParseVsixPackageElement(intermediate, section, element, context["ComponentId"], context["FileId"]);
55 break; 48 break;
@@ -63,11 +56,8 @@ namespace WixToolset.VisualStudio
63 case "Package": 56 case "Package":
64 switch (element.Name.LocalName) 57 switch (element.Name.LocalName)
65 { 58 {
66 case "HelpCollectionRef": 59 case "FindVisualStudio":
67 this.ParseHelpCollectionRefElement(intermediate, section, element); 60 this.ParseFindVisualStudioElement(intermediate, section, element);
68 break;
69 case "HelpFilter":
70 this.ParseHelpFilterElement(intermediate, section, element);
71 break; 61 break;
72 default: 62 default:
73 this.ParseHelper.UnexpectedElement(parentElement, element); 63 this.ParseHelper.UnexpectedElement(parentElement, element);
@@ -80,496 +70,13 @@ namespace WixToolset.VisualStudio
80 } 70 }
81 } 71 }
82 72
83 private void ParseHelpCollectionRefElement(Intermediate intermediate, IntermediateSection section, XElement element) 73 private void ParseFindVisualStudioElement(Intermediate intermediate, IntermediateSection section, XElement element)
84 {
85 var sourceLineNumbers = this.ParseHelper.GetSourceLineNumbers(element);
86 Identifier id = null;
87
88 foreach (var attrib in element.Attributes())
89 {
90 if (String.IsNullOrEmpty(attrib.Name.NamespaceName) || this.Namespace == attrib.Name.Namespace)
91 {
92 switch (attrib.Name.LocalName)
93 {
94 case "Id":
95 id = this.ParseHelper.GetAttributeIdentifier(sourceLineNumbers, attrib);
96 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, VSSymbolDefinitions.HelpNamespace, id.Id);
97 break;
98 default:
99 this.ParseHelper.UnexpectedAttribute(element, attrib);
100 break;
101 }
102 }
103 else
104 {
105 this.ParseHelper.ParseExtensionAttribute(this.Context.Extensions, intermediate, section, element, attrib);
106 }
107 }
108
109 if (null == id)
110 {
111 this.Messaging.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, element.Name.LocalName, "Id"));
112 }
113
114 foreach (var child in element.Elements())
115 {
116 if (this.Namespace == child.Name.Namespace)
117 {
118 switch (child.Name.LocalName)
119 {
120 case "HelpFileRef":
121 this.ParseHelpFileRefElement(intermediate, section, child, id);
122 break;
123 default:
124 this.ParseHelper.UnexpectedElement(element, child);
125 break;
126 }
127 }
128 else
129 {
130 this.ParseHelper.ParseExtensionElement(this.Context.Extensions, intermediate, section, element, child);
131 }
132 }
133 }
134
135 private void ParseHelpCollectionElement(Intermediate intermediate, IntermediateSection section, XElement element, string fileId)
136 {
137 var sourceLineNumbers = this.ParseHelper.GetSourceLineNumbers(element);
138 Identifier id = null;
139 string description = null;
140 string name = null;
141 var suppressCAs = YesNoType.No;
142
143 foreach (var attrib in element.Attributes())
144 {
145 if (String.IsNullOrEmpty(attrib.Name.NamespaceName) || this.Namespace == attrib.Name.Namespace)
146 {
147 switch (attrib.Name.LocalName)
148 {
149 case "Id":
150 id = this.ParseHelper.GetAttributeIdentifier(sourceLineNumbers, attrib);
151 break;
152 case "Description":
153 description = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
154 break;
155 case "Name":
156 name = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
157 break;
158 case "SuppressCustomActions":
159 suppressCAs = this.ParseHelper.GetAttributeYesNoValue(sourceLineNumbers, attrib);
160 break;
161 default:
162 this.ParseHelper.UnexpectedAttribute(element, attrib);
163 break;
164 }
165 }
166 else
167 {
168 this.ParseHelper.ParseExtensionAttribute(this.Context.Extensions, intermediate, section, element, attrib);
169 }
170 }
171
172 if (null == id)
173 {
174 id = this.ParseHelper.CreateIdentifier("vshc", fileId, description, name);
175 }
176
177 if (null == description)
178 {
179 this.Messaging.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, element.Name.LocalName, "Description"));
180 }
181
182 if (null == name)
183 {
184 this.Messaging.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, element.Name.LocalName, "Name"));
185 }
186
187 foreach (var child in element.Elements())
188 {
189 if (this.Namespace == child.Name.Namespace)
190 {
191 switch (child.Name.LocalName)
192 {
193 case "HelpFileRef":
194 this.ParseHelpFileRefElement(intermediate, section, child, id);
195 break;
196 case "HelpFilterRef":
197 this.ParseHelpFilterRefElement(intermediate, section, child, id);
198 break;
199 case "PlugCollectionInto":
200 this.ParsePlugCollectionIntoElement(intermediate, section, child, id);
201 break;
202 default:
203 this.ParseHelper.UnexpectedElement(element, child);
204 break;
205 }
206 }
207 else
208 {
209 this.ParseHelper.ParseExtensionElement(this.Context.Extensions, intermediate, section, element, child);
210 }
211 }
212
213 if (!this.Messaging.EncounteredError)
214 {
215 section.AddSymbol(new HelpNamespaceSymbol(sourceLineNumbers, id)
216 {
217 NamespaceName = name,
218 CollectionFileRef = fileId,
219 Description = description,
220 });
221
222 if (YesNoType.No == suppressCAs)
223 {
224 this.AddReferenceToRegisterMicrosoftHelp(section, sourceLineNumbers);
225 }
226 }
227 }
228
229 private void ParseHelpFileElement(Intermediate intermediate, IntermediateSection section, XElement element, string fileId)
230 {
231 var sourceLineNumbers = this.ParseHelper.GetSourceLineNumbers(element);
232 Identifier id = null;
233 string name = null;
234 var language = CompilerConstants.IntegerNotSet;
235 string hxi = null;
236 string hxq = null;
237 string hxr = null;
238 string samples = null;
239 var suppressCAs = YesNoType.No;
240
241 foreach (var attrib in element.Attributes())
242 {
243 if (String.IsNullOrEmpty(attrib.Name.NamespaceName) || this.Namespace == attrib.Name.Namespace)
244 {
245 switch (attrib.Name.LocalName)
246 {
247 case "Id":
248 id = this.ParseHelper.GetAttributeIdentifier(sourceLineNumbers, attrib);
249 break;
250 case "AttributeIndex":
251 hxr = this.ParseHelper.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
252 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, SymbolDefinitions.File, hxr);
253 break;
254 case "Index":
255 hxi = this.ParseHelper.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
256 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, SymbolDefinitions.File, hxi);
257 break;
258 case "Language":
259 language = this.ParseHelper.GetAttributeIntegerValue(sourceLineNumbers, attrib, 0, short.MaxValue);
260 break;
261 case "Name":
262 name = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
263 break;
264 case "SampleLocation":
265 samples = this.ParseHelper.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
266 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, SymbolDefinitions.File, samples);
267 break;
268 case "Search":
269 hxq = this.ParseHelper.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
270 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, SymbolDefinitions.File, hxq);
271 break;
272 case "SuppressCustomActions":
273 suppressCAs = this.ParseHelper.GetAttributeYesNoValue(sourceLineNumbers, attrib);
274 break;
275 default:
276 this.ParseHelper.UnexpectedAttribute(element, attrib);
277 break;
278 }
279 }
280 else
281 {
282 this.ParseHelper.ParseExtensionAttribute(this.Context.Extensions, intermediate, section, element, attrib);
283 }
284 }
285
286 if (null == id)
287 {
288 id = this.ParseHelper.CreateIdentifier("vshf", fileId, name, language.ToString(CultureInfo.InvariantCulture.NumberFormat));
289 }
290
291 if (null == name)
292 {
293 this.Messaging.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, element.Name.LocalName, "Name"));
294 }
295
296 // Uninstall will always fail silently, leaving file registered, if Language is not set
297 if (CompilerConstants.IntegerNotSet == language)
298 {
299 this.Messaging.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, element.Name.LocalName, "Language"));
300 }
301
302 this.ParseHelper.ParseForExtensionElements(this.Context.Extensions, intermediate, section, element);
303
304 if (!this.Messaging.EncounteredError)
305 {
306 section.AddSymbol(new HelpFileSymbol(sourceLineNumbers, id)
307 {
308 HelpFileName = name,
309 LangID = language,
310 HxSFileRef = fileId,
311 HxIFileRef = hxi,
312 HxQFileRef = hxq,
313 HxRFileRef = hxr,
314 SamplesFileRef = samples,
315 });
316
317 if (YesNoType.No == suppressCAs)
318 {
319 this.AddReferenceToRegisterMicrosoftHelp(section, sourceLineNumbers);
320 }
321 }
322 }
323
324 private void ParseHelpFileRefElement(Intermediate intermediate, IntermediateSection section, XElement element, Identifier collectionId)
325 {
326 var sourceLineNumbers = this.ParseHelper.GetSourceLineNumbers(element);
327 Identifier id = null;
328
329 foreach (var attrib in element.Attributes())
330 {
331 if (String.IsNullOrEmpty(attrib.Name.NamespaceName) || this.Namespace == attrib.Name.Namespace)
332 {
333 switch (attrib.Name.LocalName)
334 {
335 case "Id":
336 id = this.ParseHelper.GetAttributeIdentifier(sourceLineNumbers, attrib);
337 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, VSSymbolDefinitions.HelpFile, id.Id);
338 break;
339 default:
340 this.ParseHelper.UnexpectedAttribute(element, attrib);
341 break;
342 }
343 }
344 else
345 {
346 this.ParseHelper.ParseExtensionAttribute(this.Context.Extensions, intermediate, section, element, attrib);
347 }
348 }
349
350 if (null == id)
351 {
352 this.Messaging.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, element.Name.LocalName, "Id"));
353 }
354
355 this.ParseHelper.ParseForExtensionElements(this.Context.Extensions, intermediate, section, element);
356
357 if (!this.Messaging.EncounteredError)
358 {
359 section.AddSymbol(new HelpFileToNamespaceSymbol(sourceLineNumbers, id)
360 {
361 HelpFileRef = id.Id,
362 HelpNamespaceRef = collectionId.Id,
363 });
364 }
365 }
366
367 private void ParseHelpFilterElement(Intermediate intermediate, IntermediateSection section, XElement element)
368 {
369 var sourceLineNumbers = this.ParseHelper.GetSourceLineNumbers(element);
370 Identifier id = null;
371 string filterDefinition = null;
372 string name = null;
373 var suppressCAs = YesNoType.No;
374
375 foreach (var attrib in element.Attributes())
376 {
377 if (String.IsNullOrEmpty(attrib.Name.NamespaceName) || this.Namespace == attrib.Name.Namespace)
378 {
379 switch (attrib.Name.LocalName)
380 {
381 case "Id":
382 id = this.ParseHelper.GetAttributeIdentifier(sourceLineNumbers, attrib);
383 break;
384 case "FilterDefinition":
385 filterDefinition = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
386 break;
387 case "Name":
388 name = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
389 break;
390 case "SuppressCustomActions":
391 suppressCAs = this.ParseHelper.GetAttributeYesNoValue(sourceLineNumbers, attrib);
392 break;
393 default:
394 this.ParseHelper.UnexpectedAttribute(element, attrib);
395 break;
396 }
397 }
398 else
399 {
400 this.ParseHelper.ParseExtensionAttribute(this.Context.Extensions, intermediate, section, element, attrib);
401 }
402 }
403
404 if (null == id)
405 {
406 id = this.ParseHelper.CreateIdentifier("hfl", name, filterDefinition);
407 }
408
409 if (null == name)
410 {
411 this.Messaging.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, element.Name.LocalName, "Name"));
412 }
413
414 this.ParseHelper.ParseForExtensionElements(this.Context.Extensions, intermediate, section, element);
415
416 if (!this.Messaging.EncounteredError)
417 {
418 section.AddSymbol(new HelpFilterSymbol(sourceLineNumbers, id)
419 {
420 Description = name,
421 QueryString = filterDefinition,
422 });
423
424 if (YesNoType.No == suppressCAs)
425 {
426 this.AddReferenceToRegisterMicrosoftHelp(section, sourceLineNumbers);
427 }
428 }
429 }
430
431 private void ParseHelpFilterRefElement(Intermediate intermediate, IntermediateSection section, XElement element, Identifier collectionId)
432 {
433 var sourceLineNumbers = this.ParseHelper.GetSourceLineNumbers(element);
434 Identifier id = null;
435
436 foreach (var attrib in element.Attributes())
437 {
438 if (String.IsNullOrEmpty(attrib.Name.NamespaceName) || this.Namespace == attrib.Name.Namespace)
439 {
440 switch (attrib.Name.LocalName)
441 {
442 case "Id":
443 id = this.ParseHelper.GetAttributeIdentifier(sourceLineNumbers, attrib);
444 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, VSSymbolDefinitions.HelpFilter, id.Id);
445 break;
446 default:
447 this.ParseHelper.UnexpectedAttribute(element, attrib);
448 break;
449 }
450 }
451 else
452 {
453 this.ParseHelper.ParseExtensionAttribute(this.Context.Extensions, intermediate, section, element, attrib);
454 }
455 }
456
457 if (null == id)
458 {
459 this.Messaging.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, element.Name.LocalName, "Id"));
460 }
461
462 this.ParseHelper.ParseForExtensionElements(this.Context.Extensions, intermediate, section, element);
463
464 if (!this.Messaging.EncounteredError)
465 {
466 section.AddSymbol(new HelpFilterToNamespaceSymbol(sourceLineNumbers, id)
467 {
468 HelpFilterRef = id.Id,
469 HelpNamespaceRef = collectionId.Id,
470 });
471 }
472 }
473
474 private void ParsePlugCollectionIntoElement(Intermediate intermediate, IntermediateSection section, XElement element, Identifier parentId)
475 { 74 {
476 var sourceLineNumbers = this.ParseHelper.GetSourceLineNumbers(element); 75 var sourceLineNumbers = this.ParseHelper.GetSourceLineNumbers(element);
477 string hxa = null;
478 string hxt = null;
479 string hxtParent = null;
480 string namespaceParent = null;
481 string feature = null;
482 var suppressExternalNamespaces = YesNoType.No;
483
484 foreach (var attrib in element.Attributes())
485 {
486 if (String.IsNullOrEmpty(attrib.Name.NamespaceName) || this.Namespace == attrib.Name.Namespace)
487 {
488 switch (attrib.Name.LocalName)
489 {
490 case "Attributes":
491 hxa = this.ParseHelper.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
492 break;
493 case "TableOfContents":
494 hxt = this.ParseHelper.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
495 break;
496 case "TargetCollection":
497 namespaceParent = this.ParseHelper.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
498 break;
499 case "TargetTableOfContents":
500 hxtParent = this.ParseHelper.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
501 break;
502 case "TargetFeature":
503 feature = this.ParseHelper.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
504 break;
505 case "SuppressExternalNamespaces":
506 suppressExternalNamespaces = this.ParseHelper.GetAttributeYesNoValue(sourceLineNumbers, attrib);
507 break;
508 default:
509 this.ParseHelper.UnexpectedAttribute(element, attrib);
510 break;
511 }
512 }
513 else
514 {
515 this.ParseHelper.ParseExtensionAttribute(this.Context.Extensions, intermediate, section, element, attrib);
516 }
517 }
518
519 var pluginVS05 = namespaceParent.Equals("MS_VSIPCC_v80", StringComparison.Ordinal);
520 var pluginVS08 = namespaceParent.Equals("MS.VSIPCC.v90", StringComparison.Ordinal);
521
522 if (null == namespaceParent)
523 {
524 this.Messaging.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, element.Name.LocalName, "TargetCollection"));
525 }
526
527 if (null == feature && (pluginVS05 || pluginVS08) && YesNoType.No == suppressExternalNamespaces)
528 {
529 this.Messaging.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, element.Name.LocalName, "TargetFeature"));
530 }
531 76
532 this.ParseHelper.ParseForExtensionElements(this.Context.Extensions, intermediate, section, element); 77 this.ParseHelper.ParseForExtensionElements(this.Context.Extensions, intermediate, section, element);
533 78
534 if (!this.Messaging.EncounteredError) 79 this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, "Wix4VSFindInstances", this.Context.Platform, CustomActionPlatforms.X86 | CustomActionPlatforms.X64);
535 {
536 section.AddSymbol(new HelpPluginSymbol(sourceLineNumbers, parentId)
537 {
538 HelpNamespaceRef = parentId.Id,
539 ParentHelpNamespaceRef = namespaceParent,
540 HxTFileRef = hxt,
541 HxAFileRef = hxa,
542 ParentHxTFileRef = hxtParent,
543 });
544
545 if (pluginVS05)
546 {
547 if (YesNoType.No == suppressExternalNamespaces)
548 {
549 // Bring in the help 2 base namespace components for VS 2005
550 this.ParseHelper.CreateComplexReference(section, sourceLineNumbers, ComplexReferenceParentType.Feature, feature, String.Empty,
551 ComplexReferenceChildType.ComponentGroup, "Help2_VS2005_Namespace_Components", false);
552 // Reference CustomAction since nothing will happen without it
553 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, SymbolDefinitions.CustomAction, "CA_HxMerge_VSIPCC_VSCC");
554 }
555 }
556 else if (pluginVS08)
557 {
558 if (YesNoType.No == suppressExternalNamespaces)
559 {
560 // Bring in the help 2 base namespace components for VS 2008
561 this.ParseHelper.CreateComplexReference(section, sourceLineNumbers, ComplexReferenceParentType.Feature, feature, String.Empty,
562 ComplexReferenceChildType.ComponentGroup, "Help2_VS2008_Namespace_Components", false);
563 // Reference CustomAction since nothing will happen without it
564 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, SymbolDefinitions.CustomAction, "CA_ScheduleExtHelpPlugin_VSCC_VSIPCC");
565 }
566 }
567 else
568 {
569 // Reference the parent namespace to enforce the foreign key relationship
570 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, VSSymbolDefinitions.HelpNamespace, namespaceParent);
571 }
572 }
573 } 80 }
574 81
575 private void ParseVsixPackageElement(Intermediate intermediate, IntermediateSection section, XElement element, string componentId, string fileId) 82 private void ParseVsixPackageElement(Intermediate intermediate, IntermediateSection section, XElement element, string componentId, string fileId)
@@ -819,10 +326,5 @@ namespace WixToolset.VisualStudio
819 } 326 }
820 } 327 }
821 } 328 }
822
823 private void AddReferenceToRegisterMicrosoftHelp(IntermediateSection section, SourceLineNumber sourceLineNumbers)
824 {
825 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, SymbolDefinitions.CustomAction, "CA_RegisterMicrosoftHelp.3643236F_FC70_11D3_A536_0090278A1BB8");
826 }
827 } 329 }
828} 330}
diff --git a/src/ext/VisualStudio/wixext/VSExtensionData.cs b/src/ext/VisualStudio/wixext/VSExtensionData.cs
index 51199d2c..82c5b118 100644
--- a/src/ext/VisualStudio/wixext/VSExtensionData.cs
+++ b/src/ext/VisualStudio/wixext/VSExtensionData.cs
@@ -13,12 +13,6 @@ namespace WixToolset.VisualStudio
13 /// <value>The default culture.</value> 13 /// <value>The default culture.</value>
14 public override string DefaultCulture => "en-US"; 14 public override string DefaultCulture => "en-US";
15 15
16 public override bool TryGetSymbolDefinitionByName(string name, out IntermediateSymbolDefinition symbolDefinition)
17 {
18 symbolDefinition = VSSymbolDefinitions.ByName(name);
19 return symbolDefinition != null;
20 }
21
22 public override Intermediate GetLibrary(ISymbolDefinitionCreator symbolDefinitions) 16 public override Intermediate GetLibrary(ISymbolDefinitionCreator symbolDefinitions)
23 { 17 {
24 return Intermediate.Load(typeof(VSExtensionData).Assembly, "WixToolset.VisualStudio.vs.wixlib", symbolDefinitions); 18 return Intermediate.Load(typeof(VSExtensionData).Assembly, "WixToolset.VisualStudio.vs.wixlib", symbolDefinitions);
diff --git a/src/ext/VisualStudio/wixext/VSExtensionFactory.cs b/src/ext/VisualStudio/wixext/VSExtensionFactory.cs
index c6e0cc31..57d2732d 100644
--- a/src/ext/VisualStudio/wixext/VSExtensionFactory.cs
+++ b/src/ext/VisualStudio/wixext/VSExtensionFactory.cs
@@ -12,7 +12,6 @@ namespace WixToolset.VisualStudio
12 { 12 {
13 typeof(VSCompiler), 13 typeof(VSCompiler),
14 typeof(VSExtensionData), 14 typeof(VSExtensionData),
15 typeof(VSWindowsInstallerBackendBinderExtension),
16 }; 15 };
17 } 16 }
18} 17}
diff --git a/src/ext/VisualStudio/wixext/VSTableDefinitions.cs b/src/ext/VisualStudio/wixext/VSTableDefinitions.cs
deleted file mode 100644
index 0c3ca907..00000000
--- a/src/ext/VisualStudio/wixext/VSTableDefinitions.cs
+++ /dev/null
@@ -1,97 +0,0 @@
1// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2
3namespace WixToolset.VisualStudio
4{
5 using WixToolset.Data.WindowsInstaller;
6
7 public static class VSTableDefinitions
8 {
9 public static readonly TableDefinition HelpFile = new TableDefinition(
10 "HelpFile",
11 VSSymbolDefinitions.HelpFile,
12 new[]
13 {
14 new ColumnDefinition("HelpFileKey", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "Primary Key for HelpFile Table (required).", modularizeType: ColumnModularizeType.Column),
15 new ColumnDefinition("HelpFileName", ColumnType.String, 72, primaryKey: false, nullable: false, ColumnCategory.Text, description: "Internal Microsoft Help ID for this HelpFile (required)."),
16 new ColumnDefinition("LangID", ColumnType.Number, 2, primaryKey: false, nullable: true, ColumnCategory.Language, description: "Language ID for content file (optional)."),
17 new ColumnDefinition("File_HxS", ColumnType.String, 72, primaryKey: false, nullable: false, ColumnCategory.Identifier, keyTable: "File", keyColumn: 1, description: "Key for HxS (Title) file (required).", modularizeType: ColumnModularizeType.Column),
18 new ColumnDefinition("File_HxI", ColumnType.String, 72, primaryKey: false, nullable: true, ColumnCategory.Identifier, keyTable: "File", keyColumn: 1, description: "Key for HxI (Index) file (optional).", modularizeType: ColumnModularizeType.Column),
19 new ColumnDefinition("File_HxQ", ColumnType.String, 72, primaryKey: false, nullable: true, ColumnCategory.Identifier, keyTable: "File", keyColumn: 1, description: "Key for HxQ (Query) file (optional).", modularizeType: ColumnModularizeType.Column),
20 new ColumnDefinition("File_HxR", ColumnType.String, 72, primaryKey: false, nullable: true, ColumnCategory.Identifier, keyTable: "File", keyColumn: 1, description: "Key for HxR (Attributes) file (optional).", modularizeType: ColumnModularizeType.Column),
21 new ColumnDefinition("File_Samples", ColumnType.String, 72, primaryKey: false, nullable: true, ColumnCategory.Identifier, keyTable: "File", keyColumn: 1, description: "Key for a file that is in the 'root' of the samples directory for this HelpFile (optional).", modularizeType: ColumnModularizeType.Column),
22 },
23 symbolIdIsPrimaryKey: true
24 );
25
26 public static readonly TableDefinition HelpFileToNamespace = new TableDefinition(
27 "HelpFileToNamespace",
28 VSSymbolDefinitions.HelpFileToNamespace,
29 new[]
30 {
31 new ColumnDefinition("HelpFile_", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, keyTable: "HelpFile", keyColumn: 1, description: "Foreign key into HelpFile table (required).", modularizeType: ColumnModularizeType.Column),
32 new ColumnDefinition("HelpNamespace_", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, keyTable: "HelpNamespace", keyColumn: 1, description: "Foreign key into HelpNamespace table (required)."),
33 },
34 symbolIdIsPrimaryKey: false
35 );
36
37 public static readonly TableDefinition HelpFilter = new TableDefinition(
38 "HelpFilter",
39 VSSymbolDefinitions.HelpFilter,
40 new[]
41 {
42 new ColumnDefinition("FilterKey", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "Primary Key for HelpFilter (required).", modularizeType: ColumnModularizeType.Column),
43 new ColumnDefinition("Description", ColumnType.Localized, 0, primaryKey: false, nullable: false, ColumnCategory.Text, description: "Friendly name for Filter (required)."),
44 new ColumnDefinition("QueryString", ColumnType.String, 0, primaryKey: false, nullable: true, ColumnCategory.Text, description: "Query String for Help Filter (optional)."),
45 },
46 symbolIdIsPrimaryKey: true
47 );
48
49 public static readonly TableDefinition HelpFilterToNamespace = new TableDefinition(
50 "HelpFilterToNamespace",
51 VSSymbolDefinitions.HelpFilterToNamespace,
52 new[]
53 {
54 new ColumnDefinition("HelpFilter_", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, keyTable: "HelpFilter", keyColumn: 1, description: "Foreign key into HelpFilter table (required).", modularizeType: ColumnModularizeType.Column),
55 new ColumnDefinition("HelpNamespace_", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, keyTable: "HelpNamespace", keyColumn: 1, description: "Foreign key into HelpNamespace table (required)."),
56 },
57 symbolIdIsPrimaryKey: false
58 );
59
60 public static readonly TableDefinition HelpNamespace = new TableDefinition(
61 "HelpNamespace",
62 VSSymbolDefinitions.HelpNamespace,
63 new[]
64 {
65 new ColumnDefinition("NamespaceKey", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "Primary Key for HelpNamespace (required)."),
66 new ColumnDefinition("NamespaceName", ColumnType.String, 0, primaryKey: false, nullable: false, ColumnCategory.Text, description: "Internal Microsoft Help ID for this Namespace (required)."),
67 new ColumnDefinition("File_Collection", ColumnType.String, 72, primaryKey: false, nullable: false, ColumnCategory.Identifier, keyTable: "File", keyColumn: 1, description: "Key for HxC (Collection) file (required).", modularizeType: ColumnModularizeType.Column),
68 new ColumnDefinition("Description", ColumnType.Localized, 0, primaryKey: false, nullable: true, ColumnCategory.Text, description: "Friendly name for Namespace (optional)."),
69 },
70 symbolIdIsPrimaryKey: true
71 );
72
73 public static readonly TableDefinition HelpPlugin = new TableDefinition(
74 "HelpPlugin",
75 VSSymbolDefinitions.HelpPlugin,
76 new[]
77 {
78 new ColumnDefinition("HelpNamespace_", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, keyTable: "HelpNamespace", keyColumn: 1, description: "Foreign key into HelpNamespace table for the child namespace that will be plugged into the parent namespace (required)."),
79 new ColumnDefinition("HelpNamespace_Parent", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, keyTable: "HelpNamespace", keyColumn: 1, description: "Foreign key into HelpNamespace table for the parent namespace into which the child will be inserted (required)."),
80 new ColumnDefinition("File_HxT", ColumnType.String, 72, primaryKey: false, nullable: true, ColumnCategory.Identifier, keyTable: "File", keyColumn: 1, description: "Key for HxT file of child namespace (optional).", modularizeType: ColumnModularizeType.Column),
81 new ColumnDefinition("File_HxA", ColumnType.String, 72, primaryKey: false, nullable: true, ColumnCategory.Identifier, keyTable: "File", keyColumn: 1, description: "Key for HxA (Attributes) file of child namespace (optional).", modularizeType: ColumnModularizeType.Column),
82 new ColumnDefinition("File_ParentHxT", ColumnType.String, 72, primaryKey: false, nullable: true, ColumnCategory.Identifier, keyTable: "File", keyColumn: 1, description: "Key for HxT file of parent namespace that now includes the new child namespace (optional).", modularizeType: ColumnModularizeType.Column),
83 },
84 symbolIdIsPrimaryKey: false
85 );
86
87 public static readonly TableDefinition[] All = new[]
88 {
89 HelpFile,
90 HelpFileToNamespace,
91 HelpFilter,
92 HelpFilterToNamespace,
93 HelpNamespace,
94 HelpPlugin,
95 };
96 }
97}
diff --git a/src/ext/VisualStudio/wixext/VSWindowsInstallerBackendBinderExtension.cs b/src/ext/VisualStudio/wixext/VSWindowsInstallerBackendBinderExtension.cs
deleted file mode 100644
index d0d8648c..00000000
--- a/src/ext/VisualStudio/wixext/VSWindowsInstallerBackendBinderExtension.cs
+++ /dev/null
@@ -1,13 +0,0 @@
1// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2
3namespace WixToolset.VisualStudio
4{
5 using System.Collections.Generic;
6 using WixToolset.Data.WindowsInstaller;
7 using WixToolset.Extensibility;
8
9 public class VSWindowsInstallerBackendBinderExtension : BaseWindowsInstallerBackendBinderExtension
10 {
11 public override IReadOnlyCollection<TableDefinition> TableDefinitions => VSTableDefinitions.All;
12 }
13}
diff --git a/src/ext/VisualStudio/wixlib/HTML_Help_Registration__RTL_X86.wxs b/src/ext/VisualStudio/wixlib/HTML_Help_Registration__RTL_X86.wxs
deleted file mode 100644
index 881da279..00000000
--- a/src/ext/VisualStudio/wixlib/HTML_Help_Registration__RTL_X86.wxs
+++ /dev/null
@@ -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>
diff --git a/src/ext/VisualStudio/wixlib/Redist/BIN_File_107602.dll b/src/ext/VisualStudio/wixlib/Redist/BIN_File_107602.dll
deleted file mode 100644
index aef2cf29..00000000
--- a/src/ext/VisualStudio/wixlib/Redist/BIN_File_107602.dll
+++ /dev/null
Binary files differ
diff --git a/src/ext/VisualStudio/wixlib/Redist/BIN_File_46001.dll b/src/ext/VisualStudio/wixlib/Redist/BIN_File_46001.dll
deleted file mode 100644
index 9e470267..00000000
--- a/src/ext/VisualStudio/wixlib/Redist/BIN_File_46001.dll
+++ /dev/null
Binary files differ
diff --git a/src/ext/VisualStudio/wixlib/Redist/BIN_File_46002.dll b/src/ext/VisualStudio/wixlib/Redist/BIN_File_46002.dll
deleted file mode 100644
index ae9c30dd..00000000
--- a/src/ext/VisualStudio/wixlib/Redist/BIN_File_46002.dll
+++ /dev/null
Binary files differ
diff --git a/src/ext/VisualStudio/wixlib/VS2017.wxs b/src/ext/VisualStudio/wixlib/VS2017.wxs
index 5524361d..46cf8b33 100644
--- a/src/ext/VisualStudio/wixlib/VS2017.wxs
+++ b/src/ext/VisualStudio/wixlib/VS2017.wxs
@@ -2,11 +2,10 @@
2 2
3 3
4<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> 4<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
5 <?include ..\..\caDecor.wxi ?>
6
5 <Fragment> 7 <Fragment>
6 <Property Id="VS2017_ROOT_FOLDER" Secure="yes" /> 8 <Property Id="VS2017_ROOT_FOLDER" Secure="yes" />
7
8 <!-- Currently supported only on x86 -->
9 <CustomActionRef Id="VSFindInstances" />
10 </Fragment> 9 </Fragment>
11 10
12 <Fragment> 11 <Fragment>
diff --git a/src/ext/VisualStudio/wixlib/VS2019.wxs b/src/ext/VisualStudio/wixlib/VS2019.wxs
index 0be63dec..0deef2cc 100644
--- a/src/ext/VisualStudio/wixlib/VS2019.wxs
+++ b/src/ext/VisualStudio/wixlib/VS2019.wxs
@@ -2,11 +2,10 @@
2 2
3 3
4<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> 4<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
5 <?include ..\..\caDecor.wxi ?>
6
5 <Fragment> 7 <Fragment>
6 <Property Id="VS2019_ROOT_FOLDER" Secure="yes" /> 8 <Property Id="VS2019_ROOT_FOLDER" Secure="yes" />
7
8 <!-- Currently supported only on x86 -->
9 <CustomActionRef Id="VSFindInstances" />
10 </Fragment> 9 </Fragment>
11 10
12 <Fragment> 11 <Fragment>
diff --git a/src/ext/VisualStudio/wixlib/VS2022.wxs b/src/ext/VisualStudio/wixlib/VS2022.wxs
new file mode 100644
index 00000000..cad25441
--- /dev/null
+++ b/src/ext/VisualStudio/wixlib/VS2022.wxs
@@ -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>
diff --git a/src/ext/VisualStudio/wixlib/VSExtension_Platform.wxi b/src/ext/VisualStudio/wixlib/VSExtension_Platform.wxi
index f9cd96f4..32aedb65 100644
--- a/src/ext/VisualStudio/wixlib/VSExtension_Platform.wxi
+++ b/src/ext/VisualStudio/wixlib/VSExtension_Platform.wxi
@@ -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. --> 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 2
3<Include xmlns="http://wixtoolset.org/schemas/v4/wxs"> 3<Include xmlns="http://wixtoolset.org/schemas/v4/wxs">
4 <?include caSuffix.wxi ?> 4 <?include ..\..\caDecor.wxi ?>
5
5 <Fragment> 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)" />
7 <InstallExecuteSequence> 8 <InstallExecuteSequence>
8 <Custom Action="VSFindInstances$(var.Suffix)" Before="AppSearch" Overridable="yes" /> 9 <Custom Action="$(var.Prefix)VSFindInstances$(var.Suffix)" Before="AppSearch" Overridable="yes" />
9 </InstallExecuteSequence> 10 </InstallExecuteSequence>
10 <InstallUISequence> 11 <InstallUISequence>
11 <Custom Action="VSFindInstances$(var.Suffix)" Before="AppSearch" Overridable="yes" /> 12 <Custom Action="$(var.Prefix)VSFindInstances$(var.Suffix)" Before="AppSearch" Overridable="yes" />
12 </InstallUISequence> 13 </InstallUISequence>
13 </Fragment> 14 </Fragment>
15
14 <Fragment> 16 <Fragment>
15 <Binary Id="VSCA$(var.Suffix)" SourceFile="vsca.dll" /> 17 <Binary Id="VSCA$(var.Suffix)" SourceFile="vsca.dll" />
16 </Fragment> 18 </Fragment>
diff --git a/src/ext/VisualStudio/wixlib/VSExtension_x64.wxs b/src/ext/VisualStudio/wixlib/VSExtension_x64.wxs
new file mode 100644
index 00000000..c9df54ca
--- /dev/null
+++ b/src/ext/VisualStudio/wixlib/VSExtension_x64.wxs
@@ -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>
diff --git a/src/ext/VisualStudio/wixlib/caSuffix.wxi b/src/ext/VisualStudio/wixlib/caSuffix.wxi
deleted file mode 100644
index a56a2393..00000000
--- a/src/ext/VisualStudio/wixlib/caSuffix.wxi
+++ /dev/null
@@ -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>
diff --git a/src/ext/VisualStudio/wixlib/vs.wixproj b/src/ext/VisualStudio/wixlib/vs.wixproj
index f2852683..8af4d7ef 100644
--- a/src/ext/VisualStudio/wixlib/vs.wixproj
+++ b/src/ext/VisualStudio/wixlib/vs.wixproj
@@ -9,7 +9,8 @@
9 </PropertyGroup> 9 </PropertyGroup>
10 10
11 <ItemGroup> 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" />
13 </ItemGroup> 14 </ItemGroup>
14 15
15 <ItemGroup> 16 <ItemGroup>
diff --git a/src/ext/VisualStudio/wixlib/vs2005/VS2005_VSIPCC_Collection_Files_RTL.wxs b/src/ext/VisualStudio/wixlib/vs2005/VS2005_VSIPCC_Collection_Files_RTL.wxs
deleted file mode 100644
index 66757349..00000000
--- a/src/ext/VisualStudio/wixlib/vs2005/VS2005_VSIPCC_Collection_Files_RTL.wxs
+++ /dev/null
@@ -1,63 +0,0 @@
1<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
2
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>
diff --git a/src/ext/VisualStudio/wixlib/vs2005/redist/BIN_File_60377.dll b/src/ext/VisualStudio/wixlib/vs2005/redist/BIN_File_60377.dll
deleted file mode 100644
index dfdddf66..00000000
--- a/src/ext/VisualStudio/wixlib/vs2005/redist/BIN_File_60377.dll
+++ /dev/null
Binary files differ
diff --git a/src/ext/VisualStudio/wixlib/vs2005/redist/vsipCCSamples.HxK b/src/ext/VisualStudio/wixlib/vs2005/redist/vsipCCSamples.HxK
deleted file mode 100644
index 00db745c..00000000
--- a/src/ext/VisualStudio/wixlib/vs2005/redist/vsipCCSamples.HxK
+++ /dev/null
@@ -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
diff --git a/src/ext/VisualStudio/wixlib/vs2005/redist/vsipcc.hxc b/src/ext/VisualStudio/wixlib/vs2005/redist/vsipcc.hxc
deleted file mode 100644
index 406e7f2b..00000000
--- a/src/ext/VisualStudio/wixlib/vs2005/redist/vsipcc.hxc
+++ /dev/null
@@ -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
diff --git a/src/ext/VisualStudio/wixlib/vs2005/redist/vsipcc.hxt b/src/ext/VisualStudio/wixlib/vs2005/redist/vsipcc.hxt
deleted file mode 100644
index 613dcfbb..00000000
--- a/src/ext/VisualStudio/wixlib/vs2005/redist/vsipcc.hxt
+++ /dev/null
@@ -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
diff --git a/src/ext/VisualStudio/wixlib/vs2005/redist/vsipccALinks.hxk b/src/ext/VisualStudio/wixlib/vs2005/redist/vsipccALinks.hxk
deleted file mode 100644
index 27017f76..00000000
--- a/src/ext/VisualStudio/wixlib/vs2005/redist/vsipccALinks.hxk
+++ /dev/null
@@ -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
diff --git a/src/ext/VisualStudio/wixlib/vs2005/redist/vsipccBLinks.hxk b/src/ext/VisualStudio/wixlib/vs2005/redist/vsipccBLinks.hxk
deleted file mode 100644
index b37d2e18..00000000
--- a/src/ext/VisualStudio/wixlib/vs2005/redist/vsipccBLinks.hxk
+++ /dev/null
@@ -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>
diff --git a/src/ext/VisualStudio/wixlib/vs2005/redist/vsipccFLinks.hxk b/src/ext/VisualStudio/wixlib/vs2005/redist/vsipccFLinks.hxk
deleted file mode 100644
index 2d37efbf..00000000
--- a/src/ext/VisualStudio/wixlib/vs2005/redist/vsipccFLinks.hxk
+++ /dev/null
@@ -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
diff --git a/src/ext/VisualStudio/wixlib/vs2005/redist/vsipccKLinks.hxk b/src/ext/VisualStudio/wixlib/vs2005/redist/vsipccKLinks.hxk
deleted file mode 100644
index 2938eff3..00000000
--- a/src/ext/VisualStudio/wixlib/vs2005/redist/vsipccKLinks.hxk
+++ /dev/null
@@ -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
diff --git a/src/ext/VisualStudio/wixlib/vs2005/redist/vsipccNamedURLs.hxk b/src/ext/VisualStudio/wixlib/vs2005/redist/vsipccNamedURLs.hxk
deleted file mode 100644
index 8691c54c..00000000
--- a/src/ext/VisualStudio/wixlib/vs2005/redist/vsipccNamedURLs.hxk
+++ /dev/null
@@ -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
diff --git a/src/ext/VisualStudio/wixlib/vs2005/redist/vsipccSlinks.hxk b/src/ext/VisualStudio/wixlib/vs2005/redist/vsipccSlinks.hxk
deleted file mode 100644
index 9d193521..00000000
--- a/src/ext/VisualStudio/wixlib/vs2005/redist/vsipccSlinks.hxk
+++ /dev/null
@@ -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
diff --git a/src/ext/VisualStudio/wixlib/vs2005/redist/vsipcc_reg.hxs b/src/ext/VisualStudio/wixlib/vs2005/redist/vsipcc_reg.hxs
deleted file mode 100644
index 3f2905c4..00000000
--- a/src/ext/VisualStudio/wixlib/vs2005/redist/vsipcc_reg.hxs
+++ /dev/null
Binary files differ
diff --git a/src/ext/VisualStudio/wixlib/vs2008/VS2008_VSIPCC_Collection_Files_RTL.wxs b/src/ext/VisualStudio/wixlib/vs2008/VS2008_VSIPCC_Collection_Files_RTL.wxs
deleted file mode 100644
index 9fb1a0e5..00000000
--- a/src/ext/VisualStudio/wixlib/vs2008/VS2008_VSIPCC_Collection_Files_RTL.wxs
+++ /dev/null
@@ -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>
diff --git a/src/ext/VisualStudio/wixlib/vs2008/redist/BIN_435439_x86_enu.dll b/src/ext/VisualStudio/wixlib/vs2008/redist/BIN_435439_x86_enu.dll
deleted file mode 100644
index 7f5e9436..00000000
--- a/src/ext/VisualStudio/wixlib/vs2008/redist/BIN_435439_x86_enu.dll
+++ /dev/null
Binary files differ
diff --git a/src/ext/VisualStudio/wixlib/vs2008/redist/_ALinks.hxk b/src/ext/VisualStudio/wixlib/vs2008/redist/_ALinks.hxk
deleted file mode 100644
index dd6df168..00000000
--- a/src/ext/VisualStudio/wixlib/vs2008/redist/_ALinks.hxk
+++ /dev/null
@@ -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
diff --git a/src/ext/VisualStudio/wixlib/vs2008/redist/_BLinks.hxk b/src/ext/VisualStudio/wixlib/vs2008/redist/_BLinks.hxk
deleted file mode 100644
index a2288162..00000000
--- a/src/ext/VisualStudio/wixlib/vs2008/redist/_BLinks.hxk
+++ /dev/null
@@ -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
diff --git a/src/ext/VisualStudio/wixlib/vs2008/redist/_CLinks.hxk b/src/ext/VisualStudio/wixlib/vs2008/redist/_CLinks.hxk
deleted file mode 100644
index da0df730..00000000
--- a/src/ext/VisualStudio/wixlib/vs2008/redist/_CLinks.hxk
+++ /dev/null
@@ -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>
diff --git a/src/ext/VisualStudio/wixlib/vs2008/redist/_FLinks.hxk b/src/ext/VisualStudio/wixlib/vs2008/redist/_FLinks.hxk
deleted file mode 100644
index 37dfda34..00000000
--- a/src/ext/VisualStudio/wixlib/vs2008/redist/_FLinks.hxk
+++ /dev/null
@@ -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
diff --git a/src/ext/VisualStudio/wixlib/vs2008/redist/_KLinks.hxk b/src/ext/VisualStudio/wixlib/vs2008/redist/_KLinks.hxk
deleted file mode 100644
index 2303ed0c..00000000
--- a/src/ext/VisualStudio/wixlib/vs2008/redist/_KLinks.hxk
+++ /dev/null
@@ -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
diff --git a/src/ext/VisualStudio/wixlib/vs2008/redist/_SLinks.hxk b/src/ext/VisualStudio/wixlib/vs2008/redist/_SLinks.hxk
deleted file mode 100644
index 9f65eca3..00000000
--- a/src/ext/VisualStudio/wixlib/vs2008/redist/_SLinks.hxk
+++ /dev/null
@@ -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
diff --git a/src/ext/VisualStudio/wixlib/vs2008/redist/_vsipcc90.hxc b/src/ext/VisualStudio/wixlib/vs2008/redist/_vsipcc90.hxc
deleted file mode 100644
index 9ad6869e..00000000
--- a/src/ext/VisualStudio/wixlib/vs2008/redist/_vsipcc90.hxc
+++ /dev/null
@@ -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
diff --git a/src/ext/VisualStudio/wixlib/vs2008/redist/_vsipcc90.hxt b/src/ext/VisualStudio/wixlib/vs2008/redist/_vsipcc90.hxt
deleted file mode 100644
index 3ac4d5d6..00000000
--- a/src/ext/VisualStudio/wixlib/vs2008/redist/_vsipcc90.hxt
+++ /dev/null
@@ -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
diff --git a/src/ext/VisualStudio/wixlib/vs2008/redist/_vsipcc_namedUrls.hxk b/src/ext/VisualStudio/wixlib/vs2008/redist/_vsipcc_namedUrls.hxk
deleted file mode 100644
index aaa79158..00000000
--- a/src/ext/VisualStudio/wixlib/vs2008/redist/_vsipcc_namedUrls.hxk
+++ /dev/null
@@ -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
diff --git a/src/ext/VisualStudio/wixlib/vs2008/redist/_vsipcc_samples.HxK b/src/ext/VisualStudio/wixlib/vs2008/redist/_vsipcc_samples.HxK
deleted file mode 100644
index 00db745c..00000000
--- a/src/ext/VisualStudio/wixlib/vs2008/redist/_vsipcc_samples.HxK
+++ /dev/null
@@ -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
diff --git a/src/ext/VisualStudio/wixlib/vs2008/redist/vsipcc_reg.hxs b/src/ext/VisualStudio/wixlib/vs2008/redist/vsipcc_reg.hxs
deleted file mode 100644
index f6446867..00000000
--- a/src/ext/VisualStudio/wixlib/vs2008/redist/vsipcc_reg.hxs
+++ /dev/null
Binary files differ
diff --git a/src/internal/SetBuildNumber/Directory.Packages.props.pp b/src/internal/SetBuildNumber/Directory.Packages.props.pp
index ff73265c..37b2d398 100644
--- a/src/internal/SetBuildNumber/Directory.Packages.props.pp
+++ b/src/internal/SetBuildNumber/Directory.Packages.props.pp
@@ -42,7 +42,7 @@
42 <PackageVersion Include="System.Text.Encoding.CodePages" Version="4.6.0" /> 42 <PackageVersion Include="System.Text.Encoding.CodePages" Version="4.6.0" />
43 43
44 <PackageVersion Include="Microsoft.AspNetCore.Owin" Version="3.1.13" /> 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" /> 46 <PackageVersion Include="Microsoft.Win32.Registry" Version="4.7.0" />
47 47
48 <PackageVersion Include="NuGet.Credentials" Version="5.6.0" /> 48 <PackageVersion Include="NuGet.Credentials" Version="5.6.0" />
diff --git a/src/wix/WixToolset.Converters/WixConverter.cs b/src/wix/WixToolset.Converters/WixConverter.cs
index e72d0024..ea8e9b88 100644
--- a/src/wix/WixToolset.Converters/WixConverter.cs
+++ b/src/wix/WixToolset.Converters/WixConverter.cs
@@ -55,8 +55,9 @@ namespace WixToolset.Converters
55 private static readonly XNamespace Wix3Namespace = "http://schemas.microsoft.com/wix/2006/wi"; 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"; 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"; 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";
59 private static readonly XNamespace WixFirewallNamespace = "http://wixtoolset.org/schemas/v4/wxs/firewall"; 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";
60 61
61 private static readonly XName AdminExecuteSequenceElementName = WixNamespace + "AdminExecuteSequence"; 62 private static readonly XName AdminExecuteSequenceElementName = WixNamespace + "AdminExecuteSequence";
62 private static readonly XName AdminUISequenceSequenceElementName = WixNamespace + "AdminUISequence"; 63 private static readonly XName AdminUISequenceSequenceElementName = WixNamespace + "AdminUISequence";
@@ -288,6 +289,8 @@ namespace WixToolset.Converters
288 289
289 private int SourceVersion { get; set; } 290 private int SourceVersion { get; set; }
290 291
292 public XElement XRoot { get; private set; }
293
291 /// <summary> 294 /// <summary>
292 /// Convert a file. 295 /// Convert a file.
293 /// </summary> 296 /// </summary>
@@ -334,6 +337,8 @@ namespace WixToolset.Converters
334 TrimLeadingText(document); 337 TrimLeadingText(document);
335 } 338 }
336 339
340 this.XRoot = document.Root;
341
337 // Start converting the nodes at the top. 342 // Start converting the nodes at the top.
338 this.ConvertNodes(document.Nodes(), 0); 343 this.ConvertNodes(document.Nodes(), 0);
339 this.RemoveUnusedNamespaces(document.Root); 344 this.RemoveUnusedNamespaces(document.Root);
@@ -1269,14 +1274,14 @@ namespace WixToolset.Converters
1269 xPackage.SetAttributeValue("Scope", "perUser"); 1274 xPackage.SetAttributeValue("Scope", "perUser");
1270 break; 1275 break;
1271 case "elevated": 1276 case "elevated":
1272 {
1273 var xAllUsers = xPackage.Elements(PropertyElementName).SingleOrDefault(p => p.Attribute("Id")?.Value == "ALLUSERS");
1274 if (xAllUsers?.Attribute("Value")?.Value == "1")
1275 { 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 }
1277 } 1283 }
1278 } 1284 break;
1279 break;
1280 } 1285 }
1281 1286
1282 xInstallPrivileges?.Remove(); 1287 xInstallPrivileges?.Remove();
@@ -1309,6 +1314,9 @@ namespace WixToolset.Converters
1309 private void ConvertPropertyRefElement(XElement element) 1314 private void ConvertPropertyRefElement(XElement element)
1310 { 1315 {
1311 var newElementName = String.Empty; 1316 var newElementName = String.Empty;
1317 var newNamespace = WixUtilNamespace;
1318 var newNamespaceName = "util";
1319 var replace = true;
1312 1320
1313 var id = element.Attribute("Id"); 1321 var id = element.Attribute("Id");
1314 switch (id?.Value) 1322 switch (id?.Value)
@@ -1377,13 +1385,69 @@ namespace WixToolset.Converters
1377 case "WIX_NATIVE_MACHINE": 1385 case "WIX_NATIVE_MACHINE":
1378 newElementName = "QueryNativeMachine"; 1386 newElementName = "QueryNativeMachine";
1379 break; 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;
1380 } 1438 }
1381 1439
1382 if (!String.IsNullOrEmpty(newElementName) 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))
1384 { 1442 {
1385 element.AddAfterSelf(new XElement(WixUtilNamespace + newElementName)); 1443 this.XRoot.SetAttributeValue(XNamespace.Xmlns + newNamespaceName, newNamespace.NamespaceName);
1386 element.Remove(); 1444
1445 element.AddBeforeSelf(new XElement(newNamespace + newElementName));
1446
1447 if (replace)
1448 {
1449 element.Remove();
1450 }
1387 } 1451 }
1388 } 1452 }
1389 1453
@@ -1406,7 +1470,7 @@ namespace WixToolset.Converters
1406 } 1470 }
1407 1471
1408 if (!String.IsNullOrEmpty(newElementName) 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))
1410 { 1474 {
1411 element.AddAfterSelf(new XElement(WixUtilNamespace + newElementName)); 1475 element.AddAfterSelf(new XElement(WixUtilNamespace + newElementName));
1412 element.Remove(); 1476 element.Remove();
@@ -2467,9 +2531,9 @@ namespace WixToolset.Converters
2467 DefiningStandardDirectoryDeprecated, 2531 DefiningStandardDirectoryDeprecated,
2468 2532
2469 /// <summary> 2533 /// <summary>
2470 /// Naked custom action and property references replaced with WixUtilExtension elements. 2534 /// Naked custom action and property references replaced with elements.
2471 /// </summary> 2535 /// </summary>
2472 UtilReferencesReplaced, 2536 ReferencesReplaced,
2473 2537
2474 /// <summary> 2538 /// <summary>
2475 /// Cache attribute value updated. 2539 /// Cache attribute value updated.
diff --git a/src/wix/test/WixToolsetTest.Converters/VSExtensionFixture.cs b/src/wix/test/WixToolsetTest.Converters/VSExtensionFixture.cs
new file mode 100644
index 00000000..7eb81b05
--- /dev/null
+++ b/src/wix/test/WixToolsetTest.Converters/VSExtensionFixture.cs
@@ -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
3namespace 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}