Add a backup script for Visual Studio
This commit is contained in:
parent
875ac600df
commit
e54a92dc52
1 changed files with 53 additions and 5 deletions
|
@ -6,8 +6,10 @@ param(
|
||||||
& {
|
& {
|
||||||
param($parameters)
|
param($parameters)
|
||||||
|
|
||||||
|
. "$PSScriptRoot/../../Scripts/Restoration.ps1";
|
||||||
. "$PSScriptRoot/../../../Common/Scripts/BrowserAutomation.ps1";
|
. "$PSScriptRoot/../../../Common/Scripts/BrowserAutomation.ps1";
|
||||||
. "$PSScriptRoot/../../../Common/Scripts/Software.ps1";
|
. "$PSScriptRoot/../../../Common/Scripts/Software.ps1";
|
||||||
|
. "$PSScriptRoot/../../../Common/Scripts/SoftwareManagement.ps1";
|
||||||
. "$PSScriptRoot/../../../Common/Scripts/System.ps1";
|
. "$PSScriptRoot/../../../Common/Scripts/System.ps1";
|
||||||
|
|
||||||
[System.Tuple[string, string, string][]] $versions = @(
|
[System.Tuple[string, string, string][]] $versions = @(
|
||||||
|
@ -17,18 +19,64 @@ param(
|
||||||
[System.Tuple]::Create("visualstudio2022community", "VisualStudio.17.Release", "Microsoft.VisualStudio.Product.Community")
|
[System.Tuple]::Create("visualstudio2022community", "VisualStudio.17.Release", "Microsoft.VisualStudio.Product.Community")
|
||||||
);
|
);
|
||||||
|
|
||||||
|
<#
|
||||||
|
.SYNOPSIS
|
||||||
|
Gets the path to the Visual Studio Installer.
|
||||||
|
#>
|
||||||
|
function Get-InstallerPath {
|
||||||
|
return "$((Get-KnownFolder ProgramFilesX86).Path)/Microsoft Visual Studio/Installer/vs_installer.exe";
|
||||||
|
}
|
||||||
|
|
||||||
|
<#
|
||||||
|
.SYNOPSIS
|
||||||
|
Gets the path to the configuration file in the backup archive.
|
||||||
|
|
||||||
|
.PARAMETER PackageName
|
||||||
|
The name of the package to get the configuration for.
|
||||||
|
#>
|
||||||
|
function Get-ConfigPath {
|
||||||
|
param(
|
||||||
|
[string] $PackageName
|
||||||
|
)
|
||||||
|
|
||||||
|
return Join-Path "Visual Studio" "$PackageName.vsconfig";
|
||||||
|
}
|
||||||
|
|
||||||
Start-SoftwareInstaller @parameters `
|
Start-SoftwareInstaller @parameters `
|
||||||
|
-Backup {
|
||||||
|
foreach ($version in $versions) {
|
||||||
|
if (Test-ChocoPackage $version[0]) {
|
||||||
|
Write-Host "Backing up ``$($version[0])…";
|
||||||
|
$configFile = New-TemporaryFile;
|
||||||
|
|
||||||
|
Start-Process -FilePath (Get-InstallerPath) -Wait `
|
||||||
|
-ArgumentList @(
|
||||||
|
"export",
|
||||||
|
"--channelId", $version[1],
|
||||||
|
"--productId", $version[2],
|
||||||
|
"--config", $configFile,
|
||||||
|
"--quiet"
|
||||||
|
);
|
||||||
|
|
||||||
|
Add-BackupArtifacts -Source $configFile -Path (Get-ConfigPath $version[0]);
|
||||||
|
Remove-Item $configFile;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} `
|
||||||
-Installer {
|
-Installer {
|
||||||
foreach ($version in $versions) {
|
foreach ($version in $versions) {
|
||||||
$packageName = $version[0];
|
$packageName = $version[0];
|
||||||
Write-Host "Installing ``$packageName``…";
|
$file = New-TemporaryFile;
|
||||||
Install-ChocoPackage $packageName;
|
Remove-Item $file;
|
||||||
|
Expand-BackupArtifacts -Path (Get-ConfigPath $packageName) -Target $file;
|
||||||
|
|
||||||
|
if (Test-Path $file) {
|
||||||
|
Write-Host "Restoring ``$packageName``…";
|
||||||
|
Install-ChocoPackage $packageName -ArgumentList "--params","--config `"$file`"";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Remove-DesktopIcon "CocosCreator*";
|
Remove-DesktopIcon "CocosCreator*";
|
||||||
Remove-DesktopIcon "Unity Hub*";
|
Remove-DesktopIcon "Unity Hub*";
|
||||||
};
|
};
|
||||||
|
|
||||||
# ToDo: Add restoration
|
|
||||||
# Only restore version if it has been backed up
|
|
||||||
} $PSBoundParameters;
|
} $PSBoundParameters;
|
||||||
|
|
Loading…
Reference in a new issue