-
-
Notifications
You must be signed in to change notification settings - Fork 101
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
WindowsPB : Add Visual Studio 2022 installation (#3172)
* Add VS2022 installation * Add checksum verification Add checksum verification for VS2019 layout * Revert "Add checksum verification" This reverts commit f5d2eb0. * Update ansible/playbooks/AdoptOpenJDK_Windows_Playbook/roles/MSVS_2022/tasks/main.yml Co-authored-by: George Adams <george.adams@microsoft.com> * Update ansible/playbooks/AdoptOpenJDK_Windows_Playbook/roles/MSVS_2022/tasks/main.yml Co-authored-by: George Adams <george.adams@microsoft.com> * Update ansible/playbooks/AdoptOpenJDK_Windows_Playbook/roles/MSVS_2022/tasks/main.yml Co-authored-by: George Adams <george.adams@microsoft.com> * Fix parameters for updated VS2017 installer * Only install vs2022 on newer windows Include msvs_2022 Include msvs_2022 restore vs2017 params Update checksum for new vs2022 layout include dll registration for vs2022 layout install Fix MSVS_2022 logs Fix tags Fix DLL Registration Ensure install check is run Run check Fix installation logic Fix vs2022 check Fix conditionals Fix installation bugs * Update ansible/playbooks/AdoptOpenJDK_Windows_Playbook/main.yml Co-authored-by: George Adams <george.adams@microsoft.com> --------- Co-authored-by: George Adams <george.adams@microsoft.com>
- Loading branch information
1 parent
f081d33
commit 6dff77f
Showing
2 changed files
with
143 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
141 changes: 141 additions & 0 deletions
141
ansible/playbooks/AdoptOpenJDK_Windows_Playbook/roles/MSVS_2022/tasks/main.yml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,141 @@ | ||
--- | ||
################################ | ||
# Visual Studio Community 2022 # | ||
################################ | ||
|
||
- name: Check the Windows version | ||
win_shell: | | ||
Get-WmiObject -Class Win32_OperatingSystem | Select-Object -ExpandProperty Version | ||
register: windows_version | ||
|
||
- name: Test if VS 2022 is installed | ||
win_stat: | ||
path: 'C:\Program Files\Microsoft Visual Studio\2022\Community' | ||
register: vs2022_installed | ||
tags: adoptopenjdk | ||
|
||
- name: Transfer VS2022 Layout File | ||
win_copy: | ||
src: /Vendor_Files/windows/vs_layout_2022.zip | ||
dest: C:\TEMP\VS2022_Layout.zip | ||
remote_src: no | ||
when: (not vs2022_installed.stat.exists) and (windows_version.stdout_lines[0] | regex_search('^(10\.|11\.|2016|2019|2022)')) | ||
failed_when: false | ||
tags: adoptopenjdk | ||
|
||
# Check For The Transferred File & Exit If AdoptOpenJDK Run | ||
- name: Check If Layout Has Transferred | ||
win_stat: | ||
path: 'C:\TEMP\VS2022_Layout.zip' | ||
register: vs2022_layout_ready | ||
when: windows_version.stdout_lines[0] | regex_search('^(10\.|11\.|2016|2019|2022)') | ||
tags: adoptopenjdk | ||
|
||
- name: Get SHA256 checksum of the file | ||
win_shell: | | ||
$filePath = "C:\TEMP\VS2022_Layout.zip" | ||
$expectedChecksum = "29567E33B5361E4BAD36DFDFF83FEB3DDFDF0518122237E8273F0FA4E11E8B74" | ||
$actualChecksum = Get-FileHash -Path $filePath -Algorithm SHA256 | Select-Object -ExpandProperty Hash | ||
if ($actualChecksum -ne $expectedChecksum) { | ||
Write-Output "Checksum mismatch" | ||
Write-Output "Actual Checksum: $actualChecksum" | ||
Write-Output "Expect Checksum: $expectedChecksum" | ||
exit 1 | ||
} | ||
register: checksum_result | ||
when: (vs2022_layout_ready.stat.exists ) and (windows_version.stdout_lines[0] | regex_search('^(10\.|11\.|2016|2019|2022)')) | ||
changed_when: false | ||
tags: adoptopenjdk | ||
|
||
# Exit Play If No VS2022 Layout & AdoptOpenJDK = true | ||
# This Is Defined Behaviour - This Shouldnt Occur But If It Does, Its Captured Here | ||
- name: Exit With Error When No Layout Within AdoptOpenJDK | ||
fail: | ||
msg: "The VS2022 Layout File Appears To Be Missing From Vendor_Files" | ||
when: (not vs2022_layout_ready.stat.exists) and (not vs2022_installed.stat.exists) | ||
tags: adoptopenjdk | ||
|
||
# Install VS2022 From Layout For AdoptOpenJDK | ||
- name: Unzip VS2022 Layout | ||
win_unzip: | ||
src: C:\TEMP\VS2022_Layout.zip | ||
dest: C:\TEMP | ||
when: (vs2022_layout_ready.stat.exists) and (not vs2022_installed.stat.exists) and (windows_version.stdout_lines[0] | regex_search('^(10\.|11\.|2016|2019|2022)')) | ||
tags: adoptopenjdk | ||
|
||
- name: Run Visual Studio 2022 Installer From Layout | ||
win_shell: | | ||
Start-Process -Wait -FilePath 'C:\temp\VSLayout2022\vs_community.exe' -ArgumentList '--nocache --quiet --norestart --wait --noweb --add Microsoft.VisualStudio.Workload.NativeDesktop --includeRecommended --includeOptional --add Microsoft.VisualStudio.Component.VC.Tools.x86.x64 --add Microsoft.VisualStudio.Component.VC.Tools.ARM64 --add Microsoft.VisualStudio.Component.VC.ATL.ARM64 --add Microsoft.VisualStudio.Component.VC.MFC.ARM64' | ||
args: | ||
executable: powershell | ||
when: (vs2022_layout_ready.stat.exists) and (not vs2022_installed.stat.exists) and (windows_version.stdout_lines[0] | regex_search('^(10\.|11\.|2016|2019|2022)')) | ||
tags: adoptopenjdk | ||
|
||
- name: Register Visual Studio Community 2022 DIA SDK shared libraries | ||
win_command: 'regsvr32 /s "{{ item }}"' | ||
with_items: | ||
- C:\Program Files\Microsoft Visual Studio\2022\Community\DIA SDK\bin\msdia140.dll | ||
- C:\Program Files\Microsoft Visual Studio\2022\Community\DIA SDK\bin\amd64\msdia140.dll | ||
when: (not vs2022_installed.stat.exists) and (windows_version.stdout_lines[0] | regex_search('^(10\.|11\.|2016|2019|2022)')) | ||
tags: adoptopenjdk | ||
|
||
- name: Remove VS2022 Zip File | ||
win_file: | ||
path: C:\TEMP\VS2022_Layout.zip | ||
state: absent | ||
when: (not vs2022_installed.stat.exists) and (windows_version.stdout_lines[0] | regex_search('^(10\.|11\.|2016|2019|2022)')) | ||
tags: adoptopenjdk | ||
|
||
- name: Remove VS2022 Unzipped Layout | ||
win_file: | ||
path: C:\temp\VSLayout2022 | ||
state: absent | ||
when: (not vs2022_installed.stat.exists) and (windows_version.stdout_lines[0] | regex_search('^(10\.|11\.|2016|2019|2022)')) | ||
tags: adoptopenjdk | ||
|
||
- name: Test if VS 2022 is installed(non adopt) | ||
win_stat: | ||
path: 'C:\Program Files\Microsoft Visual Studio\2022\Community' | ||
register: vs2022_installed | ||
|
||
# Download & Install VS2022 When No Layout & Not AdoptOpenJDK | ||
# This is the target that you're redirected to when you go to https://aka.ms/vs/17/release/vs_community.exe | ||
- name: Download Visual Studio Community 2022 | ||
win_get_url: | ||
url: 'https://aka.ms/vs/17/release/vs_Community.exe' | ||
checksum: ef3e389f222335676581eddbe7ddec01147969c1d42e19b9dade815c3c0f04b1 | ||
checksum_algorithm: sha256 | ||
dest: 'C:\temp\vs_community22.exe' | ||
force: no | ||
when: (not vs2022_installed.stat.exists) and (windows_version.stdout_lines[0] | regex_search('^(10\.|11\.|2016|2019|2022)')) | ||
|
||
- name: Run Visual Studio 2022 Installer From Download | ||
win_shell: | | ||
Start-Process -Wait -FilePath 'C:\temp\vs_community22.exe' -ArgumentList '--wait --add Microsoft.VisualStudio.Workload.NativeDesktop --includeRecommended --includeOptional --quiet --norestart' | ||
args: | ||
executable: powershell | ||
when: (not vs2022_installed.stat.exists) and (windows_version.stdout_lines[0] | regex_search('^(10\.|11\.|2016|2019|2022)')) | ||
register: vs2022_error | ||
failed_when: vs2022_error.rc != 0 and vs2022_error.rc != 3010 | ||
|
||
- name: Install ARM64 components | ||
win_shell: Start-Process -FilePath 'C:\temp\vs_community22.exe' -Wait -NoNewWindow -ArgumentList | ||
'modify --installPath "C:\Program Files (x86)\Microsoft Visual Studio\2022\Community" --quiet | ||
--add Microsoft.VisualStudio.Component.VC.Tools.ARM64 --add Microsoft.VisualStudio.Component.VC.ATL.ARM64 --add Microsoft.VisualStudio.Component.VC.MFC.ARM64' | ||
when: (not vs2022_installed.stat.exists) and (windows_version.stdout_lines[0] | regex_search('^(10\.|11\.|2016|2019|2022)')) | ||
|
||
- name: Register Visual Studio Community 2022 DIA SDK shared libraries | ||
win_command: 'regsvr32 /s "{{ item }}"' | ||
with_items: | ||
- C:\Program Files\Microsoft Visual Studio\2022\Community\DIA SDK\bin\msdia140.dll | ||
- C:\Program Files\Microsoft Visual Studio\2022\Community\DIA SDK\bin\amd64\msdia140.dll | ||
when: (not vs2022_installed.stat.exists) and (windows_version.stdout_lines[0] | regex_search('^(10\.|11\.|2016|2019|2022)')) | ||
|
||
- name: Reboot machine after Visual Studio installation | ||
win_reboot: | ||
reboot_timeout: 1800 | ||
shutdown_timeout: 1800 | ||
when: (not vs2022_installed.stat.exists) and (windows_version.stdout_lines[0] | regex_search('^(10\.|11\.|2016|2019|2022)')) | ||
tags: | ||
- reboot |