From 0618f4e7f9d92bc27d0d20d532eeb677faa6b582 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20=C4=8C=C3=AD=C5=BEek?= Date: Mon, 22 Jun 2026 16:10:08 +0200 Subject: [PATCH 1/5] vsca.cpp updated to search for VS2026. Updated tests. Added VS2026 wixlib fragment. --- src/ext/VisualStudio/ca/vsca.cpp | 81 +++++++++++ .../TestData/UsingVsixPackage/Package.wxs | 3 +- .../VisualStudioExtensionFixture.cs | 1 + src/ext/VisualStudio/wixlib/VS2026.wxs | 134 ++++++++++++++++++ 4 files changed, 218 insertions(+), 1 deletion(-) create mode 100644 src/ext/VisualStudio/wixlib/VS2026.wxs diff --git a/src/ext/VisualStudio/ca/vsca.cpp b/src/ext/VisualStudio/ca/vsca.cpp index 681187d67..8524629bb 100644 --- a/src/ext/VisualStudio/ca/vsca.cpp +++ b/src/ext/VisualStudio/ca/vsca.cpp @@ -59,6 +59,12 @@ static HRESULT ProcessVS2022( __in BOOL fComplete ); +static HRESULT ProcessVS2026( + __in_opt ISetupInstance* pInstance, + __in DWORD64 qwVersion, + __in BOOL fComplete +); + static HRESULT SetPropertyForComponent( __in DWORD cComponents, __in VS_COMPONENT_PROPERTY* rgComponents, @@ -70,6 +76,7 @@ static VS_INSTANCE vrgInstances[] = { FILEMAKEVERSION(15, 0, 0, 0), FILEMAKEVERSION(15, 0xffff, 0xffff, 0xffff), ProcessVS2017 }, { FILEMAKEVERSION(16, 0, 0, 0), FILEMAKEVERSION(16, 0xffff, 0xffff, 0xffff), ProcessVS2019 }, { FILEMAKEVERSION(17, 0, 0, 0), FILEMAKEVERSION(17, 0xffff, 0xffff, 0xffff), ProcessVS2022 }, + { FILEMAKEVERSION(18, 0, 0, 0), FILEMAKEVERSION(18, 0xffff, 0xffff, 0xffff), ProcessVS2026 }, }; /****************************************************************** @@ -566,6 +573,80 @@ static HRESULT ProcessVS2022( return hr; } +static HRESULT ProcessVS2026( + __in_opt ISetupInstance* pInstance, + __in DWORD64 qwVersion, + __in BOOL fComplete +) +{ + static ISetupInstance* pLatest = NULL; + static DWORD64 qwLatest = 0; + + static LPCWSTR rgwzProducts[] = + { + L"Microsoft.VisualStudio.Product.Community", + L"Microsoft.VisualStudio.Product.Professional", + L"Microsoft.VisualStudio.Product.Enterprise", + }; + + // TODO: Consider making table-driven with these defaults per-version for easy customization. + static VS_COMPONENT_PROPERTY rgComponents[] = + { + { L"Microsoft.VisualStudio.Component.FSharp", L"VS2026_IDE_FSHARP_PROJECTSYSTEM_INSTALLED" }, + { L"Microsoft.VisualStudio.Component.Roslyn.LanguageServices", L"VS2026_IDE_VB_PROJECTSYSTEM_INSTALLED" }, + { L"Microsoft.VisualStudio.Component.Roslyn.LanguageServices", L"VS2026_IDE_VCSHARP_PROJECTSYSTEM_INSTALLED" }, + { L"Microsoft.VisualStudio.PackageGroup.TestTools.Core", L"VS2026_IDE_VSTS_TESTSYSTEM_INSTALLED" }, + { L"Microsoft.VisualStudio.Component.VC.CoreIde", L"VS2026_IDE_VC_PROJECTSYSTEM_INSTALLED" }, + { L"Microsoft.VisualStudio.Component.Web", L"VS2026_IDE_VWD_PROJECTSYSTEM_INSTALLED" }, + { L"Microsoft.VisualStudio.PackageGroup.DslRuntime", L"VS2026_IDE_MODELING_PROJECTSYSTEM_INSTALLED" }, + }; + + HRESULT hr = S_OK; + + if (fComplete) + { + if (pLatest) + { + hr = ProcessInstance(pLatest, L"VS2026_ROOT_FOLDER", countof(rgComponents), rgComponents); + ExitOnFailure(hr, "Failed to process VS2026 instance."); + } + } + else if (pInstance) + { + hr = InstanceInProducts(pInstance, countof(rgwzProducts), rgwzProducts); + ExitOnFailure(hr, "Failed to compare product IDs."); + + if (S_FALSE == hr) + { + ExitFunction(); + } + + hr = InstanceIsGreater(pLatest, qwLatest, pInstance, qwVersion); + ExitOnFailure(hr, "Failed to compare instances."); + + if (S_FALSE == hr) + { + ExitFunction(); + } + + ReleaseNullObject(pLatest); + + pLatest = pInstance; + qwLatest = qwVersion; + + // Caller will do a final Release() otherwise. + pLatest->AddRef(); + } + +LExit: + if (fComplete) + { + ReleaseObject(pLatest); + } + + return hr; +} + static HRESULT SetPropertyForComponent( __in DWORD cComponents, __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 d56674e31..ff7cb2fbb 100644 --- a/src/ext/VisualStudio/test/WixToolsetTest.VisualStudio/TestData/UsingVsixPackage/Package.wxs +++ b/src/ext/VisualStudio/test/WixToolsetTest.VisualStudio/TestData/UsingVsixPackage/Package.wxs @@ -6,8 +6,9 @@ + - + diff --git a/src/ext/VisualStudio/test/WixToolsetTest.VisualStudio/VisualStudioExtensionFixture.cs b/src/ext/VisualStudio/test/WixToolsetTest.VisualStudio/VisualStudioExtensionFixture.cs index 361f52743..199eb472d 100644 --- a/src/ext/VisualStudio/test/WixToolsetTest.VisualStudio/VisualStudioExtensionFixture.cs +++ b/src/ext/VisualStudio/test/WixToolsetTest.VisualStudio/VisualStudioExtensionFixture.cs @@ -80,6 +80,7 @@ public void CanBuildUsingVsixPackageOnArm64() "VS2017DEVENV", "VS2019_IDE_VCSHARP_PROJECTSYSTEM_INSTALLED", "VS2022_ROOT_FOLDER", + "VS2026_ROOT_FOLDER", "WIX_DOWNGRADE_DETECTED", "WIX_UPGRADE_DETECTED", }, propertyResults); diff --git a/src/ext/VisualStudio/wixlib/VS2026.wxs b/src/ext/VisualStudio/wixlib/VS2026.wxs new file mode 100644 index 000000000..2cc78845a --- /dev/null +++ b/src/ext/VisualStudio/wixlib/VS2026.wxs @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 56827145399a862fa13980ce45313888bc106964 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20=C4=8C=C3=AD=C5=BEek?= Date: Mon, 22 Jun 2026 16:55:40 +0200 Subject: [PATCH 2/5] Fix for missing CA DLLs for all architectures. There were missing CA DLLs for arm64 and x64 architectures in the WiX library. --- .../VisualStudioExtensionFixture.cs | 4 ++-- src/ext/VisualStudio/wixlib/VSExtension_Platform.wxi | 6 +++--- src/ext/VisualStudio/wixlib/vs.wixproj | 4 +--- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/src/ext/VisualStudio/test/WixToolsetTest.VisualStudio/VisualStudioExtensionFixture.cs b/src/ext/VisualStudio/test/WixToolsetTest.VisualStudio/VisualStudioExtensionFixture.cs index 199eb472d..ab55427aa 100644 --- a/src/ext/VisualStudio/test/WixToolsetTest.VisualStudio/VisualStudioExtensionFixture.cs +++ b/src/ext/VisualStudio/test/WixToolsetTest.VisualStudio/VisualStudioExtensionFixture.cs @@ -36,7 +36,7 @@ public void CanBuildUsingVsixPackage() "CustomAction:Vwd2012VsixWhenVSAbsent\t51\tVS_VSIX_INSTALLER_PATH\t[VWD2012_VSIX_INSTALL_ROOT]\\Common7\\IDE\\VSIXInstaller.exe\t", "CustomAction:Vwd2013VsixWhenVSAbsent\t51\tVS_VSIX_INSTALLER_PATH\t[VWD2013_VSIX_INSTALL_ROOT]\\Common7\\IDE\\VSIXInstaller.exe\t", "CustomAction:Vwd2015VsixWhenVSAbsent\t51\tVS_VSIX_INSTALLER_PATH\t[VWD2015_VSIX_INSTALL_ROOT]\\Common7\\IDE\\VSIXInstaller.exe\t", - "CustomAction:Wix4VSFindInstances_X86\t257\tVSCA_X86\tFindInstances\t", + "CustomAction:Wix4VSFindInstances_X86\t257\tWix4VSCA_X86\tFindInstances\t", }, results); } @@ -64,7 +64,7 @@ public void CanBuildUsingVsixPackageOnArm64() "CustomAction:Vwd2012VsixWhenVSAbsent\t51\tVS_VSIX_INSTALLER_PATH\t[VWD2012_VSIX_INSTALL_ROOT]\\Common7\\IDE\\VSIXInstaller.exe\t", "CustomAction:Vwd2013VsixWhenVSAbsent\t51\tVS_VSIX_INSTALLER_PATH\t[VWD2013_VSIX_INSTALL_ROOT]\\Common7\\IDE\\VSIXInstaller.exe\t", "CustomAction:Vwd2015VsixWhenVSAbsent\t51\tVS_VSIX_INSTALLER_PATH\t[VWD2015_VSIX_INSTALL_ROOT]\\Common7\\IDE\\VSIXInstaller.exe\t", - "CustomAction:Wix4VSFindInstances_A64\t257\tVSCA_A64\tFindInstances\t", + "CustomAction:Wix4VSFindInstances_A64\t257\tWix4VSCA_A64\tFindInstances\t", }, customActionResults); var propertyResults = results.Single(r => r.StartsWith("Property:SecureCustomProperties")).Split('\t')[1].Split(';'); diff --git a/src/ext/VisualStudio/wixlib/VSExtension_Platform.wxi b/src/ext/VisualStudio/wixlib/VSExtension_Platform.wxi index 71c3a6c5e..3242ba37f 100644 --- a/src/ext/VisualStudio/wixlib/VSExtension_Platform.wxi +++ b/src/ext/VisualStudio/wixlib/VSExtension_Platform.wxi @@ -1,10 +1,10 @@ - + - + @@ -14,6 +14,6 @@ - + diff --git a/src/ext/VisualStudio/wixlib/vs.wixproj b/src/ext/VisualStudio/wixlib/vs.wixproj index e416c67aa..f714609ca 100644 --- a/src/ext/VisualStudio/wixlib/vs.wixproj +++ b/src/ext/VisualStudio/wixlib/vs.wixproj @@ -9,9 +9,7 @@ - - - + From 26ddda1655cdc49bda9c16e1600ab6c186dcbeb7 Mon Sep 17 00:00:00 2001 From: Bob Arnson Date: Sun, 21 Jun 2026 20:47:39 -0400 Subject: [PATCH 3/5] Minor improvements to Burn, tests, and doc. --- src/burn/engine/core.cpp | 2 +- src/test/wix/WixE2E/WixE2EFixture.cs | 43 ++++++++++--------- .../test/WixToolsetTest.Sdk/MsbuildFixture.cs | 24 +++++------ .../TestExe/TestExe.csproj | 3 +- src/xsd/wix/Upgrade.xsd | 4 +- 5 files changed, 39 insertions(+), 37 deletions(-) diff --git a/src/burn/engine/core.cpp b/src/burn/engine/core.cpp index 926c327b3..956ef041e 100644 --- a/src/burn/engine/core.cpp +++ b/src/burn/engine/core.cpp @@ -383,7 +383,7 @@ extern "C" HRESULT CoreDetect( pEngineState->registration.fEligibleForCleanup = FALSE; } - LogId(REPORT_STANDARD, MSG_DETECTED_PACKAGE, pPackage->sczId, LoggingPackageStateToString(pPackage->currentState), LoggingBoolToString(pPackage->fCached), LoggingPackageRegistrationStateToString(pPackage->fCanAffectRegistration, pPackage->installRegistrationState), LoggingPackageRegistrationStateToString(pPackage->fCanAffectRegistration, pPackage->cacheRegistrationState), LoggingPackageScopeToString(pPackage->scope), LoggingInstallScopeToString(pPackage->fDetectedPerMachine)); + LogId(REPORT_STANDARD, MSG_DETECTED_PACKAGE, pPackage->sczId, LoggingPackageStateToString(pPackage->currentState), BURN_PACKAGE_TYPE_MSI == pPackage->type ? LoggingBoolToString(pPackage->fCached) : "(not configurable scope)", LoggingPackageRegistrationStateToString(pPackage->fCanAffectRegistration, pPackage->installRegistrationState), LoggingPackageRegistrationStateToString(pPackage->fCanAffectRegistration, pPackage->cacheRegistrationState), LoggingPackageScopeToString(pPackage->scope), LoggingInstallScopeToString(pPackage->fDetectedPerMachine)); if (BURN_PACKAGE_TYPE_MSI == pPackage->type) { diff --git a/src/test/wix/WixE2E/WixE2EFixture.cs b/src/test/wix/WixE2E/WixE2EFixture.cs index abea0ec72..8f9938087 100644 --- a/src/test/wix/WixE2E/WixE2EFixture.cs +++ b/src/test/wix/WixE2E/WixE2EFixture.cs @@ -136,35 +136,36 @@ public void CanIncrementalBuildPackageWithNativeWindowsAppWithEdits() Assert.AreNotEqual(firstHashes, secondHashes); } - //[TestMethod] + [Ignore] + [TestMethod] //[Fact(Skip = "Investigate if .NET Core WebApplications can be incrementally built")] - //public void CanIncrementalBuildPackageWithNetCoreWebAppWithoutEdits() - //{ - // var projectDirectory = TestData.Get("TestData", "WixprojPackageCsprojWebApplicationNetCore"); - // var projectPath = Path.Combine(projectDirectory, "WixprojPackageCsprojWebApplicationNetCore.wixproj"); - // var projectBinPath = Path.Combine(projectDirectory, "bin"); + public void CanIncrementalBuildPackageWithNetCoreWebAppWithoutEdits() + { + var projectDirectory = TestData.Get("TestData", "WixprojPackageCsprojWebApplicationNetCore"); + var projectPath = Path.Combine(projectDirectory, "WixprojPackageCsprojWebApplicationNetCore.wixproj"); + var projectBinPath = Path.Combine(projectDirectory, "bin"); - // CleanEverything(); + CleanEverything(); - // var result = RestoreAndBuild(projectPath); - // result.AssertSuccess(); + var result = RestoreAndBuild(projectPath); + result.AssertSuccess(); - // var firstBuiltFiles = Directory.GetFiles(projectBinPath, "*.*", SearchOption.AllDirectories).ToArray(); - // var firstHashes = firstBuiltFiles.Select(s => $"{s.Substring(projectBinPath.Length).TrimStart('\\')} with hash: {GetFileHash(s)}").ToArray(); + var firstBuiltFiles = Directory.GetFiles(projectBinPath, "*.*", SearchOption.AllDirectories).ToArray(); + var firstHashes = firstBuiltFiles.Select(s => $"{s.Substring(projectBinPath.Length).TrimStart('\\')} with hash: {GetFileHash(s)}").ToArray(); - // //var packageWxsPath = Path.Combine(projectDirectory, "Package.wxs"); - // //File.SetLastWriteTime(packageWxsPath, DateTime.Now); + //var packageWxsPath = Path.Combine(projectDirectory, "Package.wxs"); + //File.SetLastWriteTime(packageWxsPath, DateTime.Now); - // // This should be an incremental build that does work because a file was updated. - // // - // result = RestoreAndBuild(projectPath); - // result.AssertSuccess(); + // This should be an incremental build that does work because a file was updated. + // + result = RestoreAndBuild(projectPath); + result.AssertSuccess(); - // var secondBuiltFiles = Directory.GetFiles(projectBinPath, "*.*", SearchOption.AllDirectories).ToArray(); - // var secondHashes = secondBuiltFiles.Select(s => $"{s.Substring(projectBinPath.Length).TrimStart('\\')} with hash: {GetFileHash(s)}").ToArray(); + var secondBuiltFiles = Directory.GetFiles(projectBinPath, "*.*", SearchOption.AllDirectories).ToArray(); + var secondHashes = secondBuiltFiles.Select(s => $"{s.Substring(projectBinPath.Length).TrimStart('\\')} with hash: {GetFileHash(s)}").ToArray(); - // WixAssert.CompareLineByLine(firstHashes, secondHashes); - //} + WixAssert.CompareLineByLine(firstHashes, secondHashes); + } private static void CleanEverything() { diff --git a/src/wix/test/WixToolsetTest.Sdk/MsbuildFixture.cs b/src/wix/test/WixToolsetTest.Sdk/MsbuildFixture.cs index 7d2d8af5d..33dc6b1f4 100644 --- a/src/wix/test/WixToolsetTest.Sdk/MsbuildFixture.cs +++ b/src/wix/test/WixToolsetTest.Sdk/MsbuildFixture.cs @@ -828,10 +828,10 @@ public void CanBuildMultiTargetingWixlibUsingRids(BuildSystem buildSystem) WixAssert.CompareLineByLine(new[] { - @"net472_x64\e_sqlite3.dll - 1601536", - @"net472_x86\e_sqlite3.dll - 1207296", - @"net8_x64\e_sqlite3.dll - 1601536", - @"net8_x86\e_sqlite3.dll - 1207296", + @"net472_x64\e_sqlite3.dll - 1911296", + @"net472_x86\e_sqlite3.dll - 1503232", + @"net8_x64\e_sqlite3.dll - 1911296", + @"net8_x86\e_sqlite3.dll - 1503232", }, releaseFileSizes); } } @@ -898,14 +898,14 @@ public void CanBuildMultiTargetingWixlibUsingRidsWithReleaseAndDebug(BuildSystem WixAssert.CompareLineByLine(new[] { - @"debug_net472_x64\e_sqlite3.dll - 1601536", - @"debug_net472_x86\e_sqlite3.dll - 1207296", - @"debug_net8_x64\e_sqlite3.dll - 1601536", - @"debug_net8_x86\e_sqlite3.dll - 1207296", - @"release_net472_x64\e_sqlite3.dll - 1601536", - @"release_net472_x86\e_sqlite3.dll - 1207296", - @"release_net8_x64\e_sqlite3.dll - 1601536", - @"release_net8_x86\e_sqlite3.dll - 1207296", + @"debug_net472_x64\e_sqlite3.dll - 1911296", + @"debug_net472_x86\e_sqlite3.dll - 1503232", + @"debug_net8_x64\e_sqlite3.dll - 1911296", + @"debug_net8_x86\e_sqlite3.dll - 1503232", + @"release_net472_x64\e_sqlite3.dll - 1911296", + @"release_net472_x86\e_sqlite3.dll - 1503232", + @"release_net8_x64\e_sqlite3.dll - 1911296", + @"release_net8_x86\e_sqlite3.dll - 1503232", }, releaseFileSizes); } } diff --git a/src/wix/test/WixToolsetTest.Sdk/TestData/MultiTargetingWixlib/TestExe/TestExe.csproj b/src/wix/test/WixToolsetTest.Sdk/TestData/MultiTargetingWixlib/TestExe/TestExe.csproj index f11c87a8b..a231ee46a 100644 --- a/src/wix/test/WixToolsetTest.Sdk/TestData/MultiTargetingWixlib/TestExe/TestExe.csproj +++ b/src/wix/test/WixToolsetTest.Sdk/TestData/MultiTargetingWixlib/TestExe/TestExe.csproj @@ -8,6 +8,7 @@ - + + diff --git a/src/xsd/wix/Upgrade.xsd b/src/xsd/wix/Upgrade.xsd index fb9b58459..1b94589c7 100644 --- a/src/xsd/wix/Upgrade.xsd +++ b/src/xsd/wix/Upgrade.xsd @@ -14,7 +14,7 @@ Nesting a Property element under an Upgrade element has been deprecated. - Please nest Property elements in any of the other supported locations. + Use ProductSearch instead. @@ -25,4 +25,4 @@ - \ No newline at end of file + From d5d7b031102f681d41999ec6b0b74bf87ae267ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20=C4=8C=C3=AD=C5=BEek?= Date: Wed, 24 Jun 2026 09:02:34 +0200 Subject: [PATCH 4/5] =?UTF-8?q?Fix=20for=20the=20missing=20configuration?= =?UTF-8?q?=20of=20the=20VS=5FVSIX=5FINSTALLER=5FPATH=20property=20for=20V?= =?UTF-8?q?S2017=E2=80=93VS2026.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Modified VsixPackage fragment. Updated tests. --- .../VisualStudioExtensionFixture.cs | 16 +++++++++ src/ext/VisualStudio/wixlib/VsixPackage.wxs | 36 +++++++++++++++++-- 2 files changed, 50 insertions(+), 2 deletions(-) diff --git a/src/ext/VisualStudio/test/WixToolsetTest.VisualStudio/VisualStudioExtensionFixture.cs b/src/ext/VisualStudio/test/WixToolsetTest.VisualStudio/VisualStudioExtensionFixture.cs index ab55427aa..bc47d2d37 100644 --- a/src/ext/VisualStudio/test/WixToolsetTest.VisualStudio/VisualStudioExtensionFixture.cs +++ b/src/ext/VisualStudio/test/WixToolsetTest.VisualStudio/VisualStudioExtensionFixture.cs @@ -27,6 +27,10 @@ public void CanBuildUsingVsixPackage() "CustomAction:SetVS2012Vsix\t51\tVS_VSIX_INSTALLER_PATH\t[VS2012_VSIX_INSTALLER_PATH]\t", "CustomAction:SetVS2013Vsix\t51\tVS_VSIX_INSTALLER_PATH\t[VS2013_VSIX_INSTALLER_PATH]\t", "CustomAction:SetVS2015Vsix\t51\tVS_VSIX_INSTALLER_PATH\t[VS2015_VSIX_INSTALLER_PATH]\t", + "CustomAction:SetVS2017Vsix\t51\tVS_VSIX_INSTALLER_PATH\t[VS2017_VSIX_INSTALLER_PATH]\t", + "CustomAction:SetVS2019Vsix\t51\tVS_VSIX_INSTALLER_PATH\t[VS2019_VSIX_INSTALLER_PATH]\t", + "CustomAction:SetVS2022Vsix\t51\tVS_VSIX_INSTALLER_PATH\t[VS2022_VSIX_INSTALLER_PATH]\t", + "CustomAction:SetVS2026Vsix\t51\tVS_VSIX_INSTALLER_PATH\t[VS2026_VSIX_INSTALLER_PATH]\t", "CustomAction:vimLa9TyFoAVwf8JmA0_ZJHA69J2fo\t3122\tVS_VSIX_INSTALLER_PATH\t/q \"[#filzi8nwT8Ta133xcfp7qSIdGdRiC0]\" /admin\t", "CustomAction:viuMpl8IvFSDAzTulrmpAzBwAmCRTQ\t1074\tVS_VSIX_INSTALLER_PATH\t/q \"[#filzi8nwT8Ta133xcfp7qSIdGdRiC0]\"\t", "CustomAction:vrmLa9TyFoAVwf8JmA0_ZJHA69J2fo\t3442\tVS_VSIX_INSTALLER_PATH\t/q /u:\"ExampleVsix\" /admin\t", @@ -55,6 +59,10 @@ public void CanBuildUsingVsixPackageOnArm64() "CustomAction:SetVS2012Vsix\t51\tVS_VSIX_INSTALLER_PATH\t[VS2012_VSIX_INSTALLER_PATH]\t", "CustomAction:SetVS2013Vsix\t51\tVS_VSIX_INSTALLER_PATH\t[VS2013_VSIX_INSTALLER_PATH]\t", "CustomAction:SetVS2015Vsix\t51\tVS_VSIX_INSTALLER_PATH\t[VS2015_VSIX_INSTALLER_PATH]\t", + "CustomAction:SetVS2017Vsix\t51\tVS_VSIX_INSTALLER_PATH\t[VS2017_VSIX_INSTALLER_PATH]\t", + "CustomAction:SetVS2019Vsix\t51\tVS_VSIX_INSTALLER_PATH\t[VS2019_VSIX_INSTALLER_PATH]\t", + "CustomAction:SetVS2022Vsix\t51\tVS_VSIX_INSTALLER_PATH\t[VS2022_VSIX_INSTALLER_PATH]\t", + "CustomAction:SetVS2026Vsix\t51\tVS_VSIX_INSTALLER_PATH\t[VS2026_VSIX_INSTALLER_PATH]\t", "CustomAction:vimLa9TyFoAVwf8JmA0_ZJHA69J2fo\t3122\tVS_VSIX_INSTALLER_PATH\t/q \"[#filzi8nwT8Ta133xcfp7qSIdGdRiC0]\" /admin\t", "CustomAction:viuMpl8IvFSDAzTulrmpAzBwAmCRTQ\t1074\tVS_VSIX_INSTALLER_PATH\t/q \"[#filzi8nwT8Ta133xcfp7qSIdGdRiC0]\"\t", "CustomAction:vrmLa9TyFoAVwf8JmA0_ZJHA69J2fo\t3442\tVS_VSIX_INSTALLER_PATH\t/q /u:\"ExampleVsix\" /admin\t", @@ -77,10 +85,18 @@ public void CanBuildUsingVsixPackageOnArm64() "VS2015_VSIX_INSTALLER_PATH", "VS2017_IDE_DIR", "VS2017_ROOT_FOLDER", + "VS2017_VSIX_INSTALLER_PATH", "VS2017DEVENV", + "VS2019_IDE_DIR", "VS2019_IDE_VCSHARP_PROJECTSYSTEM_INSTALLED", + "VS2019_ROOT_FOLDER", + "VS2019_VSIX_INSTALLER_PATH", + "VS2022_IDE_DIR", "VS2022_ROOT_FOLDER", + "VS2022_VSIX_INSTALLER_PATH", + "VS2026_IDE_DIR", "VS2026_ROOT_FOLDER", + "VS2026_VSIX_INSTALLER_PATH", "WIX_DOWNGRADE_DETECTED", "WIX_UPGRADE_DETECTED", }, propertyResults); diff --git a/src/ext/VisualStudio/wixlib/VsixPackage.wxs b/src/ext/VisualStudio/wixlib/VsixPackage.wxs index 5937177b2..605e4ac54 100644 --- a/src/ext/VisualStudio/wixlib/VsixPackage.wxs +++ b/src/ext/VisualStudio/wixlib/VsixPackage.wxs @@ -1,4 +1,4 @@ - + @@ -28,6 +28,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + @@ -46,7 +70,15 @@ - + + + + + + + + + From 4f40f79f6845228ffca2dec455e147079d305058 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20=C4=8C=C3=AD=C5=BEek?= Date: Wed, 24 Jun 2026 10:55:33 +0200 Subject: [PATCH 5/5] Whitespace correction. --- .../TestData/UsingVsixPackage/Package.wxs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 ff7cb2fbb..d827dafb2 100644 --- a/src/ext/VisualStudio/test/WixToolsetTest.VisualStudio/TestData/UsingVsixPackage/Package.wxs +++ b/src/ext/VisualStudio/test/WixToolsetTest.VisualStudio/TestData/UsingVsixPackage/Package.wxs @@ -8,7 +8,7 @@ - +