diff --git a/scripts/Windows/Collections/Personal.ps1 b/scripts/Windows/Collections/Personal.ps1 index 9f47acaa..53ef3f8f 100644 --- a/scripts/Windows/Collections/Personal.ps1 +++ b/scripts/Windows/Collections/Personal.ps1 @@ -32,4 +32,5 @@ function Restore-PersonalApps([Context] $context) { Restore-Git $context; Restore-LogitechGHUB $context; Restore-TmNations $context; + Restore-TmUnited $context; } diff --git a/scripts/Windows/Software/TrackMania United Forever/Manage.ps1 b/scripts/Windows/Software/TrackMania United Forever/Manage.ps1 index a23f1d9b..a279357d 100644 --- a/scripts/Windows/Software/TrackMania United Forever/Manage.ps1 +++ b/scripts/Windows/Software/TrackMania United Forever/Manage.ps1 @@ -8,4 +8,31 @@ $null = New-Module { Write-Host "Backing up TrackMania United Forever"; $context.Backup($path, $context.SoftwareArchive($softwareName), @("-i@`"$PSScriptRoot/include.txt`"")); } + + function Restore-TmUnited([Context] $context) { + $feature = "DirectPlay"; + Write-Host "Restoring TrackMania United Forever"; + + if (-not (Get-WindowsOptionalFeature -Online -FeatureName $feature).State) { + Enable-WindowsOptionalFeature -Online -FeatureName $feature; + } + + Write-Information "Determining location of setup file"; + $exePath; + + while (-not (Test-Path $exePath)) { + $exePath = Read-Host "Please drag'n'drop the setup file here or type the absolute path to the file"; + + if (-not (Test-Path $exePath)) { + Write-Error "A file at the specified path could not be found."; + } + } + + Write-Information "Installing TrackMania United Forever"; + Start-Process -Wait -FilePath $exePath -ArgumentList @("/Silent"); + Write-Information "Removing desktop icon"; + Remove-Item "$env:PUBLIC\Desktop\*TmUnitedForever*"; + Write-Information "Restoring files"; + $context.Restore($context.SoftwareArchive($softwareName), $path); + } }