diff --git a/ersc-script.ps1 b/ersc-script.ps1 new file mode 100644 index 0000000..5f343b6 --- /dev/null +++ b/ersc-script.ps1 @@ -0,0 +1,74 @@ +$ErrorActionPreference = 'Stop' + +$apiUrl = 'https://api.github.com/repos/LukeYui/EldenRingSeamlessCoopRelease/releases/latest' +$release = Invoke-RestMethod -Uri $apiUrl -Headers @{ 'User-Agent' = 'PowerShell' } +$scDownloadUrl = $release.assets[0].browser_download_url + +function Get-EldenRingGameDir { + $steamPaths = @( + "$env:ProgramFiles(x86)\Steam\steamapps\common\Elden Ring\Game", + "$env:ProgramFiles\Steam\steamapps\common\Elden Ring\Game", + "$env:LOCALAPPDATA\Programs\Steam\steamapps\common\Elden Ring\Game" + ) + + foreach ($path in $steamPaths) { + if (Test-Path (Join-Path $path 'eldenring.exe')) { return $path } + } + + $drives = Get-PSDrive -PSProvider FileSystem | Select-Object -ExpandProperty Root + foreach ($drive in $drives) { + $hit = Get-ChildItem -Path $drive -Filter 'eldenring.exe' -Recurse -File -ErrorAction SilentlyContinue | + Where-Object { $_.FullName -match '\\Elden Ring\\Game\\eldenring\.exe$' } | + Select-Object -First 1 + if ($hit) { return $hit.DirectoryName } + } + + return $null +} + +$eldenringDir = Get-EldenRingGameDir + +if (-not $eldenringDir) { + $eldenringDir = Read-Host "Could not auto-detect your Elden Ring Game folder. Enter the full Game folder path" + if (-not (Test-Path (Join-Path $eldenringDir 'eldenring.exe'))) { + throw "Incorrect Elden Ring directory. 'eldenring.exe' not found at provided path." + } +} else { + $input = Read-Host "Is this your Elden Ring Game folder? $eldenringDir [Y/n]" + if ($input -match '^(n|no)$') { + $eldenringDir = Read-Host "Please provide your Elden Ring Game folder path" + if (-not (Test-Path (Join-Path $eldenringDir 'eldenring.exe'))) { + throw "Incorrect Elden Ring directory. 'eldenring.exe' not found at provided path." + } + } +} + +$tempDir = Join-Path $PWD 'ersc-download' +New-Item -ItemType Directory -Path $tempDir -Force | Out-Null + +Write-Host "Downloading Seamless Coop" +Write-Host "Download URL: $scDownloadUrl" +$zipPath = Join-Path $tempDir 'ersc.zip' +Invoke-WebRequest -Uri $scDownloadUrl -OutFile $zipPath + +Write-Host "Extracting downloaded files" +Expand-Archive -Path $zipPath -DestinationPath $tempDir -Force + +$seamlessDir = Join-Path $tempDir 'SeamlessCoop' +$launcherPath = Join-Path $eldenringDir 'ersc_launcher.exe' + +if (Test-Path $launcherPath) { + $input = Read-Host "Override existing Seamless Coop settings? This resets your Seamless Coop settings, including multiplayer password [Y/n]" + if ($input -match '^(n|no)$') { + $settings = Join-Path $seamlessDir 'ersc_settings.ini' + if (Test-Path $settings) { Remove-Item $settings -Force } + } +} + +Write-Host "Copying files to Elden Ring Game folder" +Copy-Item -Path (Join-Path $tempDir '*') -Destination $eldenringDir -Recurse -Force + +Write-Host "Cleaning up" +Remove-Item $tempDir -Recurse -Force + +Write-Host "Done. Launch ersc_launcher.exe from the Game folder." \ No newline at end of file