From 59f3a561836bfa46e95f9f814e98b14088976bbc Mon Sep 17 00:00:00 2001 From: Manuel Thalmann Date: Wed, 28 Aug 2024 04:40:00 +0200 Subject: [PATCH] Add scripts for backing up and restoring personal files --- .../Windows/Software/Windows/Home.exclude.txt | 37 +++++++++++++ scripts/Windows/Software/Windows/Manage.ps1 | 54 +++++++++++++++++-- 2 files changed, 86 insertions(+), 5 deletions(-) create mode 100644 scripts/Windows/Software/Windows/Home.exclude.txt diff --git a/scripts/Windows/Software/Windows/Home.exclude.txt b/scripts/Windows/Software/Windows/Home.exclude.txt new file mode 100644 index 00000000..d8d15bc7 --- /dev/null +++ b/scripts/Windows/Software/Windows/Home.exclude.txt @@ -0,0 +1,37 @@ +Pictures/Feedback +Documents/BeamNG.drive +Documents/Default.rdp +Documents/den4b/ReNamer +Documents/Dolphin Emulator +Documents/eFisc +Documents/IISExpress +Documents/KINGDOM HEARTS HD 1.5+2.5 ReMIX +Documents/ManiaPlanet +Documents/MetaX +Documents/MuseScore3 +Documents/My Web Sites +Documents/OneNote-Notizbücher +Documents/PCSX2 +Documents/PowerShell +Documents/PPSSPP +Documents/PS Vita +Documents/PSV Packages +Documents/PSV Updates +Documents/Repositories +Documents/Rise of the Tomb Raider +Documents/S2 +Documents/SEGA +Documents/SEGA Mega Drive Classics +Documents/SQL Server Management Studio +Documents/Square Enix +Documents/TI-Nspire CX +Documents/TmForever +Documents/TrackMania +Documents/UltraVNC +Documents/Visual Studio 2017 +Documents/Visual Studio 2019 +Documents/Visual Studio 2022 +Documents/Viwizard M4V Converter +Documents/WindowsPowerShell +Documents/Zoom +Music/iTunes diff --git a/scripts/Windows/Software/Windows/Manage.ps1 b/scripts/Windows/Software/Windows/Manage.ps1 index 39741ca9..64fd4a53 100644 --- a/scripts/Windows/Software/Windows/Manage.ps1 +++ b/scripts/Windows/Software/Windows/Manage.ps1 @@ -5,13 +5,41 @@ param( [hashtable] $Arguments ) -. "$PSScriptRoot/../../Scripts/Registry.ps1"; -. "$PSScriptRoot/../../../Common/Scripts/Config.ps1"; -. "$PSScriptRoot/../../../Common/Scripts/System.ps1"; . "$PSScriptRoot/../../../Common/Scripts/Software.ps1"; . "$PSScriptRoot/../../../Common/Types/InstallerAction.ps1"; -Start-SoftwareInstaller @PSBoundParameters ` +$null = New-Module { + param($Parameters) + + . "$PSScriptRoot/../../Scripts/Registry.ps1"; + . "$PSScriptRoot/../../Scripts/Restoration.ps1"; + . "$PSScriptRoot/../../../Common/Scripts/Config.ps1"; + . "$PSScriptRoot/../../../Common/Scripts/System.ps1"; + + $userFolders = @( + "Pictures", + "Documents", + "Downloads", + "Music", + "Videos" + ); + + $userExclusions = @( + "Documents/Eigene*", + "Documents/My Games", + "Documents/My Music", + "Documents/My Pictures", + "Documents/My Videos" + ); + + [string[]] $homeExclusions = Get-Content "$PSScriptRoot/Home.exclude.txt"; + + Start-SoftwareInstaller @Parameters ` + -Backup { + Add-BackupArtifacts -Source "$env:PUBLIC" -Path "Public" ` + -Include ($userFolders) ` + -Exclude ($userExclusions + @("Documents/Hyper-V", "Documents/reWASD")); + } ` -Configurator { $dir = New-TemporaryDirectory; Push-Location $dir; @@ -54,7 +82,7 @@ Start-SoftwareInstaller @PSBoundParameters ` ) $path = "$($Key.PSPath)\Software\Microsoft\Lighting"; - $null = New-Item $path; + $null = New-Item $path -ErrorAction SilentlyContinue; Set-ItemProperty $path -Name "AmbientLightingEnabled" -Value 0 -Type "DWord"; }; } @@ -136,4 +164,20 @@ Start-SoftwareInstaller @PSBoundParameters ` Pop-Location; Remove-Item -Recurse $dir; + Expand-BackupArtifacts -Path "Public" -Target $env:PUBLIC; + } ` + -UserBackup { + param( + [hashtable] $Arguments + ) + + Add-BackupArtifacts -User $Arguments.Name -Source $HOME -Path "Home" -Include ($userFolders) -Exclude ($userExclusions + $homeExclusions); + } ` + -UserConfigurator { + param( + [hashtable] $Arguments + ) + + Expand-BackupArtifacts -User $Arguments.Name -Path "Home" -Target $HOME; }; +} $PSBoundParameters;