@echo off :: Setting initial paths set "mo2_install=%cd%" set "repository=%mo2_install%\Fika-Tarkov" :: Specifying links to download for files set "git_repository=https://files.moddinglounge.com/Rage/Fika-Tarkov.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 plugins folder... robocopy "%repository%/plugins" "%mo2_install%/plugins" /E 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