diff --git a/.github/ISSUE_TEMPLATE/announcement.yml b/.github/ISSUE_TEMPLATE/announcement.yml
index 88e459125..4722c93a7 100644
--- a/.github/ISSUE_TEMPLATE/announcement.yml
+++ b/.github/ISSUE_TEMPLATE/announcement.yml
@@ -46,6 +46,7 @@ body:
- label: macOS 26 Arm64
- label: Windows Server 2022
- label: Windows Server 2025
+ - label: Windows Server 2025 with Visual Studio 2026
- type: textarea
attributes:
label: Mitigation ways
diff --git a/.github/ISSUE_TEMPLATE/bug-report.yml b/.github/ISSUE_TEMPLATE/bug-report.yml
index b26b7bfea..e4b8c5d77 100644
--- a/.github/ISSUE_TEMPLATE/bug-report.yml
+++ b/.github/ISSUE_TEMPLATE/bug-report.yml
@@ -29,6 +29,7 @@ body:
- label: macOS 26 Arm64
- label: Windows Server 2022
- label: Windows Server 2025
+ - label: Windows Server 2025 with Visual Studio 2026
- type: textarea
attributes:
label: Image version and build link
diff --git a/.github/ISSUE_TEMPLATE/tool-request.yml b/.github/ISSUE_TEMPLATE/tool-request.yml
index 4bae1f892..e73752d3f 100644
--- a/.github/ISSUE_TEMPLATE/tool-request.yml
+++ b/.github/ISSUE_TEMPLATE/tool-request.yml
@@ -67,6 +67,7 @@ body:
- label: macOS 26 Arm64
- label: Windows Server 2022
- label: Windows Server 2025
+ - label: Windows Server 2025 with Visual Studio 2026
- type: textarea
attributes:
label: Can this tool be installed during the build?
diff --git a/.github/workflows/windows2025-vs2026.yml b/.github/workflows/windows2025-vs2026.yml
new file mode 100644
index 000000000..7a2e127dc
--- /dev/null
+++ b/.github/workflows/windows2025-vs2026.yml
@@ -0,0 +1,20 @@
+name: Trigger Windows25 with VS 2026 CI
+run-name: Windows2025 with VS 2026 - ${{ github.event.pull_request.title }}
+
+on:
+ pull_request_target:
+ types: labeled
+ paths:
+ - 'images/windows/**'
+
+defaults:
+ run:
+ shell: pwsh
+
+jobs:
+ Windows_2025_vs_2026:
+ if: github.event.label.name == 'CI windows-all' || github.event.label.name == 'CI windows-2025-vs2026'
+ uses: ./.github/workflows/trigger-ubuntu-win-build.yml
+ with:
+ image_type: 'windows2025-vs2026'
+ secrets: inherit
diff --git a/README.md b/README.md
index c9fc7dc32..09621635e 100644
--- a/README.md
+++ b/README.md
@@ -28,6 +28,7 @@ To build a VM machine from this repo's source, see the [instructions](docs/creat
| macOS 15 Arm64
 | arm64 | `macos-latest`, `macos-15`, or `macos-15-xlarge` | [macOS-15-arm64] |
| macOS 14
 | x64 | `macos-14-large`| [macOS-14] |
| macOS 14 Arm64
 | arm64 | `macos-14` or `macos-14-xlarge`| [macOS-14-arm64] |
+| Windows Server 2025 with Visual Studio 2026  | x64 | `windows-2025-vs2026` | [windows-2025-vs2026] |
| Windows Server 2025
 | x64 | `windows-latest` or `windows-2025` | [windows-2025] |
| Windows Server 2022
 | x64 | `windows-2022` | [windows-2022] |
@@ -41,6 +42,7 @@ To build a VM machine from this repo's source, see the [instructions](docs/creat
[ubuntu-22.04]: https://github.com/actions/runner-images/blob/main/images/ubuntu/Ubuntu2204-Readme.md
[ubuntu-slim]: https://github.com/actions/runner-images/blob/main/images/ubuntu-slim/ubuntu-slim-Readme.md
[windows-2025]: https://github.com/actions/runner-images/blob/main/images/windows/Windows2025-Readme.md
+[windows-2025-vs2026]: https://github.com/actions/runner-images/blob/main/images/windows/Windows2025-VS2026-Readme.md
[windows-2022]: https://github.com/actions/runner-images/blob/main/images/windows/Windows2022-Readme.md
[macOS-14]: https://github.com/actions/runner-images/blob/main/images/macos/macos-14-Readme.md
[macOS-14-arm64]: https://github.com/actions/runner-images/blob/main/images/macos/macos-14-arm64-Readme.md
diff --git a/helpers/GenerateResourcesAndImage.ps1 b/helpers/GenerateResourcesAndImage.ps1
index 8e195e9a4..53cb9afbb 100644
--- a/helpers/GenerateResourcesAndImage.ps1
+++ b/helpers/GenerateResourcesAndImage.ps1
@@ -1,10 +1,11 @@
$ErrorActionPreference = 'Stop'
enum ImageType {
- Windows2022 = 1
- Windows2025 = 2
- Ubuntu2204 = 3
- Ubuntu2404 = 4
+ Windows2022 = 1
+ Windows2025 = 2
+ Windows2025_vs2026 = 3
+ Ubuntu2204 = 4
+ Ubuntu2404 = 5
}
Function Get-PackerTemplate {
@@ -25,6 +26,10 @@ Function Get-PackerTemplate {
$relativeTemplatePath = Join-Path (Join-Path "windows" "templates") "build.windows-2025.pkr.hcl"
$imageOS = "win25"
}
+ ([ImageType]::Windows2025_vs2026) {
+ $relativeTemplatePath = Join-Path (Join-Path "windows" "templates") "build.windows-2025-vs2026.pkr.hcl"
+ $imageOS = "win25-vs2026"
+ }
([ImageType]::Ubuntu2204) {
$relativeTemplatePath = Join-Path (Join-Path "ubuntu" "templates") "build.ubuntu-22_04.pkr.hcl"
$imageOS = "ubuntu22"
@@ -83,7 +88,7 @@ Function GenerateResourcesAndImage {
.PARAMETER ResourceGroupName
The name of the resource group to store the resulting artifact. Resource group must already exist.
.PARAMETER ImageType
- The type of image to generate. Valid values are: Windows2022, Windows2025, Ubuntu2204, Ubuntu2404.
+ The type of image to generate. Valid values are: Windows2022, Windows2025, Windows2025_vs2026, Ubuntu2204, Ubuntu2404.
.PARAMETER ManagedImageName
The name of the managed image to create. The default is "Runner-Image-{{ImageType}}".
.PARAMETER AzureLocation
@@ -210,7 +215,7 @@ Function GenerateResourcesAndImage {
Write-Host "Validating packer template..."
& $PackerBinary validate `
- "-only=$($PackerTemplate.BuildName)*" `
+ "-only=$($PackerTemplate.BuildName).*" `
"-var=client_id=fake" `
"-var=client_secret=fake" `
"-var=subscription_id=$($SubscriptionId)" `
@@ -280,7 +285,7 @@ Function GenerateResourcesAndImage {
Write-Debug "Tenant id: $TenantId."
& $PackerBinary build -on-error="$($OnError)" `
- -only "$($PackerTemplate.BuildName)*" `
+ -only "$($PackerTemplate.BuildName).*" `
-var "client_id=$($ServicePrincipalAppId)" `
-var "client_secret=$($ServicePrincipalPassword)" `
-var "subscription_id=$($SubscriptionId)" `
diff --git a/images/windows/Windows2025-VS2026-Readme.md b/images/windows/Windows2025-VS2026-Readme.md
new file mode 100644
index 000000000..05722da1f
--- /dev/null
+++ b/images/windows/Windows2025-VS2026-Readme.md
@@ -0,0 +1,490 @@
+| Announcements |
+|-|
+| [[Windows/Ubuntu] Docker Server and Client will be updated to version 29.1.*, Docker Compose will be updated to version 2.40.3 on February 9th, 2026](https://github.com/actions/runner-images/issues/13474) |
+***
+# Windows Server 2025
+- OS Version: 10.0.26100 Build 32230
+- Image Version: 20260203.4.1
+
+## Windows features
+- Windows Subsystem for Linux (WSLv1): Enabled
+- Windows Subsystem for Linux (Default, WSLv2): 2.6.3.0
+
+## Installed Software
+
+### Language and Runtime
+- Bash 5.2.37(1)-release
+- Go 1.24.12
+- Julia 1.12.0
+- Kotlin 2.3.0
+- LLVM 20.1.8
+- Node 22.22.0
+- Perl 5.42.0
+- PHP 8.5.2
+- Python 3.12.10
+- Ruby 3.3.10
+
+### Package Management
+- Chocolatey 2.6.0
+- Composer 2.9.5
+- Helm 4.1.0
+- Miniconda 25.11.1 (pre-installed on the image but not added to PATH)
+- NPM 10.9.4
+- NuGet 7.0.1.1
+- pip 26.0 (python 3.12)
+- Pipx 1.8.0
+- RubyGems 3.5.22
+- Vcpkg (build from commit cc73782a88)
+- Yarn 1.22.22
+
+#### Environment variables
+| Name | Value |
+| ----------------------- | ------------ |
+| VCPKG_INSTALLATION_ROOT | C:\vcpkg |
+| CONDA | C:\Miniconda |
+
+### Project Management
+- Ant 1.10.15
+- Gradle 9.3
+- Maven 3.9.12
+- sbt 1.12.1
+
+### Tools
+- 7zip 25.01
+- aria2 1.37.0
+- azcopy 10.31.1
+- Bazel 9.0.0
+- Bazelisk 1.28.1
+- Bicep 0.40.2
+- Cabal 3.16.1.0
+- CMake 4.2.3
+- CodeQL Action Bundle 2.24.0
+- Docker 27.5.1
+- Docker Compose v2 2.32.2
+- Docker-wincred 0.9.5
+- ghc 9.14.1
+- Git 2.53.0.windows.1
+- Git LFS 3.7.1
+- ImageMagick 7.1.2-13
+- InnoSetup 6.7.0
+- jq 1.8.1
+- Kind 0.31.0
+- Kubectl 1.35.0
+- gcc 15.2.0
+- gdb 16.3
+- GNU Binutils 2.45
+- Newman 6.2.2
+- OpenSSL 3.6.1
+- Packer 1.14.2
+- Pulumi 3.218.0
+- R 4.5.2
+- Service Fabric SDK 10.1.2493.9590
+- Stack 3.9.1
+- Swig 4.3.1
+- VSWhere 3.1.7
+- WinAppDriver 1.2.2009.02003
+- WiX Toolset 3.14.1.8722
+- yamllint 1.38.0
+- zstd 1.5.7
+- Ninja 1.13.2
+
+### CLI Tools
+- AWS CLI 2.33.12
+- AWS SAM CLI 1.153.1
+- AWS Session Manager CLI 1.2.764.0
+- Azure CLI 2.83.0
+- Azure DevOps CLI extension 1.0.2
+- GitHub CLI 2.86.0
+
+### Rust Tools
+- Cargo 1.93.0
+- Rust 1.93.0
+- Rustdoc 1.93.0
+- Rustup 1.28.2
+
+#### Packages
+- Clippy 0.1.93
+- Rustfmt 1.8.0
+
+### Browsers and Drivers
+- Google Chrome 144.0.7559.110
+- Chrome Driver 144.0.7559.109
+- Microsoft Edge 144.0.3719.104
+- Microsoft Edge Driver 144.0.3719.104
+- Mozilla Firefox 147.0.2
+- Gecko Driver 0.36.0
+- IE Driver 4.14.0.0
+- Selenium server 4.40.0
+
+#### Environment variables
+| Name | Value |
+| ----------------- | ---------------------------------- |
+| CHROMEWEBDRIVER | C:\SeleniumWebDrivers\ChromeDriver |
+| EDGEWEBDRIVER | C:\SeleniumWebDrivers\EdgeDriver |
+| GECKOWEBDRIVER | C:\SeleniumWebDrivers\GeckoDriver |
+| SELENIUM_JAR_PATH | C:\selenium\selenium-server.jar |
+
+### Java
+| Version | Environment Variable |
+| -------------------- | -------------------- |
+| 8.0.472+8 | JAVA_HOME_8_X64 |
+| 11.0.29+7 | JAVA_HOME_11_X64 |
+| 17.0.17+10 (default) | JAVA_HOME_17_X64 |
+| 21.0.9+10.0 | JAVA_HOME_21_X64 |
+| 25.0.2+10.0 | JAVA_HOME_25_X64 |
+
+### Shells
+| Name | Target |
+| ------------- | --------------------------------- |
+| gitbash.exe | C:\Program Files\Git\bin\bash.exe |
+| msys2bash.cmd | C:\msys64\usr\bin\bash.exe |
+| wslbash.exe | C:\Windows\System32\bash.exe |
+
+### MSYS2
+- Pacman 6.1.0
+
+#### Notes
+```
+Location: C:\msys64
+
+Note: MSYS2 is pre-installed on image but not added to PATH.
+```
+
+### Cached Tools
+
+#### Go
+- 1.22.12
+- 1.23.12
+- 1.24.12
+- 1.25.6
+
+#### Node.js
+- 20.20.0
+- 22.22.0
+- 24.13.0
+
+#### Python
+- 3.10.11
+- 3.11.9
+- 3.12.10
+- 3.13.11
+- 3.14.2
+
+#### PyPy
+- 3.9.19 [PyPy 7.3.16]
+- 3.10.16 [PyPy 7.3.19]
+
+#### Ruby
+- 3.2.10
+- 3.3.10
+- 3.4.8
+- 4.0.1
+
+### Databases
+
+#### PostgreSQL
+| Property | Value |
+| -------------------- | ---------------------------------------------------------------------------------------------------------------------- |
+| ServiceName | postgresql-x64-17 |
+| Version | 17.7 |
+| ServiceStatus | Stopped |
+| ServiceStartType | Disabled |
+| EnvironmentVariables | PGBIN=C:\Program Files\PostgreSQL\17\bin
PGDATA=C:\PostgreSQL\17\data
PGROOT=C:\Program Files\PostgreSQL\17 |
+| Path | C:\Program Files\PostgreSQL\17 |
+| UserName | postgres |
+| Password | root |
+
+#### MongoDB
+| Version | ServiceName | ServiceStatus | ServiceStartType |
+| -------- | ----------- | ------------- | ---------------- |
+| 7.0.29.0 | MongoDB | Stopped | Disabled |
+
+### Database tools
+- Azure CosmosDb Emulator 2.14.25.0
+- DacFx 170.2.70.1
+- MySQL 8.0.45.0
+- SQL OLEDB Driver 18 18.7.5.0
+- SQL OLEDB Driver 19 19.4.1.0
+- SQLPS 1.0
+- MongoDB Shell (mongosh) 2.6.0
+
+### Web Servers
+| Name | Version | ConfigFile | ServiceName | ServiceStatus | ListenPort |
+| ------ | ------- | ------------------------------------- | ----------- | ------------- | ---------- |
+| Apache | 2.4.55 | C:\tools\Apache24\conf\httpd.conf | Apache | Stopped | 80 |
+| Nginx | 1.29.4 | C:\tools\nginx-1.29.4\conf\nginx.conf | nginx | Stopped | 80 |
+
+### Visual Studio Enterprise 2026
+| Name | Version | Path |
+| ----------------------------- | -------------- | ------------------------------------------------------ |
+| Visual Studio Enterprise 2026 | 18.2.11415.280 | C:\Program Files\Microsoft Visual Studio\18\Enterprise |
+
+#### Workloads, components and extensions
+| Package | Version |
+| ------------------------------------------------------------------------- | --------------- |
+| android | 36.1.2.0 |
+| Component.Android.NDK.R27C | 18.0.11101.84 |
+| Component.Android.SDK.MAUI | 18.0.11101.84 |
+| Component.Linux.CMake | 18.0.11101.84 |
+| Component.Linux.RemoteFileExplorer | 18.0.11101.84 |
+| Component.MDD.Android | 18.1.11302.112 |
+| Component.MDD.Linux | 18.0.11101.78 |
+| Component.Microsoft.VisualStudio.RazorExtension | 18.0.11101.84 |
+| Component.Microsoft.VisualStudio.Tools.Applications.amd64 | 17.0.36522.0 |
+| Component.Microsoft.VisualStudio.Web.AzureFunctions | 18.0.11101.84 |
+| Component.Microsoft.Web.LibraryManager | 18.0.11101.84 |
+| Component.Microsoft.Windows.DriverKit | 10.0.26100.12 |
+| Component.OpenJDK | 18.0.11101.84 |
+| Component.UnityEngine.x64 | 18.0.11101.78 |
+| Component.Unreal.Debugger | 18.2.11407.205 |
+| Component.Unreal.Ide | 18.0.11101.78 |
+| Component.VisualStudio.GitHub.Copilot | 18.2.11414.340 |
+| Component.VSInstallerProjects2022 | 3.0.0 |
+| Component.WixToolset.VisualStudioExtension.Dev17 | 1.0.0.22 |
+| Component.WixToolset.VisualStudioExtension.Schemas3 | 1.0.0.22 |
+| ComponentGroup.Microsoft.NET.AppModernization | 18.0.11217.1 |
+| ios | 26.1.10502 |
+| maccatalyst | 26.1.10502 |
+| maui.blazor | 10.0.1.7412 |
+| maui.core | 10.0.1.7412 |
+| maui.windows | 10.0.1.7412 |
+| Microsoft.Component.Azure.DataLake.Tools | 18.1.11302.112 |
+| Microsoft.Component.ClickOnce | 18.0.11101.78 |
+| Microsoft.Component.CodeAnalysis.SDK | 18.0.11101.84 |
+| Microsoft.Component.MSBuild | 18.0.11101.78 |
+| Microsoft.Component.NetFX.Native | 18.0.11101.78 |
+| Microsoft.Component.PythonTools | 18.0.11101.78 |
+| Microsoft.Component.PythonTools.Web | 18.0.11101.78 |
+| Microsoft.Component.VC.Runtime.UCRTSDK | 18.0.11101.78 |
+| Microsoft.ComponentGroup.Blend | 18.0.11101.84 |
+| Microsoft.ComponentGroup.ClickOnce.Publish | 18.0.11101.84 |
+| Microsoft.Net.Component.4.6.2.TargetingPack | 18.0.11101.78 |
+| Microsoft.Net.Component.4.6.TargetingPack | 18.0.11101.84 |
+| Microsoft.Net.Component.4.7.1.TargetingPack | 18.0.11101.78 |
+| Microsoft.Net.Component.4.7.2.TargetingPack | 18.0.11101.84 |
+| Microsoft.Net.Component.4.7.TargetingPack | 18.0.11101.84 |
+| Microsoft.Net.Component.4.8.1.SDK | 18.0.11101.78 |
+| Microsoft.Net.Component.4.8.1.TargetingPack | 18.0.11101.78 |
+| Microsoft.Net.Component.4.8.SDK | 18.0.11101.84 |
+| Microsoft.Net.Component.4.8.TargetingPack | 18.0.11101.84 |
+| Microsoft.Net.ComponentGroup.4.8.DeveloperTools | 18.0.11101.84 |
+| Microsoft.Net.ComponentGroup.DevelopmentPrerequisites | 18.0.11101.84 |
+| Microsoft.Net.ComponentGroup.TargetingPacks.Common | 18.0.11101.84 |
+| microsoft.net.runtime.android | 10.1.225.61305 |
+| microsoft.net.runtime.android.aot | 10.1.225.61305 |
+| microsoft.net.runtime.android.aot.net9 | 10.1.225.61305 |
+| microsoft.net.runtime.android.net9 | 10.1.225.61305 |
+| microsoft.net.runtime.ios | 10.1.225.61305 |
+| microsoft.net.runtime.ios.net9 | 10.1.225.61305 |
+| microsoft.net.runtime.maccatalyst | 10.1.225.61305 |
+| microsoft.net.runtime.maccatalyst.net9 | 10.1.225.61305 |
+| microsoft.net.runtime.mono.tooling | 10.1.225.61305 |
+| microsoft.net.runtime.mono.tooling.net9 | 10.1.225.61305 |
+| microsoft.net.sdk.emscripten | 10.1.225.61305 |
+| Microsoft.NetCore.Component.DevelopmentTools | 18.0.11101.78 |
+| Microsoft.NetCore.Component.Runtime.10.0 | 18.2.11407.205 |
+| Microsoft.NetCore.Component.Runtime.8.0 | 18.2.11407.205 |
+| Microsoft.NetCore.Component.SDK | 18.2.11407.205 |
+| Microsoft.NetCore.Component.Web | 18.0.11101.84 |
+| Microsoft.VisualStudio.Component.AppInsights.Tools | 18.0.11101.84 |
+| Microsoft.VisualStudio.Component.AspNet | 18.0.11101.84 |
+| Microsoft.VisualStudio.Component.AspNet45 | 18.0.11101.84 |
+| Microsoft.VisualStudio.Component.ClassDesigner | 18.0.11101.84 |
+| Microsoft.VisualStudio.Component.CodeMap | 18.0.11101.84 |
+| Microsoft.VisualStudio.Component.CoreEditor | 18.0.11101.78 |
+| Microsoft.VisualStudio.Component.CppBuildInsights | 18.0.11101.84 |
+| Microsoft.VisualStudio.Component.Debugger.JustInTime | 18.0.11101.84 |
+| Microsoft.VisualStudio.Component.DiagnosticTools | 18.0.11101.84 |
+| Microsoft.VisualStudio.Component.DockerTools | 18.0.11101.78 |
+| Microsoft.VisualStudio.Component.DotNetModelBuilder | 18.0.11101.78 |
+| Microsoft.VisualStudio.Component.DslTools | 18.0.11101.78 |
+| Microsoft.VisualStudio.Component.EntityFramework | 18.0.11101.84 |
+| Microsoft.VisualStudio.Component.FSharp | 18.0.11101.78 |
+| Microsoft.VisualStudio.Component.FSharp.Desktop | 18.0.11101.84 |
+| Microsoft.VisualStudio.Component.FSharp.WebTemplates | 18.0.11101.78 |
+| Microsoft.VisualStudio.Component.GraphDocument | 18.0.11101.84 |
+| Microsoft.VisualStudio.Component.Graphics | 18.0.11101.84 |
+| Microsoft.VisualStudio.Component.Graphics.Tools | 18.0.11101.78 |
+| Microsoft.VisualStudio.Component.HLSL | 18.0.11101.84 |
+| Microsoft.VisualStudio.Component.IISExpress | 18.0.11101.78 |
+| Microsoft.VisualStudio.Component.IntelliCode | 18.0.11121.172 |
+| Microsoft.VisualStudio.Component.IntelliTrace.FrontEnd | 18.0.11101.84 |
+| Microsoft.VisualStudio.Component.JavaScript.Diagnostics | 18.0.11101.78 |
+| Microsoft.VisualStudio.Component.JavaScript.TypeScript | 18.0.11101.84 |
+| Microsoft.VisualStudio.Component.LinqToSql | 18.0.11101.84 |
+| Microsoft.VisualStudio.Component.LiveUnitTesting | 18.0.11101.84 |
+| Microsoft.VisualStudio.Component.ManagedDesktop.Core | 18.0.11101.84 |
+| Microsoft.VisualStudio.Component.ManagedDesktop.Prerequisites | 18.0.11101.84 |
+| Microsoft.VisualStudio.Component.MSODBC.SQL | 18.0.11101.78 |
+| Microsoft.VisualStudio.Component.MSSQL.CMDLnUtils | 18.0.11101.78 |
+| Microsoft.VisualStudio.Component.Node.Tools | 18.0.11101.84 |
+| Microsoft.VisualStudio.Component.NuGet | 18.0.11101.84 |
+| Microsoft.VisualStudio.Component.NuGet.BuildTools | 18.0.11101.78 |
+| Microsoft.VisualStudio.Component.PortableLibrary | 18.0.11101.84 |
+| Microsoft.VisualStudio.Component.Roslyn.Compiler | 18.0.11101.84 |
+| Microsoft.VisualStudio.Component.Roslyn.LanguageServices | 18.0.11101.84 |
+| Microsoft.VisualStudio.Component.Sharepoint.Tools | 18.0.11101.84 |
+| Microsoft.VisualStudio.Component.SQL.CLR | 18.0.11101.78 |
+| Microsoft.VisualStudio.Component.SQL.DataSources | 18.0.11101.84 |
+| Microsoft.VisualStudio.Component.SQL.LocalDB.Runtime | 18.0.11101.84 |
+| Microsoft.VisualStudio.Component.SQL.SSDT | 18.0.11101.78 |
+| Microsoft.VisualStudio.Component.TeamOffice | 18.0.11101.78 |
+| Microsoft.VisualStudio.Component.TextTemplating | 18.0.11101.78 |
+| Microsoft.VisualStudio.Component.TypeScript.TSServer | 18.0.11101.84 |
+| Microsoft.VisualStudio.Component.Unity | 18.0.11101.78 |
+| Microsoft.VisualStudio.Component.UWP.VC.ARM64 | 18.0.11123.170 |
+| Microsoft.VisualStudio.Component.UWP.VC.ARM64EC | 18.0.11123.170 |
+| Microsoft.VisualStudio.Component.VC.14.29.16.11.ARM | 18.0.11101.78 |
+| Microsoft.VisualStudio.Component.VC.14.29.16.11.ARM64 | 18.0.11101.78 |
+| Microsoft.VisualStudio.Component.VC.14.44.17.14.x86.x64 | 18.2.11414.340 |
+| Microsoft.VisualStudio.Component.VC.ASAN | 18.0.11123.170 |
+| Microsoft.VisualStudio.Component.VC.ATL | 18.1.11302.112 |
+| Microsoft.VisualStudio.Component.VC.ATL.ARM64 | 18.1.11302.112 |
+| Microsoft.VisualStudio.Component.VC.ATL.ARM64.Spectre | 18.1.11302.112 |
+| Microsoft.VisualStudio.Component.VC.ATL.Spectre | 18.1.11302.112 |
+| Microsoft.VisualStudio.Component.VC.ATLMFC | 18.1.11302.112 |
+| Microsoft.VisualStudio.Component.VC.ATLMFC.Spectre | 18.1.11302.112 |
+| Microsoft.VisualStudio.Component.VC.CLI.Support | 18.1.11302.112 |
+| Microsoft.VisualStudio.Component.VC.CMake.Project | 18.0.11101.78 |
+| Microsoft.VisualStudio.Component.VC.CoreIde | 18.0.11101.78 |
+| Microsoft.VisualStudio.Component.VC.DiagnosticTools | 18.0.11101.84 |
+| Microsoft.VisualStudio.Component.VC.Llvm.Clang | 18.0.11101.84 |
+| Microsoft.VisualStudio.Component.VC.Llvm.ClangToolset | 18.0.11101.84 |
+| Microsoft.VisualStudio.Component.VC.MFC.ARM64 | 18.1.11302.112 |
+| Microsoft.VisualStudio.Component.VC.MFC.ARM64.Spectre | 18.1.11302.112 |
+| Microsoft.VisualStudio.Component.VC.Redist.14.Latest | 18.0.11123.170 |
+| Microsoft.VisualStudio.Component.VC.Redist.MSM | 18.0.11123.170 |
+| Microsoft.VisualStudio.Component.VC.Runtimes.ARM64.Spectre | 18.1.11302.112 |
+| Microsoft.VisualStudio.Component.VC.Runtimes.ARM64EC.Spectre | 18.0.11123.170 |
+| Microsoft.VisualStudio.Component.VC.Runtimes.x86.x64.Spectre | 18.1.11302.112 |
+| Microsoft.VisualStudio.Component.VC.TestAdapterForBoostTest | 18.0.11101.78 |
+| Microsoft.VisualStudio.Component.VC.TestAdapterForGoogleTest | 18.0.11101.84 |
+| Microsoft.VisualStudio.Component.VC.Tools.ARM64 | 18.1.11302.112 |
+| Microsoft.VisualStudio.Component.VC.Tools.ARM64EC | 18.0.11123.170 |
+| Microsoft.VisualStudio.Component.VC.Tools.x86.x64 | 18.1.11302.112 |
+| Microsoft.VisualStudio.Component.Vcpkg | 18.0.11101.78 |
+| Microsoft.VisualStudio.Component.VSSDK | 18.0.11101.84 |
+| Microsoft.VisualStudio.Component.Wcf.Tooling | 18.0.11101.84 |
+| Microsoft.VisualStudio.Component.Web | 18.0.11101.84 |
+| Microsoft.VisualStudio.Component.WebDeploy | 18.0.11101.78 |
+| Microsoft.VisualStudio.Component.Windows10SDK | 18.0.11101.84 |
+| Microsoft.VisualStudio.Component.Windows11SDK.26100 | 18.2.11407.205 |
+| Microsoft.VisualStudio.Component.Windows11Sdk.WindowsPerformanceToolkit | 18.0.11101.84 |
+| Microsoft.VisualStudio.Component.WindowsAppSdkSupport.CSharp | 18.0.11101.84 |
+| Microsoft.VisualStudio.Component.Workflow | 18.0.11101.78 |
+| Microsoft.VisualStudio.Component.WslDebugging | 18.0.11101.84 |
+| Microsoft.VisualStudio.ComponentGroup.ArchitectureTools.Native | 18.0.11101.84 |
+| Microsoft.VisualStudio.ComponentGroup.Azure.Prerequisites | 18.0.11101.84 |
+| Microsoft.VisualStudio.ComponentGroup.AzureFunctions | 18.0.11101.84 |
+| Microsoft.VisualStudio.ComponentGroup.Maui.All | 18.0.11101.84 |
+| Microsoft.VisualStudio.ComponentGroup.Maui.Android | 18.0.11101.84 |
+| Microsoft.VisualStudio.ComponentGroup.Maui.Blazor | 18.0.11101.84 |
+| Microsoft.VisualStudio.ComponentGroup.Maui.iOS | 18.0.11101.84 |
+| Microsoft.VisualStudio.ComponentGroup.Maui.MacCatalyst | 18.0.11101.84 |
+| Microsoft.VisualStudio.ComponentGroup.Maui.Shared | 18.0.11101.84 |
+| Microsoft.VisualStudio.ComponentGroup.Maui.Windows | 18.0.11101.84 |
+| Microsoft.VisualStudio.ComponentGroup.MSIX.Packaging | 18.0.11101.84 |
+| Microsoft.VisualStudio.ComponentGroup.NativeDesktop.Core | 18.0.11101.84 |
+| Microsoft.VisualStudio.ComponentGroup.NativeDesktop.Llvm.Clang | 18.1.11302.112 |
+| Microsoft.VisualStudio.ComponentGroup.UWP.NetCoreAndStandard | 18.0.11101.84 |
+| Microsoft.VisualStudio.ComponentGroup.UWP.VC.v142 | 18.0.11101.84 |
+| Microsoft.VisualStudio.ComponentGroup.VC.Tools.142.x86.x64 | 18.0.11101.84 |
+| Microsoft.VisualStudio.ComponentGroup.VisualStudioExtension.Prerequisites | 18.0.11101.84 |
+| Microsoft.VisualStudio.ComponentGroup.Web | 18.0.11111.16 |
+| Microsoft.VisualStudio.ComponentGroup.Web.CloudTools | 18.0.11123.170 |
+| Microsoft.VisualStudio.ComponentGroup.WebToolsExtensions | 18.0.11101.84 |
+| Microsoft.VisualStudio.ComponentGroup.WebToolsExtensions.CMake | 18.0.11101.84 |
+| Microsoft.VisualStudio.ComponentGroup.WebToolsExtensions.TemplateEngine | 18.0.11101.84 |
+| Microsoft.VisualStudio.ComponentGroup.WindowsAppDevelopment.Prerequisites | 18.0.11101.84 |
+| Microsoft.VisualStudio.Workload.Azure | 18.2.11406.125 |
+| Microsoft.VisualStudio.Workload.CoreEditor | 18.0.11101.84 |
+| Microsoft.VisualStudio.Workload.Data | 18.0.11101.84 |
+| Microsoft.VisualStudio.Workload.DataScience | 18.0.11101.84 |
+| Microsoft.VisualStudio.Workload.ManagedDesktop | 18.0.11101.84 |
+| Microsoft.VisualStudio.Workload.ManagedGame | 18.0.11101.84 |
+| Microsoft.VisualStudio.Workload.NativeCrossPlat | 18.0.11101.84 |
+| Microsoft.VisualStudio.Workload.NativeDesktop | 18.0.11123.170 |
+| Microsoft.VisualStudio.Workload.NativeGame | 18.0.11123.170 |
+| Microsoft.VisualStudio.Workload.NativeMobile | 18.1.11302.112 |
+| Microsoft.VisualStudio.Workload.NetCrossPlat | 18.0.11101.84 |
+| Microsoft.VisualStudio.Workload.NetWeb | 18.0.11101.84 |
+| Microsoft.VisualStudio.Workload.Node | 18.0.11101.84 |
+| Microsoft.VisualStudio.Workload.Office | 18.0.11101.84 |
+| Microsoft.VisualStudio.Workload.Python | 18.0.11101.84 |
+| Microsoft.VisualStudio.Workload.Universal | 18.0.11123.170 |
+| Microsoft.VisualStudio.Workload.VisualStudioExtension | 18.0.11101.84 |
+| runtimes.ios | 10.1.225.61305 |
+| runtimes.ios.net9 | 10.1.225.61305 |
+| runtimes.maccatalyst | 10.1.225.61305 |
+| runtimes.maccatalyst.net9 | 10.1.225.61305 |
+| wasm.tools | 10.1.225.61305 |
+| ProBITools.MicrosoftAnalysisServicesModelingProjects2022 | 4.0.0 |
+| ProBITools.MicrosoftReportProjectsforVisualStudio2022 | 4.0.0 |
+| SSIS.MicrosoftDataToolsIntegrationServices | 2.1.2 |
+| VisualStudioClient.MicrosoftVisualStudio2022InstallerProjects | 3.0.0 |
+| Windows Driver Kit Visual Studio Extension | 10.0.26100.12 |
+| Windows Software Development Kit | 10.1.26100.7175 |
+| WixToolset.WixToolsetVisualStudio2022Extension | 1.0.0.22 |
+
+#### Microsoft Visual C++
+| Name | Architecture | Version |
+| -------------------------------------------- | ------------ | ----------- |
+| Microsoft Visual C++ 2013 Additional Runtime | x64 | 12.0.40660 |
+| Microsoft Visual C++ 2013 Minimum Runtime | x64 | 12.0.40660 |
+| Microsoft Visual C++ 2022 Additional Runtime | x64 | 14.50.35719 |
+| Microsoft Visual C++ 2022 Debug Runtime | x64 | 14.50.35719 |
+| Microsoft Visual C++ 2022 Minimum Runtime | x64 | 14.50.35719 |
+| Microsoft Visual C++ 2022 Additional Runtime | x86 | 14.50.35719 |
+| Microsoft Visual C++ 2022 Debug Runtime | x86 | 14.50.35719 |
+| Microsoft Visual C++ 2022 Minimum Runtime | x86 | 14.50.35719 |
+
+#### Installed Windows SDKs
+- 10.0.26100.0
+
+### .NET Core Tools
+- .NET Core SDK: 8.0.123, 8.0.206, 8.0.319, 8.0.417, 9.0.113, 9.0.205, 9.0.310, 10.0.102
+- .NET Framework: 4.8, 4.8.1
+- Microsoft.AspNetCore.App: 8.0.6, 8.0.22, 8.0.23, 9.0.6, 9.0.12, 10.0.2
+- Microsoft.NETCore.App: 8.0.6, 8.0.22, 8.0.23, 9.0.6, 9.0.12, 10.0.2
+- Microsoft.WindowsDesktop.App: 8.0.6, 8.0.22, 8.0.23, 9.0.6, 9.0.12, 10.0.2
+- nbgv 3.9.50+6feeb89450
+
+### PowerShell Tools
+- PowerShell 7.4.13
+
+#### Powershell Modules
+- Az: 14.6.0
+- AWSPowershell: 5.0.146
+- DockerMsftProvider: 1.0.0.8
+- MarkdownPS: 1.10
+- Microsoft.Graph: 2.35.0
+- Pester: 3.4.0, 5.7.1
+- PowerShellGet: 1.0.0.1, 2.2.5
+- PSScriptAnalyzer: 1.24.0
+- PSWindowsUpdate: 2.2.1.5
+- SqlServer: 22.3.0
+- VSSetup: 2.2.16
+
+### Android
+| Package Name | Version |
+| -------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| Android Command Line Tools | 19.0 |
+| Android Emulator | 36.3.10 |
+| Android SDK Build-tools | 36.0.0 36.1.0
35.0.0 35.0.1
34.0.0 |
+| Android SDK Platforms | android-36.1 (rev 1)
android-36-ext19 (rev 1)
android-36-ext18 (rev 1)
android-36 (rev 2)
android-35-ext15 (rev 1)
android-35-ext14 (rev 1)
android-35 (rev 2)
android-34-ext8 (rev 1)
android-34-ext12 (rev 1)
android-34-ext11 (rev 1)
android-34-ext10 (rev 1)
android-34 (rev 3) |
+| Android SDK Platform-Tools | 36.0.2 |
+| Android Support Repository | 47.0.0 |
+| CMake | 3.30.5
3.31.5
4.1.2 |
+| Google Play services | 49 |
+| Google Repository | 58 |
+| NDK | 27.3.13750724
28.2.13676358
29.0.14206865 |
+
+#### Environment variables
+| Name | Value |
+| ----------------------- | ---------------------------------------- |
+| ANDROID_HOME | C:\Android\android-sdk |
+| ANDROID_NDK | C:\Android\android-sdk\ndk\27.3.13750724 |
+| ANDROID_NDK_HOME | C:\Android\android-sdk\ndk\27.3.13750724 |
+| ANDROID_NDK_LATEST_HOME | C:\Android\android-sdk\ndk\29.0.14206865 |
+| ANDROID_NDK_ROOT | C:\Android\android-sdk\ndk\27.3.13750724 |
+| ANDROID_SDK_ROOT | C:\Android\android-sdk |
diff --git a/images/windows/scripts/build/Configure-ImageDataFile.ps1 b/images/windows/scripts/build/Configure-ImageDataFile.ps1
index eace1ec9a..d0b73effa 100644
--- a/images/windows/scripts/build/Configure-ImageDataFile.ps1
+++ b/images/windows/scripts/build/Configure-ImageDataFile.ps1
@@ -15,10 +15,14 @@ $imageMinorVersion = $imageVersionComponents[1]
$imageDataFile = $env:IMAGEDATA_FILE
$githubUrl = "https://github.com/actions/runner-images/blob"
-if (Test-IsWin25) {
- $imageLabel = "windows-2025"
- $softwareUrl = "${githubUrl}/win25/$imageMajorVersion.$imageMinorVersion/images/windows/Windows2025-Readme.md"
- $releaseUrl = "https://github.com/actions/runner-images/releases/tag/win25%2F$imageMajorVersion.$imageMinorVersion"
+if ((Test-IsWin25) -and $env:INSTALL_VS_2026) {
+ $imageLabel = "windows-2025-vs2026"
+ $softwareUrl = "${githubUrl}/win25-vs2026/$imageMajorVersion.$imageMinorVersion/images/windows/Windows2025-VS2026-Readme.md"
+ $releaseUrl = "https://github.com/actions/runner-images/releases/tag/win25-vs2026%2F$imageMajorVersion.$imageMinorVersion"
+} elseif (Test-IsWin25) {
+ $imageLabel = "windows-2025"
+ $softwareUrl = "${githubUrl}/win25/$imageMajorVersion.$imageMinorVersion/images/windows/Windows2025-Readme.md"
+ $releaseUrl = "https://github.com/actions/runner-images/releases/tag/win25%2F$imageMajorVersion.$imageMinorVersion"
} elseif (Test-IsWin22) {
$imageLabel = "windows-2022"
$softwareUrl = "${githubUrl}/win22/$imageMajorVersion.$imageMinorVersion/images/windows/Windows2022-Readme.md"
diff --git a/images/windows/scripts/build/Install-AndroidSDK.ps1 b/images/windows/scripts/build/Install-AndroidSDK.ps1
index 1d5668d65..853fa25e0 100644
--- a/images/windows/scripts/build/Install-AndroidSDK.ps1
+++ b/images/windows/scripts/build/Install-AndroidSDK.ps1
@@ -65,7 +65,13 @@ $cmdlineToolsArchPath = Invoke-DownloadWithRetry $cmdlineToolsUrl
Test-FileChecksum $cmdlineToolsArchPath -ExpectedSHA256Sum $androidToolset.hash
-Expand-7ZipArchive -Path $cmdlineToolsArchPath -DestinationPath "${SDKInstallRoot}\cmdline-tools"
+$cmdlineToolsPath = Join-Path -Path $SDKInstallRoot -ChildPath "cmdline-tools"
+if (Test-Path "$cmdlineToolsPath\latest") {
+ Write-Host "Removing previous cmdline-tools installation from Visual Studio workload"
+ Remove-Item "$cmdlineToolsPath\latest" -Recurse -Force
+}
+
+Expand-7ZipArchive -Path $cmdlineToolsArchPath -DestinationPath $cmdlineToolsPath
# cmdline tools should be installed in ${SDKInstallRoot}\cmdline-tools\latest\bin, but archive contains ${SDKInstallRoot}\cmdline-tools\bin
# we need to create the proper folder structure
diff --git a/images/windows/scripts/build/Install-VisualStudio.ps1 b/images/windows/scripts/build/Install-VisualStudio.ps1
index 9c3006841..0a81c779f 100644
--- a/images/windows/scripts/build/Install-VisualStudio.ps1
+++ b/images/windows/scripts/build/Install-VisualStudio.ps1
@@ -9,7 +9,7 @@ Install-VisualStudio `
-Version $vsToolset.subversion `
-Edition $vsToolset.edition `
-Channel $vsToolset.channel `
- -InstallChannel $vsToolset.installChannel `
+ -InstallChannelUri $vsToolset.installChannelUri `
-RequiredComponents $vsToolset.workloads `
-ExtraArgs "--allWorkloads --includeRecommended --remove Component.CPython3.x64"
diff --git a/images/windows/scripts/helpers/VisualStudioHelpers.ps1 b/images/windows/scripts/helpers/VisualStudioHelpers.ps1
index c4a99f1bd..fba6e189f 100644
--- a/images/windows/scripts/helpers/VisualStudioHelpers.ps1
+++ b/images/windows/scripts/helpers/VisualStudioHelpers.ps1
@@ -14,9 +14,9 @@ Function Install-VisualStudio {
.PARAMETER Channel
The channel of Visual Studio that will be installed. Required parameter.
-
- .PARAMETER InstallChannel
- The InstallChannelUri of Visual Studio that will be installed. Required parameter.
+
+ .PARAMETER InstallChannelUri
+ The InstallChannelUri of Visual Studio that will be installed. Optional parameter.
.PARAMETER RequiredComponents
The list of required components. Required parameter.
@@ -30,17 +30,24 @@ Function Install-VisualStudio {
[Parameter(Mandatory)] [String] $Version,
[Parameter(Mandatory)] [String] $Edition,
[Parameter(Mandatory)] [String] $Channel,
- [String] $InstallChannel = "",
+ [String] $InstallChannelUri = "",
[Parameter(Mandatory)] [String[]] $RequiredComponents,
[String] $ExtraArgs = ""
)
-
-
- $bootstrapperUrl = "https://aka.ms/vs/${Version}/postGRO-${Channel}/vs_${Edition}.exe"
+
+ if (-not $env:INSTALL_VS_2026) {
+ $bootstrapperUrl = "https://aka.ms/vs/${Version}/postGRO-${Channel}/vs_${Edition}.exe"
+ } else {
+ $bootstrapperUrl = "https://aka.ms/vs/${Version}/${Channel}/vs_${Edition}.exe"
+ }
$channelUri = "https://aka.ms/vs/${Version}/${Channel}/channel"
$channelId = "VisualStudio.${Version}.Release"
$productId = "Microsoft.VisualStudio.Product.${Edition}"
- $installChannelUri = "https://aka.ms/vs/${Version}/${Channel}/${installchannel}/channel"
+ if (-not [string]::IsNullOrEmpty($InstallChannelUri)) {
+ $installChannelUri = $InstallChannelUri
+ } else {
+ $installChannelUri = $channelUri
+ }
Write-Host "Downloading Bootstrapper ..."
$bootstrapperFilePath = Invoke-DownloadWithRetry $BootstrapperUrl
@@ -51,11 +58,11 @@ Function Install-VisualStudio {
try {
$responseData = @{
"installChannelUri" = $installChannelUri
- "channelUri" = $channelUri
- "channelId" = $channelId
- "productId" = $productId
- "arch" = "x64"
- "add" = $RequiredComponents | ForEach-Object { "$_;includeRecommended" }
+ "channelUri" = $channelUri
+ "channelId" = $channelId
+ "productId" = $productId
+ "arch" = "x64"
+ "add" = $RequiredComponents | ForEach-Object { "$_;includeRecommended" }
}
# Create json file with response data
diff --git a/images/windows/templates/build.windows-2025-vs2026.pkr.hcl b/images/windows/templates/build.windows-2025-vs2026.pkr.hcl
new file mode 100644
index 000000000..2824b79ed
--- /dev/null
+++ b/images/windows/templates/build.windows-2025-vs2026.pkr.hcl
@@ -0,0 +1,270 @@
+build {
+ sources = ["source.azure-arm.image"]
+ name = "windows-2025-vs2026"
+
+ provisioner "powershell" {
+ inline = [
+ "New-Item -Path ${var.image_folder} -ItemType Directory -Force",
+ "New-Item -Path ${var.temp_dir} -ItemType Directory -Force"
+ ]
+ }
+
+ provisioner "file" {
+ destination = "${var.image_folder}\\"
+ sources = [
+ "${path.root}/../assets",
+ "${path.root}/../scripts",
+ "${path.root}/../toolsets"
+ ]
+ }
+
+ provisioner "file" {
+ destination = "${var.image_folder}\\scripts\\docs-gen\\"
+ source = "${path.root}/../../../helpers/software-report-base"
+ }
+
+ provisioner "powershell" {
+ inline = [
+ "Move-Item '${var.image_folder}\\assets\\post-gen' 'C:\\post-generation'",
+ "Remove-Item -Recurse '${var.image_folder}\\assets'",
+ "Move-Item '${var.image_folder}\\scripts\\docs-gen' '${var.image_folder}\\SoftwareReport'",
+ "Move-Item '${var.image_folder}\\scripts\\helpers' '${var.helper_script_folder}\\ImageHelpers'",
+ "New-Item -Type Directory -Path '${var.helper_script_folder}\\TestsHelpers\\'",
+ "Move-Item '${var.image_folder}\\scripts\\tests\\Helpers.psm1' '${var.helper_script_folder}\\TestsHelpers\\TestsHelpers.psm1'",
+ "Move-Item '${var.image_folder}\\scripts\\tests' '${var.image_folder}\\tests'",
+ "Remove-Item -Recurse '${var.image_folder}\\scripts'",
+ "Move-Item '${var.image_folder}\\toolsets\\toolset-2025-vs2026.json' '${var.image_folder}\\toolset.json'",
+ "Remove-Item -Recurse '${var.image_folder}\\toolsets'"
+ ]
+ }
+
+ provisioner "windows-shell" {
+ inline = [
+ "net user ${var.install_user} ${var.install_password} /add /passwordchg:no /passwordreq:yes /active:yes /Y",
+ "net localgroup Administrators ${var.install_user} /add",
+ "winrm set winrm/config/service/auth @{Basic=\"true\"}",
+ "winrm get winrm/config/service/auth"
+ ]
+ }
+
+ provisioner "powershell" {
+ inline = ["if (-not ((net localgroup Administrators) -contains '${var.install_user}')) { exit 1 }"]
+ }
+
+ provisioner "powershell" {
+ elevated_password = "${var.install_password}"
+ elevated_user = "${var.install_user}"
+ inline = ["bcdedit.exe /set TESTSIGNING ON"]
+ }
+
+ provisioner "powershell" {
+ environment_vars = ["IMAGE_VERSION=${var.image_version}", "IMAGE_OS=${var.image_os}", "AGENT_TOOLSDIRECTORY=${var.agent_tools_directory}", "IMAGEDATA_FILE=${var.imagedata_file}", "IMAGE_FOLDER=${var.image_folder}", "TEMP_DIR=${var.temp_dir}", "INSTALL_VS_2026=true"]
+ execution_policy = "unrestricted"
+ scripts = [
+ "${path.root}/../scripts/build/Configure-WindowsDefender.ps1",
+ "${path.root}/../scripts/build/Configure-PowerShell.ps1",
+ "${path.root}/../scripts/build/Install-PowerShellModules.ps1",
+ "${path.root}/../scripts/build/Install-WSL2.ps1",
+ "${path.root}/../scripts/build/Install-WindowsFeatures.ps1",
+ "${path.root}/../scripts/build/Install-Chocolatey.ps1",
+ "${path.root}/../scripts/build/Configure-BaseImage.ps1",
+ "${path.root}/../scripts/build/Configure-ImageDataFile.ps1",
+ "${path.root}/../scripts/build/Configure-SystemEnvironment.ps1",
+ "${path.root}/../scripts/build/Configure-DotnetSecureChannel.ps1"
+ ]
+ }
+
+ provisioner "windows-restart" {
+ check_registry = true
+ restart_check_command = "powershell -command \"& {while ( (Get-WindowsOptionalFeature -Online -FeatureName Containers -ErrorAction SilentlyContinue).State -ne 'Enabled' ) { Start-Sleep 30; Write-Output 'InProgress' }}\""
+ restart_timeout = "10m"
+ }
+
+ provisioner "powershell" {
+ inline = ["Set-Service -Name wlansvc -StartupType Manual", "if ($(Get-Service -Name wlansvc).Status -eq 'Running') { Stop-Service -Name wlansvc}"]
+ }
+
+ provisioner "powershell" {
+ environment_vars = ["IMAGE_FOLDER=${var.image_folder}", "TEMP_DIR=${var.temp_dir}"]
+ scripts = [
+ "${path.root}/../scripts/build/Install-Docker.ps1",
+ "${path.root}/../scripts/build/Install-DockerWinCred.ps1",
+ "${path.root}/../scripts/build/Install-DockerCompose.ps1",
+ "${path.root}/../scripts/build/Install-PowershellCore.ps1",
+ "${path.root}/../scripts/build/Install-WebPlatformInstaller.ps1"
+ ]
+ }
+
+ provisioner "windows-restart" {
+ restart_timeout = "30m"
+ }
+
+ provisioner "powershell" {
+ elevated_password = "${var.install_password}"
+ elevated_user = "${var.install_user}"
+ environment_vars = ["IMAGE_FOLDER=${var.image_folder}", "TEMP_DIR=${var.temp_dir}", "INSTALL_VS_2026=true"]
+ scripts = [
+ "${path.root}/../scripts/build/Install-VisualStudio.ps1",
+ "${path.root}/../scripts/build/Install-KubernetesTools.ps1"
+ ]
+ valid_exit_codes = [0, 3010]
+ }
+
+ provisioner "windows-restart" {
+ check_registry = true
+ restart_timeout = "10m"
+ }
+
+ provisioner "powershell" {
+ pause_before = "2m0s"
+ environment_vars = ["IMAGE_FOLDER=${var.image_folder}", "TEMP_DIR=${var.temp_dir}"]
+ scripts = [
+ "${path.root}/../scripts/build/Install-Wix.ps1",
+ "${path.root}/../scripts/build/Install-VSExtensions.ps1",
+ "${path.root}/../scripts/build/Install-AzureCli.ps1",
+ "${path.root}/../scripts/build/Install-AzureDevOpsCli.ps1",
+ "${path.root}/../scripts/build/Install-ChocolateyPackages.ps1",
+ "${path.root}/../scripts/build/Install-JavaTools.ps1",
+ "${path.root}/../scripts/build/Install-Kotlin.ps1",
+ "${path.root}/../scripts/build/Install-OpenSSL.ps1"
+ ]
+ }
+
+ provisioner "powershell" {
+ execution_policy = "remotesigned"
+ environment_vars = ["IMAGE_FOLDER=${var.image_folder}", "TEMP_DIR=${var.temp_dir}"]
+ scripts = ["${path.root}/../scripts/build/Install-ServiceFabricSDK.ps1"]
+ }
+
+ provisioner "windows-restart" {
+ restart_timeout = "10m"
+ }
+
+ provisioner "powershell" {
+ environment_vars = ["IMAGE_FOLDER=${var.image_folder}", "TEMP_DIR=${var.temp_dir}"]
+ scripts = [
+ "${path.root}/../scripts/build/Install-ActionsCache.ps1",
+ "${path.root}/../scripts/build/Install-Ruby.ps1",
+ "${path.root}/../scripts/build/Install-PyPy.ps1",
+ "${path.root}/../scripts/build/Install-Toolset.ps1",
+ "${path.root}/../scripts/build/Configure-Toolset.ps1",
+ "${path.root}/../scripts/build/Install-NodeJS.ps1",
+ "${path.root}/../scripts/build/Install-AndroidSDK.ps1",
+ "${path.root}/../scripts/build/Install-PowershellAzModules.ps1",
+ "${path.root}/../scripts/build/Install-Pipx.ps1",
+ "${path.root}/../scripts/build/Install-Git.ps1",
+ "${path.root}/../scripts/build/Install-GitHub-CLI.ps1",
+ "${path.root}/../scripts/build/Install-PHP.ps1",
+ "${path.root}/../scripts/build/Install-Rust.ps1",
+ "${path.root}/../scripts/build/Install-Sbt.ps1",
+ "${path.root}/../scripts/build/Install-Chrome.ps1",
+ "${path.root}/../scripts/build/Install-EdgeDriver.ps1",
+ "${path.root}/../scripts/build/Install-Firefox.ps1",
+ "${path.root}/../scripts/build/Install-Selenium.ps1",
+ "${path.root}/../scripts/build/Install-IEWebDriver.ps1",
+ "${path.root}/../scripts/build/Install-Apache.ps1",
+ "${path.root}/../scripts/build/Install-Nginx.ps1",
+ "${path.root}/../scripts/build/Install-Msys2.ps1",
+ "${path.root}/../scripts/build/Install-WinAppDriver.ps1",
+ "${path.root}/../scripts/build/Install-R.ps1",
+ "${path.root}/../scripts/build/Install-AWSTools.ps1",
+ "${path.root}/../scripts/build/Install-DACFx.ps1",
+ "${path.root}/../scripts/build/Install-MysqlCli.ps1",
+ "${path.root}/../scripts/build/Install-SQLPowerShellTools.ps1",
+ "${path.root}/../scripts/build/Install-SQLOLEDBDriver.ps1",
+ "${path.root}/../scripts/build/Install-DotnetSDK.ps1",
+ "${path.root}/../scripts/build/Install-Mingw64.ps1",
+ "${path.root}/../scripts/build/Install-Haskell.ps1",
+ "${path.root}/../scripts/build/Install-Stack.ps1",
+ "${path.root}/../scripts/build/Install-Miniconda.ps1",
+ "${path.root}/../scripts/build/Install-AzureCosmosDbEmulator.ps1",
+ "${path.root}/../scripts/build/Install-Zstd.ps1",
+ "${path.root}/../scripts/build/Install-Vcpkg.ps1",
+ "${path.root}/../scripts/build/Install-Bazel.ps1",
+ "${path.root}/../scripts/build/Install-RootCA.ps1",
+ "${path.root}/../scripts/build/Install-MongoDB.ps1",
+ "${path.root}/../scripts/build/Install-CodeQLBundle.ps1",
+ "${path.root}/../scripts/build/Configure-Diagnostics.ps1"
+ ]
+ }
+
+ provisioner "powershell" {
+ elevated_password = "${var.install_password}"
+ elevated_user = "${var.install_user}"
+ environment_vars = ["IMAGE_FOLDER=${var.image_folder}", "TEMP_DIR=${var.temp_dir}"]
+ scripts = [
+ "${path.root}/../scripts/build/Install-PostgreSQL.ps1",
+ "${path.root}/../scripts/build/Install-WindowsUpdates.ps1",
+ "${path.root}/../scripts/build/Configure-DynamicPort.ps1",
+ "${path.root}/../scripts/build/Configure-GDIProcessHandleQuota.ps1",
+ "${path.root}/../scripts/build/Configure-Shell.ps1",
+ "${path.root}/../scripts/build/Configure-DeveloperMode.ps1",
+ "${path.root}/../scripts/build/Install-LLVM.ps1"
+ ]
+ }
+
+ provisioner "windows-restart" {
+ check_registry = true
+ restart_check_command = "powershell -command \"& {if ((-not (Get-Process TiWorker.exe -ErrorAction SilentlyContinue)) -and (-not [System.Environment]::HasShutdownStarted) ) { Write-Output 'Restart complete' }}\""
+ restart_timeout = "30m"
+ }
+
+ provisioner "powershell" {
+ pause_before = "2m0s"
+ environment_vars = ["IMAGE_FOLDER=${var.image_folder}", "TEMP_DIR=${var.temp_dir}"]
+ scripts = [
+ "${path.root}/../scripts/build/Install-WindowsUpdatesAfterReboot.ps1",
+ "${path.root}/../scripts/build/Invoke-Cleanup.ps1",
+ "${path.root}/../scripts/tests/RunAll-Tests.ps1"
+ ]
+ }
+
+ provisioner "powershell" {
+ inline = ["if (-not (Test-Path ${var.image_folder}\\tests\\testResults.xml)) { throw '${var.image_folder}\\tests\\testResults.xml not found' }"]
+ }
+
+ provisioner "powershell" {
+ environment_vars = ["IMAGE_VERSION=${var.image_version}", "IMAGE_FOLDER=${var.image_folder}"]
+ inline = ["pwsh -File '${var.image_folder}\\SoftwareReport\\Generate-SoftwareReport.ps1'"]
+ }
+
+ provisioner "powershell" {
+ inline = ["if (-not (Test-Path C:\\software-report.md)) { throw 'C:\\software-report.md not found' }", "if (-not (Test-Path C:\\software-report.json)) { throw 'C:\\software-report.json not found' }"]
+ }
+
+ provisioner "file" {
+ destination = "${path.root}/../Windows2025-VS2026-Readme.md"
+ direction = "download"
+ source = "C:\\software-report.md"
+ }
+
+ provisioner "file" {
+ destination = "${path.root}/../software-report.json"
+ direction = "download"
+ source = "C:\\software-report.json"
+ }
+
+ provisioner "powershell" {
+ environment_vars = ["INSTALL_USER=${var.install_user}"]
+ scripts = [
+ "${path.root}/../scripts/build/Install-NativeImages.ps1",
+ "${path.root}/../scripts/build/Configure-System.ps1",
+ "${path.root}/../scripts/build/Configure-User.ps1",
+ "${path.root}/../scripts/build/Post-Build-Validation.ps1"
+ ]
+ skip_clean = true
+ }
+
+ provisioner "windows-restart" {
+ restart_timeout = "10m"
+ }
+
+ provisioner "powershell" {
+ inline = [
+ "if( Test-Path $env:SystemRoot\\System32\\Sysprep\\unattend.xml ){ rm $env:SystemRoot\\System32\\Sysprep\\unattend.xml -Force}",
+ "& $env:SystemRoot\\System32\\Sysprep\\Sysprep.exe /oobe /generalize /mode:vm /quiet /quit",
+ "while($true) { $imageState = Get-ItemProperty HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Setup\\State | Select ImageState; if($imageState.ImageState -ne 'IMAGE_STATE_GENERALIZE_RESEAL_TO_OOBE') { Write-Output $imageState.ImageState; Start-Sleep -s 10 } else { break } }"
+ ]
+ }
+
+}
diff --git a/images/windows/templates/build.windows-2025.pkr.hcl b/images/windows/templates/build.windows-2025.pkr.hcl
index 97d7c5e6e..59e45e672 100644
--- a/images/windows/templates/build.windows-2025.pkr.hcl
+++ b/images/windows/templates/build.windows-2025.pkr.hcl
@@ -51,7 +51,7 @@ build {
inline = ["if (-not ((net localgroup Administrators) -contains '${var.install_user}')) { exit 1 }"]
}
-provisioner "powershell" {
+ provisioner "powershell" {
elevated_password = "${var.install_password}"
elevated_user = "${var.install_user}"
inline = ["bcdedit.exe /set TESTSIGNING ON"]
diff --git a/images/windows/templates/locals.windows.pkr.hcl b/images/windows/templates/locals.windows.pkr.hcl
index e5250f0ba..6cca76993 100644
--- a/images/windows/templates/locals.windows.pkr.hcl
+++ b/images/windows/templates/locals.windows.pkr.hcl
@@ -7,6 +7,10 @@ locals {
"win25" = {
source_image_marketplace_sku = "MicrosoftWindowsServer:WindowsServer:2025-Datacenter-g2"
os_disk_size_gb = 150
+ },
+ "win25-vs2026" = {
+ source_image_marketplace_sku = "MicrosoftWindowsServer:WindowsServer:2025-Datacenter-g2"
+ os_disk_size_gb = 150
}
}
diff --git a/images/windows/toolsets/toolset-2022.json b/images/windows/toolsets/toolset-2022.json
index 07ec59da5..fac15dd6e 100644
--- a/images/windows/toolsets/toolset-2022.json
+++ b/images/windows/toolsets/toolset-2022.json
@@ -147,7 +147,7 @@
"subversion" : "17",
"edition" : "Enterprise",
"channel": "release",
- "installChannel": "",
+ "installChannelUri": "",
"workloads": [
"Component.Dotfuscator",
"Component.Linux.CMake",
diff --git a/images/windows/toolsets/toolset-2025-vs2026.json b/images/windows/toolsets/toolset-2025-vs2026.json
new file mode 100644
index 000000000..e2815bb18
--- /dev/null
+++ b/images/windows/toolsets/toolset-2025-vs2026.json
@@ -0,0 +1,315 @@
+{
+ "toolcache": [
+ {
+ "name": "Ruby",
+ "arch": "x64",
+ "platform" : "win32",
+ "versions": [
+ "3.2",
+ "3.3",
+ "3.4",
+ "4.0"
+ ],
+ "default": "3.3"
+ },
+ {
+ "name": "Python",
+ "url" : "https://raw.githubusercontent.com/actions/python-versions/main/versions-manifest.json",
+ "arch": "x64",
+ "platform" : "win32",
+ "versions": [
+ "3.10.*",
+ "3.11.*",
+ "3.12.*",
+ "3.13.*",
+ "3.14.*"
+ ],
+ "default": "3.12.*"
+ },
+ {
+ "name": "PyPy",
+ "arch": "x86",
+ "platform" : "win64",
+ "versions": [
+ "3.9",
+ "3.10"
+ ]
+ },
+ {
+ "name": "node",
+ "url" : "https://raw.githubusercontent.com/actions/node-versions/main/versions-manifest.json",
+ "arch": "x64",
+ "platform" : "win32",
+ "versions": [
+ "20.*",
+ "22.*",
+ "24.*"
+ ]
+ },
+ {
+ "name": "go",
+ "url" : "https://raw.githubusercontent.com/actions/go-versions/main/versions-manifest.json",
+ "arch": "x64",
+ "platform" : "win32",
+ "versions": [
+ "1.22.*",
+ "1.23.*",
+ "1.24.*",
+ "1.25.*"
+ ],
+ "default": "1.24.*"
+ }
+ ],
+ "powershellModules": [
+ { "name": "DockerMsftProvider" },
+ { "name": "MarkdownPS" },
+ { "name": "Pester" },
+ { "name": "PowerShellGet" },
+ { "name": "PSScriptAnalyzer" },
+ { "name": "PSWindowsUpdate" },
+ { "name": "SqlServer", "versions": [ "22.3.0" ] },
+ { "name": "VSSetup" },
+ { "name": "Microsoft.Graph" },
+ {"name": "AWSPowershell"}
+ ],
+ "azureModules": [
+ {
+ "name": "az",
+ "versions": [
+ "14.6.0"
+ ]
+ }
+ ],
+ "java": {
+ "default": "17",
+ "versions": [ "8", "11", "17", "21", "25"]
+ },
+ "android": {
+ "commandline_tools_url": "https://dl.google.com/android/repository/commandlinetools-win-13114758_latest.zip",
+ "hash": "98B565CB657B012DAE6794CEFC0F66AE1EFB4690C699B78A614B4A6A3505B003",
+ "platform_min_version": "34",
+ "build_tools_min_version": "34.0.0",
+ "extras": [
+ "android;m2repository",
+ "google;m2repository",
+ "google;google_play_services"
+ ],
+ "addons": [],
+ "additional_tools": [
+ "cmake;3.30.5",
+ "cmake;3.31.5",
+ "cmake;4.1.2"
+ ],
+ "ndk": {
+ "default": "27",
+ "versions": [
+ "27", "28", "29"
+ ]
+ }
+ },
+ "mingw": {
+ "version": "15.*",
+ "runtime": "ucrt"
+ },
+ "MsysPackages": {
+ "msys2": [],
+ "mingw": []
+ },
+ "windowsFeatures": [
+ { "name": "Containers" },
+ { "name": "Microsoft-Windows-Subsystem-Linux", "optionalFeature": true },
+ { "name": "VirtualMachinePlatform", "optionalFeature": true },
+ { "name": "NET-Framework-45-Features", "includeAllSubFeatures": true },
+ { "name": "Client-ProjFS", "optionalFeature": true },
+ { "name": "NET-Framework-Features", "includeAllSubFeatures": true },
+ { "name": "Hyper-V", "includeAllSubFeatures": true },
+ { "name": "HypervisorPlatform", "optionalFeature": true },
+ { "name": "Hyper-V-PowerShell" },
+ { "name": "Wireless-Networking" }
+ ],
+ "visualStudio": {
+ "version" : "2026",
+ "subversion" : "18",
+ "edition" : "Enterprise",
+ "channel": "stable",
+ "installChannelUri": "",
+ "workloads": [
+ "Component.Linux.CMake",
+ "Component.UnityEngine.x64",
+ "Microsoft.Component.VC.Runtime.UCRTSDK",
+ "Microsoft.Net.Component.4.8.1.SDK",
+ "Microsoft.Net.Component.4.8.1.TargetingPack",
+ "Microsoft.VisualStudio.Component.AspNet45",
+ "Microsoft.VisualStudio.Component.Debugger.JustInTime",
+ "Microsoft.VisualStudio.Component.EntityFramework",
+ "Microsoft.VisualStudio.Component.DslTools",
+ "Microsoft.VisualStudio.Component.LinqToSql",
+ "Microsoft.VisualStudio.Component.SQL.SSDT",
+ "Microsoft.VisualStudio.Component.Sharepoint.Tools",
+ "Microsoft.VisualStudio.Component.PortableLibrary",
+ "Microsoft.VisualStudio.Component.TeamOffice",
+ "Microsoft.VisualStudio.Component.UWP.VC.ARM64",
+ "Microsoft.VisualStudio.Component.UWP.VC.ARM64EC",
+ "Microsoft.VisualStudio.Component.VC.CLI.Support",
+ "Microsoft.VisualStudio.Component.VC.CMake.Project",
+ "Microsoft.VisualStudio.Component.VC.DiagnosticTools",
+ "Microsoft.VisualStudio.Component.VC.Llvm.Clang",
+ "Microsoft.VisualStudio.Component.VC.Llvm.ClangToolset",
+ "Microsoft.VisualStudio.Component.VC.TestAdapterForBoostTest",
+ "Microsoft.VisualStudio.Component.VC.TestAdapterForGoogleTest",
+ "Microsoft.VisualStudio.Component.VC.Tools.ARM64",
+ "Microsoft.VisualStudio.Component.VC.Tools.ARM64EC",
+ "Microsoft.VisualStudio.Component.VC.Tools.x86.x64",
+ "Microsoft.VisualStudio.Component.VC.Redist.MSM",
+ "Microsoft.VisualStudio.Component.VC.Runtimes.ARM64.Spectre",
+ "Microsoft.VisualStudio.Component.VC.Runtimes.ARM64EC.Spectre",
+ "Microsoft.VisualStudio.Component.VC.Runtimes.x86.x64.Spectre",
+ "Microsoft.VisualStudio.Component.VC.MFC.ARM64",
+ "Microsoft.VisualStudio.Component.VC.MFC.ARM64.Spectre",
+ "Microsoft.VisualStudio.Component.VC.ATLMFC",
+ "Microsoft.VisualStudio.Component.VC.ATLMFC.Spectre",
+ "Microsoft.VisualStudio.Component.VC.ATL",
+ "Microsoft.VisualStudio.Component.VC.ATL.Spectre",
+ "Microsoft.VisualStudio.Component.VC.ATL.ARM64",
+ "Microsoft.VisualStudio.Component.VC.ATL.ARM64.Spectre",
+ "Microsoft.VisualStudio.Component.VC.ASAN",
+ "Microsoft.VisualStudio.Component.VC.14.44.17.14.x86.x64",
+ "Microsoft.VisualStudio.Component.Windows11SDK.26100",
+ "Microsoft.VisualStudio.Component.Workflow",
+ "Microsoft.VisualStudio.ComponentGroup.NativeDesktop.Llvm.Clang",
+ "Microsoft.VisualStudio.ComponentGroup.UWP.VC.v142",
+ "Microsoft.VisualStudio.ComponentGroup.Web.CloudTools",
+ "Microsoft.VisualStudio.Workload.Azure",
+ "Microsoft.VisualStudio.Workload.Data",
+ "Microsoft.VisualStudio.Workload.ManagedDesktop",
+ "Microsoft.VisualStudio.Workload.ManagedGame",
+ "Microsoft.VisualStudio.Workload.NativeCrossPlat",
+ "Microsoft.VisualStudio.Workload.NativeDesktop",
+ "Microsoft.VisualStudio.Workload.NativeGame",
+ "Microsoft.VisualStudio.Workload.NativeMobile",
+ "Microsoft.VisualStudio.Workload.NetCrossPlat",
+ "Microsoft.VisualStudio.Workload.NetWeb",
+ "Microsoft.VisualStudio.Workload.Node",
+ "Microsoft.VisualStudio.Workload.Office",
+ "Microsoft.VisualStudio.Workload.Python",
+ "Microsoft.VisualStudio.Workload.Universal",
+ "Microsoft.VisualStudio.Workload.VisualStudioExtension",
+ "Component.MDD.Linux",
+ "Component.Microsoft.Windows.DriverKit",
+ "wasm.tools",
+ "Microsoft.Component.MSBuild"
+ ],
+ "vsix": [
+ "SSIS.MicrosoftDataToolsIntegrationServices",
+ "VisualStudioClient.MicrosoftVisualStudio2022InstallerProjects",
+ "WixToolset.WixToolsetVisualStudio2022Extension",
+ "ProBITools.MicrosoftReportProjectsforVisualStudio2022",
+ "ProBITools.MicrosoftAnalysisServicesModelingProjects2022"
+ ]
+ },
+ "docker": {
+ "images": [],
+ "components": {
+ "docker": "27.5.1",
+ "compose": "2.32.2"
+ }
+ },
+ "pipx": [
+ {
+ "package": "yamllint",
+ "cmd": "yamllint --version"
+ }
+ ],
+ "selenium": {
+ "version": "4"
+ },
+ "npm": {
+ "global_packages": [
+ { "name": "yarn", "test": "yarn --version" },
+ { "name": "newman", "test": "newman --version" },
+ { "name": "lerna", "test": "lerna --version" },
+ { "name": "gulp-cli", "test": "gulp --version" },
+ { "name": "grunt-cli", "test": "grunt --version" }
+ ]
+ },
+ "serviceFabric": {
+ "runtime": {
+ "version": "10.1.2493.9590",
+ "checksum": "09C63A971BACDE338282C73B3C9174BED9AAD53E1D3A1B73D44515852C9C00CF"
+ },
+ "sdk": {
+ "version": "7.1.2493",
+ "checksum": "0CB1084156C75CF5075EA91ABA330CF10B58648B8E036C9C2F286805263C497F"
+ }
+ },
+ "dotnet": {
+ "versions": [
+ "8.0",
+ "9.0",
+ "10.0"
+ ],
+ "tools": [
+ { "name": "nbgv", "test": "nbgv --version", "getversion": "nbgv --version" }
+ ],
+ "warmup": false
+ },
+ "choco": {
+ "common_packages": [
+ { "name": "7zip.install" },
+ { "name": "aria2" },
+ { "name": "azcopy10" },
+ { "name": "Bicep" },
+ { "name": "innosetup" },
+ { "name": "jq" },
+ { "name": "NuGet.CommandLine" },
+ { "name": "packer" },
+ { "name": "pulumi" },
+ { "name": "swig" },
+ { "name": "vswhere" },
+ {
+ "name": "julia",
+ "args": [ "--ia", "/DIR=C:\\Julia" ]
+ },
+ {
+ "name": "cmake.install",
+ "args": [ "--installargs", "ADD_CMAKE_TO_PATH=\"System\"" ]
+ },
+ {
+ "name": "strawberryperl" ,
+ "args": [ "--version", "5.42.0.1" ]
+ },
+ { "name": "imagemagick" },
+ { "name": "ninja" }
+ ]
+ },
+ "node": {
+ "default": "22.*"
+ },
+ "maven": {
+ "version": "3.9"
+ },
+ "mysql": {
+ "version": "8.0"
+ },
+ "mongodb": {
+ "version": "7.0"
+ },
+ "llvm": {
+ "version": "20"
+ },
+ "php": {
+ "version": "8.5"
+ },
+ "postgresql": {
+ "version": "17"
+ },
+ "kotlin": {
+ "version": "latest"
+ },
+ "openssl": {
+ "version": "3.*"
+ },
+ "pwsh": {
+ "version": "7.4"
+ }
+}
diff --git a/images/windows/toolsets/toolset-2025.json b/images/windows/toolsets/toolset-2025.json
index a464978ca..513235353 100644
--- a/images/windows/toolsets/toolset-2025.json
+++ b/images/windows/toolsets/toolset-2025.json
@@ -132,7 +132,7 @@
"subversion" : "17",
"edition" : "Enterprise",
"channel": "release",
- "installChannel": "",
+ "installChannelUri": "",
"workloads": [
"Component.Dotfuscator",
"Component.Linux.CMake",