diff options
Diffstat (limited to 'src/ext/VisualStudio')
9 files changed, 259 insertions, 12 deletions
diff --git a/src/ext/VisualStudio/README.md b/src/ext/VisualStudio/README.md index bf48670c..55f5d1df 100644 --- a/src/ext/VisualStudio/README.md +++ b/src/ext/VisualStudio/README.md | |||
| @@ -17,9 +17,9 @@ To pay the Maintenance Fee, [become a Sponsor](https://github.com/sponsors/wixto | |||
| 17 | Add the WiX Extension as a PackageReference to your .wixproj: | 17 | Add the WiX Extension as a PackageReference to your .wixproj: |
| 18 | 18 | ||
| 19 | ``` | 19 | ``` |
| 20 | <Project Sdk="WixToolset.Sdk/7.0.0"> | 20 | <Project Sdk="WixToolset.Sdk/8.0.0"> |
| 21 | <ItemGroup> | 21 | <ItemGroup> |
| 22 | <PackageReference Include="WixToolset.VisualStudio.wixext" Version="7.0.0" /> | 22 | <PackageReference Include="WixToolset.VisualStudio.wixext" Version="8.0.0" /> |
| 23 | </ItemGroup> | 23 | </ItemGroup> |
| 24 | </Project> | 24 | </Project> |
| 25 | ``` | 25 | ``` |
diff --git a/src/ext/VisualStudio/ca/vsca.cpp b/src/ext/VisualStudio/ca/vsca.cpp index 681187d6..8524629b 100644 --- a/src/ext/VisualStudio/ca/vsca.cpp +++ b/src/ext/VisualStudio/ca/vsca.cpp | |||
| @@ -59,6 +59,12 @@ static HRESULT ProcessVS2022( | |||
| 59 | __in BOOL fComplete | 59 | __in BOOL fComplete |
| 60 | ); | 60 | ); |
| 61 | 61 | ||
| 62 | static HRESULT ProcessVS2026( | ||
| 63 | __in_opt ISetupInstance* pInstance, | ||
| 64 | __in DWORD64 qwVersion, | ||
| 65 | __in BOOL fComplete | ||
| 66 | ); | ||
| 67 | |||
| 62 | static HRESULT SetPropertyForComponent( | 68 | static HRESULT SetPropertyForComponent( |
| 63 | __in DWORD cComponents, | 69 | __in DWORD cComponents, |
| 64 | __in VS_COMPONENT_PROPERTY* rgComponents, | 70 | __in VS_COMPONENT_PROPERTY* rgComponents, |
| @@ -70,6 +76,7 @@ static VS_INSTANCE vrgInstances[] = | |||
| 70 | { FILEMAKEVERSION(15, 0, 0, 0), FILEMAKEVERSION(15, 0xffff, 0xffff, 0xffff), ProcessVS2017 }, | 76 | { FILEMAKEVERSION(15, 0, 0, 0), FILEMAKEVERSION(15, 0xffff, 0xffff, 0xffff), ProcessVS2017 }, |
| 71 | { FILEMAKEVERSION(16, 0, 0, 0), FILEMAKEVERSION(16, 0xffff, 0xffff, 0xffff), ProcessVS2019 }, | 77 | { FILEMAKEVERSION(16, 0, 0, 0), FILEMAKEVERSION(16, 0xffff, 0xffff, 0xffff), ProcessVS2019 }, |
| 72 | { FILEMAKEVERSION(17, 0, 0, 0), FILEMAKEVERSION(17, 0xffff, 0xffff, 0xffff), ProcessVS2022 }, | 78 | { FILEMAKEVERSION(17, 0, 0, 0), FILEMAKEVERSION(17, 0xffff, 0xffff, 0xffff), ProcessVS2022 }, |
| 79 | { FILEMAKEVERSION(18, 0, 0, 0), FILEMAKEVERSION(18, 0xffff, 0xffff, 0xffff), ProcessVS2026 }, | ||
| 73 | }; | 80 | }; |
| 74 | 81 | ||
| 75 | /****************************************************************** | 82 | /****************************************************************** |
| @@ -566,6 +573,80 @@ LExit: | |||
| 566 | return hr; | 573 | return hr; |
| 567 | } | 574 | } |
| 568 | 575 | ||
| 576 | static HRESULT ProcessVS2026( | ||
| 577 | __in_opt ISetupInstance* pInstance, | ||
| 578 | __in DWORD64 qwVersion, | ||
| 579 | __in BOOL fComplete | ||
| 580 | ) | ||
| 581 | { | ||
| 582 | static ISetupInstance* pLatest = NULL; | ||
| 583 | static DWORD64 qwLatest = 0; | ||
| 584 | |||
| 585 | static LPCWSTR rgwzProducts[] = | ||
| 586 | { | ||
| 587 | L"Microsoft.VisualStudio.Product.Community", | ||
| 588 | L"Microsoft.VisualStudio.Product.Professional", | ||
| 589 | L"Microsoft.VisualStudio.Product.Enterprise", | ||
| 590 | }; | ||
| 591 | |||
| 592 | // TODO: Consider making table-driven with these defaults per-version for easy customization. | ||
| 593 | static VS_COMPONENT_PROPERTY rgComponents[] = | ||
| 594 | { | ||
| 595 | { L"Microsoft.VisualStudio.Component.FSharp", L"VS2026_IDE_FSHARP_PROJECTSYSTEM_INSTALLED" }, | ||
| 596 | { L"Microsoft.VisualStudio.Component.Roslyn.LanguageServices", L"VS2026_IDE_VB_PROJECTSYSTEM_INSTALLED" }, | ||
| 597 | { L"Microsoft.VisualStudio.Component.Roslyn.LanguageServices", L"VS2026_IDE_VCSHARP_PROJECTSYSTEM_INSTALLED" }, | ||
| 598 | { L"Microsoft.VisualStudio.PackageGroup.TestTools.Core", L"VS2026_IDE_VSTS_TESTSYSTEM_INSTALLED" }, | ||
| 599 | { L"Microsoft.VisualStudio.Component.VC.CoreIde", L"VS2026_IDE_VC_PROJECTSYSTEM_INSTALLED" }, | ||
| 600 | { L"Microsoft.VisualStudio.Component.Web", L"VS2026_IDE_VWD_PROJECTSYSTEM_INSTALLED" }, | ||
| 601 | { L"Microsoft.VisualStudio.PackageGroup.DslRuntime", L"VS2026_IDE_MODELING_PROJECTSYSTEM_INSTALLED" }, | ||
| 602 | }; | ||
| 603 | |||
| 604 | HRESULT hr = S_OK; | ||
| 605 | |||
| 606 | if (fComplete) | ||
| 607 | { | ||
| 608 | if (pLatest) | ||
| 609 | { | ||
| 610 | hr = ProcessInstance(pLatest, L"VS2026_ROOT_FOLDER", countof(rgComponents), rgComponents); | ||
| 611 | ExitOnFailure(hr, "Failed to process VS2026 instance."); | ||
| 612 | } | ||
| 613 | } | ||
| 614 | else if (pInstance) | ||
| 615 | { | ||
| 616 | hr = InstanceInProducts(pInstance, countof(rgwzProducts), rgwzProducts); | ||
| 617 | ExitOnFailure(hr, "Failed to compare product IDs."); | ||
| 618 | |||
| 619 | if (S_FALSE == hr) | ||
| 620 | { | ||
| 621 | ExitFunction(); | ||
| 622 | } | ||
| 623 | |||
| 624 | hr = InstanceIsGreater(pLatest, qwLatest, pInstance, qwVersion); | ||
| 625 | ExitOnFailure(hr, "Failed to compare instances."); | ||
| 626 | |||
| 627 | if (S_FALSE == hr) | ||
| 628 | { | ||
| 629 | ExitFunction(); | ||
| 630 | } | ||
| 631 | |||
| 632 | ReleaseNullObject(pLatest); | ||
| 633 | |||
| 634 | pLatest = pInstance; | ||
| 635 | qwLatest = qwVersion; | ||
| 636 | |||
| 637 | // Caller will do a final Release() otherwise. | ||
| 638 | pLatest->AddRef(); | ||
| 639 | } | ||
| 640 | |||
| 641 | LExit: | ||
| 642 | if (fComplete) | ||
| 643 | { | ||
| 644 | ReleaseObject(pLatest); | ||
| 645 | } | ||
| 646 | |||
| 647 | return hr; | ||
| 648 | } | ||
| 649 | |||
| 569 | static HRESULT SetPropertyForComponent( | 650 | static HRESULT SetPropertyForComponent( |
| 570 | __in DWORD cComponents, | 651 | __in DWORD cComponents, |
| 571 | __in VS_COMPONENT_PROPERTY* rgComponents, | 652 | __in VS_COMPONENT_PROPERTY* rgComponents, |
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 d56674e3..d827dafb 100644 --- a/src/ext/VisualStudio/test/WixToolsetTest.VisualStudio/TestData/UsingVsixPackage/Package.wxs +++ b/src/ext/VisualStudio/test/WixToolsetTest.VisualStudio/TestData/UsingVsixPackage/Package.wxs | |||
| @@ -6,6 +6,7 @@ | |||
| 6 | <PropertyRef Id="VS2017DEVENV" /> | 6 | <PropertyRef Id="VS2017DEVENV" /> |
| 7 | <PropertyRef Id="VS2019_IDE_VCSHARP_PROJECTSYSTEM_INSTALLED" /> | 7 | <PropertyRef Id="VS2019_IDE_VCSHARP_PROJECTSYSTEM_INSTALLED" /> |
| 8 | <PropertyRef Id="VS2022_ROOT_FOLDER" /> | 8 | <PropertyRef Id="VS2022_ROOT_FOLDER" /> |
| 9 | <PropertyRef Id="VS2026_ROOT_FOLDER" /> | ||
| 9 | 10 | ||
| 10 | <Feature Id="ProductFeature" Title="!(loc.FeatureTitle)"> | 11 | <Feature Id="ProductFeature" Title="!(loc.FeatureTitle)"> |
| 11 | <ComponentGroupRef Id="ProductComponents" /> | 12 | <ComponentGroupRef Id="ProductComponents" /> |
diff --git a/src/ext/VisualStudio/test/WixToolsetTest.VisualStudio/VisualStudioExtensionFixture.cs b/src/ext/VisualStudio/test/WixToolsetTest.VisualStudio/VisualStudioExtensionFixture.cs index 361f5274..bffb5e14 100644 --- a/src/ext/VisualStudio/test/WixToolsetTest.VisualStudio/VisualStudioExtensionFixture.cs +++ b/src/ext/VisualStudio/test/WixToolsetTest.VisualStudio/VisualStudioExtensionFixture.cs | |||
| @@ -36,7 +36,7 @@ namespace WixToolsetTest.VisualStudio | |||
| 36 | "CustomAction:Vwd2012VsixWhenVSAbsent\t51\tVS_VSIX_INSTALLER_PATH\t[VWD2012_VSIX_INSTALL_ROOT]\\Common7\\IDE\\VSIXInstaller.exe\t", | 36 | "CustomAction:Vwd2012VsixWhenVSAbsent\t51\tVS_VSIX_INSTALLER_PATH\t[VWD2012_VSIX_INSTALL_ROOT]\\Common7\\IDE\\VSIXInstaller.exe\t", |
| 37 | "CustomAction:Vwd2013VsixWhenVSAbsent\t51\tVS_VSIX_INSTALLER_PATH\t[VWD2013_VSIX_INSTALL_ROOT]\\Common7\\IDE\\VSIXInstaller.exe\t", | 37 | "CustomAction:Vwd2013VsixWhenVSAbsent\t51\tVS_VSIX_INSTALLER_PATH\t[VWD2013_VSIX_INSTALL_ROOT]\\Common7\\IDE\\VSIXInstaller.exe\t", |
| 38 | "CustomAction:Vwd2015VsixWhenVSAbsent\t51\tVS_VSIX_INSTALLER_PATH\t[VWD2015_VSIX_INSTALL_ROOT]\\Common7\\IDE\\VSIXInstaller.exe\t", | 38 | "CustomAction:Vwd2015VsixWhenVSAbsent\t51\tVS_VSIX_INSTALLER_PATH\t[VWD2015_VSIX_INSTALL_ROOT]\\Common7\\IDE\\VSIXInstaller.exe\t", |
| 39 | "CustomAction:Wix4VSFindInstances_X86\t257\tVSCA_X86\tFindInstances\t", | 39 | "CustomAction:Wix4VSFindInstances_X86\t257\tWix4VSCA_X86\tFindInstances\t", |
| 40 | }, results); | 40 | }, results); |
| 41 | } | 41 | } |
| 42 | 42 | ||
| @@ -64,7 +64,7 @@ namespace WixToolsetTest.VisualStudio | |||
| 64 | "CustomAction:Vwd2012VsixWhenVSAbsent\t51\tVS_VSIX_INSTALLER_PATH\t[VWD2012_VSIX_INSTALL_ROOT]\\Common7\\IDE\\VSIXInstaller.exe\t", | 64 | "CustomAction:Vwd2012VsixWhenVSAbsent\t51\tVS_VSIX_INSTALLER_PATH\t[VWD2012_VSIX_INSTALL_ROOT]\\Common7\\IDE\\VSIXInstaller.exe\t", |
| 65 | "CustomAction:Vwd2013VsixWhenVSAbsent\t51\tVS_VSIX_INSTALLER_PATH\t[VWD2013_VSIX_INSTALL_ROOT]\\Common7\\IDE\\VSIXInstaller.exe\t", | 65 | "CustomAction:Vwd2013VsixWhenVSAbsent\t51\tVS_VSIX_INSTALLER_PATH\t[VWD2013_VSIX_INSTALL_ROOT]\\Common7\\IDE\\VSIXInstaller.exe\t", |
| 66 | "CustomAction:Vwd2015VsixWhenVSAbsent\t51\tVS_VSIX_INSTALLER_PATH\t[VWD2015_VSIX_INSTALL_ROOT]\\Common7\\IDE\\VSIXInstaller.exe\t", | 66 | "CustomAction:Vwd2015VsixWhenVSAbsent\t51\tVS_VSIX_INSTALLER_PATH\t[VWD2015_VSIX_INSTALL_ROOT]\\Common7\\IDE\\VSIXInstaller.exe\t", |
| 67 | "CustomAction:Wix4VSFindInstances_A64\t257\tVSCA_A64\tFindInstances\t", | 67 | "CustomAction:Wix4VSFindInstances_A64\t257\tWix4VSCA_A64\tFindInstances\t", |
| 68 | }, customActionResults); | 68 | }, customActionResults); |
| 69 | 69 | ||
| 70 | var propertyResults = results.Single(r => r.StartsWith("Property:SecureCustomProperties")).Split('\t')[1].Split(';'); | 70 | var propertyResults = results.Single(r => r.StartsWith("Property:SecureCustomProperties")).Split('\t')[1].Split(';'); |
| @@ -77,9 +77,18 @@ namespace WixToolsetTest.VisualStudio | |||
| 77 | "VS2015_VSIX_INSTALLER_PATH", | 77 | "VS2015_VSIX_INSTALLER_PATH", |
| 78 | "VS2017_IDE_DIR", | 78 | "VS2017_IDE_DIR", |
| 79 | "VS2017_ROOT_FOLDER", | 79 | "VS2017_ROOT_FOLDER", |
| 80 | "VS2017_VSIX_INSTALLER_PATH", | ||
| 80 | "VS2017DEVENV", | 81 | "VS2017DEVENV", |
| 82 | "VS2019_IDE_DIR", | ||
| 81 | "VS2019_IDE_VCSHARP_PROJECTSYSTEM_INSTALLED", | 83 | "VS2019_IDE_VCSHARP_PROJECTSYSTEM_INSTALLED", |
| 84 | "VS2019_ROOT_FOLDER", | ||
| 85 | "VS2019_VSIX_INSTALLER_PATH", | ||
| 86 | "VS2022_IDE_DIR", | ||
| 82 | "VS2022_ROOT_FOLDER", | 87 | "VS2022_ROOT_FOLDER", |
| 88 | "VS2022_VSIX_INSTALLER_PATH", | ||
| 89 | "VS2026_IDE_DIR", | ||
| 90 | "VS2026_ROOT_FOLDER", | ||
| 91 | "VS2026_VSIX_INSTALLER_PATH", | ||
| 83 | "WIX_DOWNGRADE_DETECTED", | 92 | "WIX_DOWNGRADE_DETECTED", |
| 84 | "WIX_UPGRADE_DETECTED", | 93 | "WIX_UPGRADE_DETECTED", |
| 85 | }, propertyResults); | 94 | }, propertyResults); |
diff --git a/src/ext/VisualStudio/test/WixToolsetTest.VisualStudio/WixToolsetTest.VisualStudio.csproj b/src/ext/VisualStudio/test/WixToolsetTest.VisualStudio/WixToolsetTest.VisualStudio.csproj index 8b8f6ad9..148b963b 100644 --- a/src/ext/VisualStudio/test/WixToolsetTest.VisualStudio/WixToolsetTest.VisualStudio.csproj +++ b/src/ext/VisualStudio/test/WixToolsetTest.VisualStudio/WixToolsetTest.VisualStudio.csproj | |||
| @@ -3,7 +3,7 @@ | |||
| 3 | 3 | ||
| 4 | <Project Sdk="MSTest.Sdk"> | 4 | <Project Sdk="MSTest.Sdk"> |
| 5 | <PropertyGroup> | 5 | <PropertyGroup> |
| 6 | <TargetFramework>net8.0</TargetFramework> | 6 | <TargetFramework>net10.0</TargetFramework> |
| 7 | <IsWixMSTestProject>true</IsWixMSTestProject> | 7 | <IsWixMSTestProject>true</IsWixMSTestProject> |
| 8 | </PropertyGroup> | 8 | </PropertyGroup> |
| 9 | 9 | ||
diff --git a/src/ext/VisualStudio/wixlib/VS2026.wxs b/src/ext/VisualStudio/wixlib/VS2026.wxs new file mode 100644 index 00000000..2cc78845 --- /dev/null +++ b/src/ext/VisualStudio/wixlib/VS2026.wxs | |||
| @@ -0,0 +1,134 @@ | |||
| 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="VS2026_ROOT_FOLDER" Secure="yes" /> | ||
| 9 | </Fragment> | ||
| 10 | |||
| 11 | <Fragment> | ||
| 12 | <PropertyRef Id="VS2026_ROOT_FOLDER" /> | ||
| 13 | <Property Id="VS2026_IDE_DIR" Secure="yes"> | ||
| 14 | <DirectorySearch Id="VS2026DirectorySearch" Path="[VS2026_ROOT_FOLDER]"> | ||
| 15 | <DirectorySearch Id="VS2026EnvironmentDirectorySearch" Path="Common7\IDE" Depth="1" /> | ||
| 16 | </DirectorySearch> | ||
| 17 | </Property> | ||
| 18 | </Fragment> | ||
| 19 | |||
| 20 | <Fragment> | ||
| 21 | <Property Id="VS2026_EXTENSIONS_DIR" Secure="yes"> | ||
| 22 | <DirectorySearchRef Id="VS2026EnvironmentDirectorySearch" Parent="VS2026DirectorySearch" Path="Common7\IDE"> | ||
| 23 | <DirectorySearch Id="VS2026ExtensionsDirectorySearch" Path="Extensions" Depth="1" /> | ||
| 24 | </DirectorySearchRef> | ||
| 25 | </Property> | ||
| 26 | </Fragment> | ||
| 27 | |||
| 28 | <Fragment> | ||
| 29 | <Property Id="VS2026_PROJECTTEMPLATES_DIR" Secure="yes"> | ||
| 30 | <DirectorySearchRef Id="VS2026EnvironmentDirectorySearch" Parent="VS2026DirectorySearch" Path="Common7\IDE"> | ||
| 31 | <DirectorySearch Id="VS2026ProjectTemplatesDirectorySearch" Path="ProjectTemplates" Depth="1" /> | ||
| 32 | </DirectorySearchRef> | ||
| 33 | </Property> | ||
| 34 | </Fragment> | ||
| 35 | |||
| 36 | <Fragment> | ||
| 37 | <PropertyRef Id="VS2026_ROOT_FOLDER" /> | ||
| 38 | <Property Id="VS2026_SCHEMAS_DIR" Secure="yes"> | ||
| 39 | <DirectorySearch Id="VS2026XmlDirectorySearch" Path="[VS2026_ROOT_FOLDER]\Xml" Depth="1"> | ||
| 40 | <DirectorySearch Id="VS2026XmlSchemasDirectorySearch" Path="Schemas" Depth="1" /> | ||
| 41 | </DirectorySearch> | ||
| 42 | </Property> | ||
| 43 | </Fragment> | ||
| 44 | |||
| 45 | <Fragment> | ||
| 46 | <Property Id="VS2026_ITEMTEMPLATES_DIR" Secure="yes"> | ||
| 47 | <DirectorySearchRef Id="VS2026EnvironmentDirectorySearch" Parent="VS2026DirectorySearch" Path="Common7\IDE"> | ||
| 48 | <DirectorySearch Id="VS2026ItemTemplatesDirectorySearch" Path="ItemTemplates" Depth="1" /> | ||
| 49 | </DirectorySearchRef> | ||
| 50 | </Property> | ||
| 51 | </Fragment> | ||
| 52 | |||
| 53 | <Fragment> | ||
| 54 | <PropertyRef Id="VS2026_ROOT_FOLDER" /> | ||
| 55 | <Property Id="VS2026_BOOTSTRAPPER_PACKAGE_FOLDER" Secure="yes"> | ||
| 56 | <DirectorySearch Id="VS2026SDKDirectorySearch" Path="[VS2026_ROOT_FOLDER]\SDK" Depth="1"> | ||
| 57 | <DirectorySearch Id="SearchForVS2026BootstrapperPackageDirectory" Path="Bootstrapper" Depth="1" /> | ||
| 58 | </DirectorySearch> | ||
| 59 | </Property> | ||
| 60 | </Fragment> | ||
| 61 | |||
| 62 | <Fragment> | ||
| 63 | <Property Id="VS2026DEVENV" Secure="yes"> | ||
| 64 | <DirectorySearchRef Id="VS2026EnvironmentDirectorySearch" Parent="VS2026DirectorySearch" Path="Common7\IDE"> | ||
| 65 | <FileSearch Id="VS2026DevEnvSearch" Name="devenv.exe" /> | ||
| 66 | </DirectorySearchRef> | ||
| 67 | </Property> | ||
| 68 | </Fragment> | ||
| 69 | |||
| 70 | <Fragment> | ||
| 71 | <CustomAction Id="VS2026Setup" Property="VS2026DEVENV" ExeCommand="/setup" Execute="deferred" Return="ignore" Impersonate="no" /> | ||
| 72 | <PropertyRef Id="VS2026DEVENV" /> | ||
| 73 | |||
| 74 | <InstallExecuteSequence> | ||
| 75 | <Custom Action="VS2026Setup" Before="InstallFinalize" Overridable="yes" Condition="VS2026DEVENV" /> | ||
| 76 | </InstallExecuteSequence> | ||
| 77 | </Fragment> | ||
| 78 | |||
| 79 | <Fragment> | ||
| 80 | <CustomAction Id="VS2026InstallVSTemplates" Property="VS2026DEVENV" ExeCommand="/InstallVSTemplates" Execute="deferred" Return="ignore" Impersonate="no" /> | ||
| 81 | <PropertyRef Id="VS2026DEVENV" /> | ||
| 82 | |||
| 83 | <InstallExecuteSequence> | ||
| 84 | <Custom Action="VS2026InstallVSTemplates" Before="InstallFinalize" Overridable="yes" Condition="VS2026DEVENV" /> | ||
| 85 | </InstallExecuteSequence> | ||
| 86 | </Fragment> | ||
| 87 | |||
| 88 | <!-- Indicates whether the Visual C# project system is installed as a part of --> | ||
| 89 | <!-- Visual Studio 2026 standard or higher. If this property is set, that --> | ||
| 90 | <!-- means Visual Studio 2026 standard or higher is installed and the Visual --> | ||
| 91 | <!-- C# language tools were installed as a part of VS 2026 setup. --> | ||
| 92 | <Fragment> | ||
| 93 | <Property Id="VS2026_IDE_VCSHARP_PROJECTSYSTEM_INSTALLED" Secure="yes" /> | ||
| 94 | </Fragment> | ||
| 95 | |||
| 96 | <!-- Indicates whether the Visual Basic project system is installed as a part of --> | ||
| 97 | <!-- Visual Studio 2026 standard or higher. If this property is set, that --> | ||
| 98 | <!-- means Visual Studio 2026 standard or higher is installed and the Visual --> | ||
| 99 | <!-- Basic language tools were installed as a part of VS 2026 setup. --> | ||
| 100 | <Fragment> | ||
| 101 | <Property Id="VS2026_IDE_VB_PROJECTSYSTEM_INSTALLED" Secure="yes" /> | ||
| 102 | </Fragment> | ||
| 103 | |||
| 104 | <!-- Indicates whether the Visual Web Developer project system is installed as a part of --> | ||
| 105 | <!-- Visual Studio 2026 standard or higher. If this property is set, that --> | ||
| 106 | <!-- means Visual Studio 2026 standard or higher is installed and the Visual --> | ||
| 107 | <!-- Web Developer language tools were installed as a part of VS 2026 setup. --> | ||
| 108 | <Fragment> | ||
| 109 | <Property Id="VS2026_IDE_VWD_PROJECTSYSTEM_INSTALLED" Secure="yes" /> | ||
| 110 | </Fragment> | ||
| 111 | |||
| 112 | <!-- Indicates whether the Visual C++ project system is installed as a part of --> | ||
| 113 | <!-- Visual Studio 2026 standard or higher. If this property is set, that --> | ||
| 114 | <!-- means Visual Studio 2026 standard or higher is installed and the Visual --> | ||
| 115 | <!-- C++ language tools were installed as a part of VS 2026 setup. --> | ||
| 116 | <Fragment> | ||
| 117 | <Property Id="VS2026_IDE_VC_PROJECTSYSTEM_INSTALLED" Secure="yes" /> | ||
| 118 | </Fragment> | ||
| 119 | |||
| 120 | <!-- Indicates whether the Visual Studio 2026 Team Test project system is installed --> | ||
| 121 | <Fragment> | ||
| 122 | <Property Id="VS2026_IDE_VSTS_TESTSYSTEM_INSTALLED" Secure="yes" /> | ||
| 123 | </Fragment> | ||
| 124 | |||
| 125 | <!-- Indicates whether the Visual Studio 2026 Modeling project system is installed --> | ||
| 126 | <Fragment> | ||
| 127 | <Property Id="VS2026_IDE_MODELING_PROJECTSYSTEM_INSTALLED" Secure="yes" /> | ||
| 128 | </Fragment> | ||
| 129 | |||
| 130 | <!-- Indicates whether the Visual Studio 2026 F# project system is installed --> | ||
| 131 | <Fragment> | ||
| 132 | <Property Id="VS2026_IDE_FSHARP_PROJECTSYSTEM_INSTALLED" Secure="yes" /> | ||
| 133 | </Fragment> | ||
| 134 | </Wix> | ||
diff --git a/src/ext/VisualStudio/wixlib/VSExtension_Platform.wxi b/src/ext/VisualStudio/wixlib/VSExtension_Platform.wxi index 71c3a6c5..3242ba37 100644 --- a/src/ext/VisualStudio/wixlib/VSExtension_Platform.wxi +++ b/src/ext/VisualStudio/wixlib/VSExtension_Platform.wxi | |||
| @@ -1,10 +1,10 @@ | |||
| 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 ..\..\caDecor.wxi ?> | 4 | <?include ..\..\caDecor.wxi ?> |
| 5 | 5 | ||
| 6 | <Fragment> | 6 | <Fragment> |
| 7 | <CustomAction Id="$(var.Prefix)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="$(var.Prefix)VSCA$(var.Suffix)" /> |
| 8 | <InstallExecuteSequence> | 8 | <InstallExecuteSequence> |
| 9 | <Custom Action="virtual $(var.Prefix)VSFindInstances$(var.Suffix)" Before="AppSearch" /> | 9 | <Custom Action="virtual $(var.Prefix)VSFindInstances$(var.Suffix)" Before="AppSearch" /> |
| 10 | </InstallExecuteSequence> | 10 | </InstallExecuteSequence> |
| @@ -14,6 +14,6 @@ | |||
| 14 | </Fragment> | 14 | </Fragment> |
| 15 | 15 | ||
| 16 | <Fragment> | 16 | <Fragment> |
| 17 | <Binary Id="VSCA$(var.Suffix)" SourceFile="vsca.dll" /> | 17 | <Binary Id="$(var.Prefix)VSCA$(var.Suffix)" SourceFile="!(bindpath.vsca.$(var.platform))vsca.dll" /> |
| 18 | </Fragment> | 18 | </Fragment> |
| 19 | </Include> | 19 | </Include> |
diff --git a/src/ext/VisualStudio/wixlib/VsixPackage.wxs b/src/ext/VisualStudio/wixlib/VsixPackage.wxs index 5937177b..098f81fc 100644 --- a/src/ext/VisualStudio/wixlib/VsixPackage.wxs +++ b/src/ext/VisualStudio/wixlib/VsixPackage.wxs | |||
| @@ -1,4 +1,4 @@ | |||
| 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 | 3 | ||
| 4 | <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> | 4 | <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> |
| @@ -28,6 +28,30 @@ | |||
| 28 | </RegistrySearch> | 28 | </RegistrySearch> |
| 29 | </Property> | 29 | </Property> |
| 30 | 30 | ||
| 31 | <Property Id="VS2017_VSIX_INSTALLER_PATH" Secure="yes"> | ||
| 32 | <DirectorySearchRef Id="VS2017EnvironmentDirectorySearch" Parent="VS2017DirectorySearch" Path="Common7\IDE"> | ||
| 33 | <FileSearch Id="WixVS2017VsixInstaller" Name="VSIXInstaller.exe" /> | ||
| 34 | </DirectorySearchRef> | ||
| 35 | </Property> | ||
| 36 | |||
| 37 | <Property Id="VS2019_VSIX_INSTALLER_PATH" Secure="yes"> | ||
| 38 | <DirectorySearchRef Id="VS2019EnvironmentDirectorySearch" Parent="VS2019DirectorySearch" Path="Common7\IDE"> | ||
| 39 | <FileSearch Id="WixVS2019VsixInstaller" Name="VSIXInstaller.exe" /> | ||
| 40 | </DirectorySearchRef> | ||
| 41 | </Property> | ||
| 42 | |||
| 43 | <Property Id="VS2022_VSIX_INSTALLER_PATH" Secure="yes"> | ||
| 44 | <DirectorySearchRef Id="VS2022EnvironmentDirectorySearch" Parent="VS2022DirectorySearch" Path="Common7\IDE"> | ||
| 45 | <FileSearch Id="WixVS2022VsixInstaller" Name="VSIXInstaller.exe" /> | ||
| 46 | </DirectorySearchRef> | ||
| 47 | </Property> | ||
| 48 | |||
| 49 | <Property Id="VS2026_VSIX_INSTALLER_PATH" Secure="yes"> | ||
| 50 | <DirectorySearchRef Id="VS2026EnvironmentDirectorySearch" Parent="VS2026DirectorySearch" Path="Common7\IDE"> | ||
| 51 | <FileSearch Id="WixVS2026VsixInstaller" Name="VSIXInstaller.exe" /> | ||
| 52 | </DirectorySearchRef> | ||
| 53 | </Property> | ||
| 54 | |||
| 31 | <Property Id="VS_VSIX_INSTALLER_PATH" Secure="yes" /> | 55 | <Property Id="VS_VSIX_INSTALLER_PATH" Secure="yes" /> |
| 32 | 56 | ||
| 33 | <!-- VWD2012 registers differently than the rest of Visual Studio, so search for it in the case VS2012 is missing. --> | 57 | <!-- VWD2012 registers differently than the rest of Visual Studio, so search for it in the case VS2012 is missing. --> |
diff --git a/src/ext/VisualStudio/wixlib/vs.wixproj b/src/ext/VisualStudio/wixlib/vs.wixproj index e416c67a..f714609c 100644 --- a/src/ext/VisualStudio/wixlib/vs.wixproj +++ b/src/ext/VisualStudio/wixlib/vs.wixproj | |||
| @@ -9,9 +9,7 @@ | |||
| 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" Platforms="arm64,x86,x64" /> |
| 13 | <ProjectReference Include="..\ca\vsca.vcxproj" Properties="Platform=x64" ReferenceOutputAssembly="false" /> | ||
| 14 | <ProjectReference Include="..\ca\vsca.vcxproj" Properties="Platform=ARM64" ReferenceOutputAssembly="false" /> | ||
| 15 | </ItemGroup> | 13 | </ItemGroup> |
| 16 | 14 | ||
| 17 | <ItemGroup> | 15 | <ItemGroup> |
