208 lines
6.0 KiB
Batchfile
208 lines
6.0 KiB
Batchfile
@echo off
|
|
|
|
:: Setting initial paths
|
|
set "mo2_install=%cd%"
|
|
set "repository=%mo2_install%\Divergent"
|
|
|
|
:: Specifying links to download for files
|
|
set "git_repository=https://files.moddinglounge.com/Rage/Divergent.git"
|
|
set "git_file=https://github.com/git-for-windows/git/releases/download/v2.47.1.windows.1/PortableGit-2.47.1-64-bit.7z.exe"
|
|
set "SevenZ_file=https://www.7-zip.org/a/7zr.exe"
|
|
set "mo2_file=https://github.com/ModOrganizer2/modorganizer/releases/download/v2.5.2/Mod.Organizer-2.5.2.7z"
|
|
|
|
:: Set path to the portable Git executable
|
|
set "portable_git=%mo2_install%\PortableGit\bin\git.exe"
|
|
set "portable_7z=%mo2_install%\7zr.exe"
|
|
|
|
:: Check if curl is installed
|
|
where curl >nul 2>nul
|
|
if %errorlevel% neq 0 (
|
|
echo ERROR: curl is not installed or not in your PATH.
|
|
echo Please install curl or ensure it is in your PATH and try again.
|
|
pause
|
|
exit /b
|
|
)
|
|
|
|
:: Checking if Git Portable exists
|
|
if not exist "%mo2_install%\PortableGit\bin\git.exe" (
|
|
echo ----
|
|
echo Installing Portable Git...
|
|
:: Download Git Portable
|
|
curl -L -o PortableGit-2.47.1-64-bit.7z.exe %git_file%
|
|
|
|
if %errorlevel% neq 0 (
|
|
echo ERROR: Failed to download Git Portable. Check your internet connection and try again.
|
|
pause
|
|
exit /b
|
|
)
|
|
:: Run the portable executable to setup
|
|
start PortableGit-2.47.1-64-bit.7z.exe
|
|
|
|
echo ----
|
|
set /p userInput=Press Enter once the Portable Git installation has finished.
|
|
)
|
|
|
|
:: Check if 7z is installed
|
|
if not exist "%mo2_install%\7zr.exe" (
|
|
echo ----
|
|
echo Installing 7zip Portable...
|
|
:: Download 7zip Portable
|
|
curl -L -o 7zr.exe %SevenZ_file%
|
|
)
|
|
|
|
:: Determining if an installation exists already
|
|
IF EXIST "%mo2_install%\ModOrganizer.exe" (
|
|
call :UpdateModpack
|
|
exit /B 0
|
|
) ELSE (
|
|
call :InstallModpack
|
|
exit /B 0
|
|
)
|
|
|
|
:UpdateModpack
|
|
echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
echo WARNING! Existing installation detected!
|
|
echo Be sure to save a backup of your changes if you want to keep them!
|
|
echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
|
|
echo.
|
|
echo Existing installation detected! Updating modpack, please wait.
|
|
timeout 10
|
|
|
|
:: Clone or update the Git repository
|
|
if not exist "%repository%\.git" (
|
|
echo ----
|
|
echo Cloning repository...
|
|
"%portable_git%" clone %git_repository%
|
|
) else (
|
|
echo ----
|
|
echo Repository already exists. Pulling latest changes...
|
|
cd %repository%
|
|
git fetch --all
|
|
git reset --hard origin/main
|
|
)
|
|
|
|
echo ----
|
|
echo Synchronizing mods folder...
|
|
robocopy "%repository%/mods" "%mo2_install%/mods" /MIR
|
|
|
|
echo ----
|
|
echo Synchronizing profiles folder...
|
|
robocopy "%repository%/profiles" "%mo2_install%/profiles" /MIR
|
|
|
|
pause
|
|
exit /B 0
|
|
|
|
:InstallModpack
|
|
echo.
|
|
echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
echo WARNING! The script will install the modpack in the folder this script is ran from!
|
|
echo Be sure that your folder is empty before continuing with the installation!
|
|
echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
|
|
setlocal enableextensions disabledelayedexpansion
|
|
|
|
echo.
|
|
echo No existing installation detected. Downloading modpack.
|
|
timeout 30
|
|
|
|
:: Requiring user input for game path
|
|
echo ----
|
|
set /p "game_path=Please enter the path to your game installation: "
|
|
|
|
if "%game_path%"=="" (
|
|
echo.
|
|
echo No path entered. Exiting.
|
|
echo.
|
|
pause
|
|
exit /b 1
|
|
)
|
|
|
|
:: Download MO2
|
|
curl -L -o MO2.7z %mo2_file%
|
|
if %errorlevel% neq 0 (
|
|
echo ERROR: Failed to download the archive. Check your internet connection and try again.
|
|
pause
|
|
exit /b
|
|
)
|
|
|
|
:: Confirm the file exists
|
|
if not exist "MO2.7z" (
|
|
echo ERROR: Download completed, but the file MO2.7z was not found.
|
|
echo Please check your internet connection or the download URL.
|
|
pause
|
|
exit /b
|
|
)
|
|
|
|
:: Extracting MO2 and installing
|
|
.\7zr x MO2.7z
|
|
if %errorlevel% neq 0 (
|
|
echo ERROR: Failed to extract the archive. Ensure the archive is valid and try again.
|
|
pause
|
|
exit /b
|
|
)
|
|
|
|
:: Deleting the archive
|
|
del MO2.7z
|
|
|
|
echo ----
|
|
echo Cloning repository...
|
|
"%portable_git%" clone %git_repository%
|
|
|
|
echo ----
|
|
echo Synchronizing mods folder...
|
|
robocopy "%repository%/mods" "%mo2_install%/mods" /MIR
|
|
|
|
echo ----
|
|
echo Synchronizing profiles folder...
|
|
robocopy "%repository%/profiles" "%mo2_install%/profiles" /MIR
|
|
|
|
echo ----
|
|
echo Synchronizing stylesheets folder...
|
|
robocopy "%repository%/stylesheets" "%mo2_install%/stylesheets" /E
|
|
|
|
:: Escape backslashes in the game path
|
|
setlocal enabledelayedexpansion
|
|
|
|
set "game_path=!game_path:\=/!"
|
|
set "escaped_path="
|
|
|
|
for /l %%i in (0,1,255) do (
|
|
for /f "tokens=1,* delims=" %%a in ("!game_path:~%%i,1!") do (
|
|
if "%%a"=="" goto path_done
|
|
if %%a==/ (
|
|
set "escaped_path=!escaped_path!//" :: Double the backslash
|
|
) else (
|
|
set "escaped_path=!escaped_path!%%a"
|
|
)
|
|
)
|
|
)
|
|
:path_done
|
|
|
|
echo Original Path: %game_path%
|
|
echo Escaped Path: %escaped_path%
|
|
|
|
:: Replace placeholders in ModOrganizer.ini
|
|
echo ----
|
|
echo Updating ModOrganizer.ini...
|
|
set "ini_file=%repository%\ModOrganizer.ini"
|
|
set "temp_ini=%ini_file%.tmp"
|
|
|
|
(for /f "usebackq delims=" %%A in ("%ini_file%") do (
|
|
set "line=%%A"
|
|
set "line=!line:game_path=%escaped_path%!"
|
|
set "line=!line:replace_me=%game_path%!"
|
|
echo(!line!
|
|
)) > "%temp_ini%"
|
|
|
|
move /y "%temp_ini%" "%mo2_install%\ModOrganizer.ini"
|
|
|
|
echo ----
|
|
echo ModOrganizer.ini updated successfully!
|
|
|
|
echo ----
|
|
echo Installation complete. Launch ModOrganizer.exe and follow the remaining instructions.
|
|
|
|
pause
|
|
exit /B 0
|