param( $Action, [hashtable] $Arguments ) & { param($Parameters) . "$PSScriptRoot/../../Scripts/Restoration.ps1"; . "$PSScriptRoot/../../../Common/Scripts/Software.ps1"; . "$PSScriptRoot/../../../Common/Scripts/System.ps1"; $path = "$env:AppData/osu"; Start-SoftwareInstaller @Parameters ` -UserBackup { param( [string] $Name, [hashtable] $Arguments ) Add-BackupArtifacts -User $Arguments.Name -Source $path -Path "$Name" ` -Include @( "files", "rulesets", "screenshots", "framework.ini", "game.ini", "input.json" ); } ` -UserConfigurator { param( [string] $Name, [hashtable] $Arguments ) $file = "osu!lazer.exe"; $processName = "osu!"; $dir = New-TemporaryDirectory; Push-Location $dir; Invoke-WebRequest "https://github.com/ppy/osu/releases/latest/download/install.exe" -OutFile $file; Start-Process -FilePath $file; while (-not (Get-Process -ErrorAction SilentlyContinue $processName)) { Start-Sleep 1; } Start-Sleep 10; Get-Process $processName | Stop-Process -Force; Pop-Location; Remove-Item -Recurse $dir; Remove-DesktopIcon "*osu*"; Expand-BackupArtifacts -User $Arguments.Name -Path "$Name" -Target $path; }; } $PSBoundParameters;