Switch to python script for CI VS install that might magically work

* Also for diagnostic purposes, print whether the installer succeeded
This commit is contained in:
baldurk
2025-07-10 17:52:17 +01:00
parent 279379c3be
commit 98c2e94385
2 changed files with 69 additions and 3 deletions
+25 -3
View File
@@ -137,10 +137,32 @@ jobs:
- uses: actions/checkout@v4
with:
fetch-depth: 5
- name: Install missing VC tools
- name: Install VSSetup
run: Install-Module VSSetup -Scope CurrentUser
shell: powershell
- name: Show installed toolsets
run: |
"C:\Program Files (x86)\Microsoft Visual Studio\Installer\vs_installer.exe" modify --installPath "C:\Program Files\Microsoft Visual Studio\2022\Enterprise" --add Microsoft.VisualStudio.Component.VC.140 --quiet --norestart --nocache
shell: cmd
echo "--- All:"
Get-VSSetupInstance -All
echo "--- VC140:"
Get-VSSetupInstance -All | Select-VSSetupInstance -Latest -Require Microsoft.VisualStudio.Component.VC.140
shell: powershell
- if: matrix.toolset == 'v140'
name: Install missing Visual Studio components
run: python .github/workflows/install-vs-components.py
- if: matrix.toolset == 'v140'
name: Show installed toolsets
run: |
echo "--- All:"
Get-VSSetupInstance -All
echo "--- VC140:"
Get-VSSetupInstance -All | Select-VSSetupInstance -Latest -Require Microsoft.VisualStudio.Component.VC.140
shell: powershell
- name: Download optional 3rdparty extras
run: |
curl https://renderdoc.org/qrenderdoc_3rdparty.zip -O
@@ -0,0 +1,44 @@
# Taken from https://github.com/mhammond/pywin32/blob/main/.github/workflows/install-vs-components.py
# See https://github.com/actions/runner-images/issues/9701
# Adapted from https://github.com/actions/runner-images/issues/9873#issuecomment-2139288682
import os
import platform
from itertools import chain
from subprocess import check_call, check_output
os.chdir("C:/Program Files (x86)/Microsoft Visual Studio/Installer")
vs_install_path = check_output(
(
"vswhere.exe",
"-latest",
"-products",
"*",
"-requires",
"Microsoft.Component.MSBuild",
"-property",
"installationPath",
),
text=True,
shell=True,
).strip()
components_to_add = (
["Microsoft.VisualStudio.Component.VC.140"]
)
args = (
"vs_installer.exe",
"modify",
"--installPath",
vs_install_path,
*chain.from_iterable([("--add", component) for component in components_to_add]),
"--quiet",
"--norestart",
)
print(*args)
# Should be run twice for some reason
print("First run...")
check_call(args)
print("Second run...")
check_call(args)