diff --git a/scripts/Windows/Software/VisualStudio/Manage.ps1 b/scripts/Windows/Software/VisualStudio/Manage.ps1 new file mode 100644 index 00000000..ff74edaf --- /dev/null +++ b/scripts/Windows/Software/VisualStudio/Manage.ps1 @@ -0,0 +1,27 @@ +Import-Module "KnownFolders"; +. "$PSScriptRoot/../../Scripts/Context.ps1"; +$programs32Path = $(Get-KnownFolder "ProgramFilesX86").Path; +$vsInstaller = "$programs32Path/Microsoft Visual Studio/Installer/vs_installer.exe"; + +[System.Tuple[string, string, string][]]$versions = @( + [System.Tuple]::Create("visualstudio2019enterprise", "VisualStudio.16.Release", "Microsoft.VisualStudio.Product.Enterprise")); + +function Get-ConfigPath([Context] $context, [string] $packageName) { + return Join-Path $($context.BackupRoot()) $packageName ".vsconfig"; +} + +function Invoke-BackupVisualStudio([Context] $context) { + foreach ($version in $versions) { + $configPath = Get-ConfigPath $context $version[0]; + $null = New-Item -Force -ItemType Directory "$(Split-Path -Parent $configPath)"; + + Start-Process -FilePath "$vsInstaller" ` + -Wait ` + -ArgumentList @( + "export", + "--channelId", "$($version[1])", + "--productId", "$($version[2])", + "--config", "$configPath", + "--quiet"); + } +}