PortValhalla/scripts/Windows/Software/VisualStudio/Manage.ps1

56 lines
2.3 KiB
PowerShell
Raw Normal View History

2023-07-12 20:37:31 +00:00
#!/bin/pwsh
. "$PSScriptRoot/../../Scripts/KnownFolders.ps1";
. "$PSScriptRoot/../../Scripts/Context.ps1";
2023-06-08 00:28:33 +00:00
$null = New-Module {
$programs32Path = $(Get-KnownFolder "ProgramFilesX86").Path;
$vsInstaller = "$programs32Path/Microsoft Visual Studio/Installer/vs_installer.exe";
2023-06-08 00:28:33 +00:00
[System.Tuple[string, string, string][]]$versions = @(
2024-03-24 16:34:25 +00:00
[System.Tuple]::Create("visualstudio2019enterprise", "VisualStudio.16.Release", "Microsoft.VisualStudio.Product.Enterprise"),
[System.Tuple]::Create("visualstudio2019community", "VisualStudio.16.Release", "Microsoft.VisualStudio.Product.Community"),
[System.Tuple]::Create("visualstudio2022enterprise", "VisualStudio.17.Release", "Microsoft.VisualStudio.Product.Enterprise"),
[System.Tuple]::Create("visualstudio2022community", "VisualStudio.17.Release", "Microsoft.VisualStudio.Product.Community"));
2023-06-08 00:28:33 +00:00
function Get-ConfigPath([Context] $context, [string] $packageName) {
return Join-Path $($context.BackupRoot()) "Visual Studio" $packageName ".vsconfig";
2023-06-08 00:28:33 +00:00
}
2023-06-30 10:19:54 +00:00
function Backup-VisualStudio([Context] $context) {
Write-Host "Backing up Visual Studio";
2023-06-08 00:28:33 +00:00
foreach ($version in $versions) {
Write-Information "Backing up $($version[1]): $($version[2])";
2023-06-08 00:28:33 +00:00
$configPath = Get-ConfigPath $context $version[0];
$null = New-Item -Force -ItemType Directory "$(Split-Path -Parent $configPath)";
2023-06-08 00:28:33 +00:00
Start-Process -FilePath "$vsInstaller" `
-Wait `
-ArgumentList @(
"export",
"--channelId", "$($version[1])",
"--productId", "$($version[2])",
2023-08-01 01:48:15 +00:00
"--config", "`"$configPath`"",
2023-06-08 00:28:33 +00:00
"--quiet");
}
}
function Restore-VisualStudio([Context] $context) {
Write-Host "Restoring Visual Studio";
foreach ($version in $versions) {
$configFileName = Get-ConfigPath $context $version[0];
if (Test-Path $configFileName) {
Write-Information "Restoring $($version[1]): $($version[2])";
$arguments = "--config `"$configFileName`"";
choco install -y $version[0] --params "$arguments";
$context.RemoveDesktopIcon("CocosCreator*");
$context.RemoveDesktopIcon("Unity Hub*");
}
}
}
}