Compare commits
9 Commits
483ed1d7f1
..
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 06c7891aac | |||
| e0a66b8f22 | |||
| 0c44a046b4 | |||
| 1025d5532c | |||
| 252457413c | |||
| 00a1757ba1 | |||
| 7f30696f02 | |||
| bef771a3a3 | |||
| fda50e33ce |
@@ -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."
|
||||||
+38
-12
@@ -1,19 +1,39 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
|
search_paths=("$HOME/.steam/steam/steamapps/common" "$HOME/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common" "$HOME/.local/share/Steam/steamapps/common" "/mnt" "/")
|
||||||
|
eldenring_dir=""
|
||||||
|
|
||||||
#gets latest download url from github
|
#gets latest download url from github
|
||||||
sc_download_url=$(curl -s "https://api.github.com/repos/LukeYui/EldenRingSeamlessCoopRelease/releases/latest" | jq -r '.assets[0].browser_download_url')
|
sc_download_url=$(curl -s "https://api.github.com/repos/LukeYui/EldenRingSeamlessCoopRelease/releases/latest" | jq -r '.assets[0].browser_download_url')
|
||||||
|
|
||||||
#find elden ring install path
|
if [[ -z "$sc_download_url" || "$sc_download_url" == "null" ]]; then
|
||||||
eldenring_dir=$(find / -path '*/Game/*' -iname eldenring.exe -printf '%h\n' -quit 2>/dev/null)
|
echo "Failed to retrieve download URL"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
read -p "Is this your Elden Ring Game folder? $eldenring_dir [Y/n]: " input
|
echo "Searching for Elden Ring game folder"
|
||||||
if [[ $input == "n" || $input == "N" || $input == "No" || $input == "no" ]]; then
|
|
||||||
|
for i in "${search_paths[@]}"; do
|
||||||
|
echo "Searching at $i"
|
||||||
|
eldenring_dir=$(timeout 5 find "$i" -path '*/Game/*' -iname eldenring.exe -printf '%h\n' -quit 2>/dev/null || true)
|
||||||
|
|
||||||
|
if [ -n "$eldenring_dir" ]; then
|
||||||
|
read -p "Is this your Elden Ring Game folder? $eldenring_dir [y/N]: " input
|
||||||
|
|
||||||
|
if [[ $input == "y" || $input == "Y" || $input == "yes" || $input == "Yes" ]]; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
eldenring_dir=""
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if [[ -z "$eldenring_dir" ]]; then
|
||||||
input=""
|
input=""
|
||||||
read -p "Please provide your Elden Ring Directory Path: " input
|
read -p "Please provide your Elden Ring Directory Path: " input
|
||||||
if test -f "$input/eldenring.exe"; then
|
if test -f "$input/eldenring.exe"; then
|
||||||
echo "Correct Elden Ring directory"
|
echo "Correct Elden Ring directory"
|
||||||
eldenring_dir=$input
|
eldenring_dir=$input
|
||||||
echo $eldenring_dir
|
echo "$eldenring_dir"
|
||||||
else
|
else
|
||||||
echo "Incorrect Elden Ring directory. 'eldenring.exe' not found at provided path. Exiting..."
|
echo "Incorrect Elden Ring directory. 'eldenring.exe' not found at provided path. Exiting..."
|
||||||
exit 1
|
exit 1
|
||||||
@@ -23,16 +43,16 @@ fi
|
|||||||
input=""
|
input=""
|
||||||
|
|
||||||
echo "Creating temp download folder"
|
echo "Creating temp download folder"
|
||||||
mkdir -p ./ersc-download
|
temp_dir=$(mktemp -d)
|
||||||
cd ./ersc-download
|
cd "$temp_dir"
|
||||||
|
|
||||||
echo "Downloading Seamless Coop"
|
echo "Downloading Seamless Coop"
|
||||||
echo "Download Url: $sc_download_url"
|
echo "Download Url: $sc_download_url"
|
||||||
wget -q $sc_download_url
|
wget -q -O seamlesscoop.zip "$sc_download_url"
|
||||||
|
|
||||||
echo "Unzipping downloaded files"
|
echo "Unzipping downloaded files"
|
||||||
unzip -q Seamless*
|
unzip -q seamlesscoop.zip
|
||||||
rm Seamless*.zip
|
rm seamlesscoop.zip
|
||||||
|
|
||||||
# If seamless coop settings exist in install directory, ask the user whether they want to replace the settings file
|
# If seamless coop settings exist in install directory, ask the user whether they want to replace the settings file
|
||||||
# If 'no', will delete the empty settings file, so it doesn't get overwritten when copying the files
|
# If 'no', will delete the empty settings file, so it doesn't get overwritten when copying the files
|
||||||
@@ -47,5 +67,11 @@ echo "Moving source files to Elden Ring Directory"
|
|||||||
rsync -r --remove-source-files * "$eldenring_dir"
|
rsync -r --remove-source-files * "$eldenring_dir"
|
||||||
|
|
||||||
echo "Deleting temp download folder"
|
echo "Deleting temp download folder"
|
||||||
cd ../
|
|
||||||
rm -r ./ersc-download
|
cleanup() {
|
||||||
|
rm -rf "$temp_dir"
|
||||||
|
}
|
||||||
|
|
||||||
|
trap cleanup EXIT
|
||||||
|
|
||||||
|
echo "Done"
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
# About
|
||||||
|
A simple script to install or update the seamless coop mod for Elden Ring on Linux and Windows.
|
||||||
|
The bash script is hand-crafted and tested, the Windows-script is AI-generated, based on the bash script. Use at your own risk!
|
||||||
|
|
||||||
# Usage
|
# Usage
|
||||||
|
|
||||||
## Linux
|
## Linux
|
||||||
@@ -6,4 +10,18 @@
|
|||||||
2. Make it executable
|
2. Make it executable
|
||||||
- UI: Right click -> Properties -> Executable as Program
|
- UI: Right click -> Properties -> Executable as Program
|
||||||
- Terminal: `chmod +x ersc_script.sh`
|
- Terminal: `chmod +x ersc_script.sh`
|
||||||
3. Execute it and follow commands
|
3. Execute it and follow commands
|
||||||
|
|
||||||
|
## Windows
|
||||||
|
|
||||||
|
> The Powershell script is 100% AI-generated and not tested! I don't own a Windows 11 Computer.
|
||||||
|
1. Download the .ps1 file
|
||||||
|
2. Execute it with powershell
|
||||||
|
- If this doesn't work, you might need to start a Powershell as administrator and execute this command: `Set-ExecutionPolicy RemoteSigned`, then try again
|
||||||
|
|
||||||
|
# Possible Issues
|
||||||
|
|
||||||
|
- If the bash-script is not executing correctly, check if the following dependencies are installed:
|
||||||
|
curl, wget, rsync, unzip, find, jq
|
||||||
|
|
||||||
|
- The script checks for common steam installation paths before checking /mnt and / for the game directory. If this is too slow or I should add more install paths, please open an issue
|
||||||
Reference in New Issue
Block a user