diff options
| author | Bob Arnson <bob@firegiant.com> | 2021-12-22 23:52:40 -0500 |
|---|---|---|
| committer | Bob Arnson <github@bobs.org> | 2021-12-23 12:32:16 -0500 |
| commit | b9c712f26d921f7ffe0509d1cc45456680e8139f (patch) | |
| tree | 0cb80095c6c9ffe0c01ab9a723c25fd228a48649 /src/ext/VisualStudio/ca | |
| parent | 2f744bf58cc4edb5a712bfff8e7e42baba81768d (diff) | |
| download | wix-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.
Diffstat (limited to 'src/ext/VisualStudio/ca')
| -rw-r--r-- | src/ext/VisualStudio/ca/vsca.cpp | 81 | ||||
| -rw-r--r-- | src/ext/VisualStudio/ca/vsca.vcxproj | 8 |
2 files changed, 89 insertions, 0 deletions
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 | ||
| 56 | static HRESULT ProcessVS2022( | ||
| 57 | __in_opt ISetupInstance* pInstance, | ||
| 58 | __in DWORD64 qwVersion, | ||
| 59 | __in BOOL fComplete | ||
| 60 | ); | ||
| 61 | |||
| 56 | static HRESULT SetPropertyForComponent( | 62 | static 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 | ||
| 495 | static HRESULT ProcessVS2022( | ||
| 496 | __in_opt ISetupInstance* pInstance, | ||
| 497 | __in DWORD64 qwVersion, | ||
| 498 | __in BOOL fComplete | ||
| 499 | ) | ||
| 500 | { | ||
| 501 | static ISetupInstance* pLatest = NULL; | ||
| 502 | static DWORD64 qwLatest = 0; | ||
| 503 | |||
| 504 | static LPCWSTR rgwzProducts[] = | ||
| 505 | { | ||
| 506 | L"Microsoft.VisualStudio.Product.Community", | ||
| 507 | L"Microsoft.VisualStudio.Product.Professional", | ||
| 508 | L"Microsoft.VisualStudio.Product.Enterprise", | ||
| 509 | }; | ||
| 510 | |||
| 511 | // TODO: Consider making table-driven with these defaults per-version for easy customization. | ||
| 512 | static VS_COMPONENT_PROPERTY rgComponents[] = | ||
| 513 | { | ||
| 514 | { L"Microsoft.VisualStudio.Component.FSharp", L"VS2022_IDE_FSHARP_PROJECTSYSTEM_INSTALLED" }, | ||
| 515 | { L"Microsoft.VisualStudio.Component.Roslyn.LanguageServices", L"VS2022_IDE_VB_PROJECTSYSTEM_INSTALLED" }, | ||
| 516 | { L"Microsoft.VisualStudio.Component.Roslyn.LanguageServices", L"VS2022_IDE_VCSHARP_PROJECTSYSTEM_INSTALLED" }, | ||
| 517 | { L"Microsoft.VisualStudio.PackageGroup.TestTools.Core", L"VS2022_IDE_VSTS_TESTSYSTEM_INSTALLED" }, | ||
| 518 | { L"Microsoft.VisualStudio.Component.VC.CoreIde", L"VS2022_IDE_VC_PROJECTSYSTEM_INSTALLED" }, | ||
| 519 | { L"Microsoft.VisualStudio.Component.Web", L"VS2022_IDE_VWD_PROJECTSYSTEM_INSTALLED" }, | ||
| 520 | { L"Microsoft.VisualStudio.PackageGroup.DslRuntime", L"VS2022_IDE_MODELING_PROJECTSYSTEM_INSTALLED" }, | ||
| 521 | }; | ||
| 522 | |||
| 523 | HRESULT hr = S_OK; | ||
| 524 | |||
| 525 | if (fComplete) | ||
| 526 | { | ||
| 527 | if (pLatest) | ||
| 528 | { | ||
| 529 | hr = ProcessInstance(pLatest, L"VS2022_ROOT_FOLDER", countof(rgComponents), rgComponents); | ||
| 530 | ExitOnFailure(hr, "Failed to process VS2022 instance."); | ||
| 531 | } | ||
| 532 | } | ||
| 533 | else if (pInstance) | ||
| 534 | { | ||
| 535 | hr = InstanceInProducts(pInstance, countof(rgwzProducts), rgwzProducts); | ||
| 536 | ExitOnFailure(hr, "Failed to compare product IDs."); | ||
| 537 | |||
| 538 | if (S_FALSE == hr) | ||
| 539 | { | ||
| 540 | ExitFunction(); | ||
| 541 | } | ||
| 542 | |||
| 543 | hr = InstanceIsGreater(pLatest, qwLatest, pInstance, qwVersion); | ||
| 544 | ExitOnFailure(hr, "Failed to compare instances."); | ||
| 545 | |||
| 546 | if (S_FALSE == hr) | ||
| 547 | { | ||
| 548 | ExitFunction(); | ||
| 549 | } | ||
| 550 | |||
| 551 | ReleaseNullObject(pLatest); | ||
| 552 | |||
| 553 | pLatest = pInstance; | ||
| 554 | qwLatest = qwVersion; | ||
| 555 | |||
| 556 | // Caller will do a final Release() otherwise. | ||
| 557 | pLatest->AddRef(); | ||
| 558 | } | ||
| 559 | |||
| 560 | LExit: | ||
| 561 | if (fComplete) | ||
| 562 | { | ||
| 563 | ReleaseObject(pLatest); | ||
| 564 | } | ||
| 565 | |||
| 566 | return hr; | ||
| 567 | } | ||
| 568 | |||
| 488 | static HRESULT SetPropertyForComponent( | 569 | static 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"> |
