Update Patcher

This commit is contained in:
DazedAnon 2026-05-10 12:32:14 -05:00
parent 294142b8b4
commit fb7dec3956
4 changed files with 45 additions and 47 deletions

2
.gitattributes vendored Normal file
View file

@ -0,0 +1,2 @@
# Cmd.exe parses LF-only .bat files incorrectly on Windows (joined tokens / mangled commands).
*.bat text eol=crlf

View file

@ -1,14 +1,9 @@
@echo off
setlocal
REM Copy GAMEUPDATE.bat to a new file
copy "gameupdate\patch.bat" "gameupdate\patch2.bat"
REM Run the new file
call "gameupdate\patch2.bat"
REM Delete the new file
del "gameupdate\patch2.bat"
endlocal
@echo on
@echo off
setlocal
REM Copy patch.bat to a temp name so the live patch.bat can be overwritten during updates
copy /Y "gameupdate\patch.bat" "gameupdate\patch2.bat" >nul
call "gameupdate\patch2.bat"
del /Q "gameupdate\patch2.bat" >nul 2>&1
endlocal

View file

@ -97,15 +97,13 @@ try {
if (Test-Path -LiteralPath $StateFile) {
$previousSha = (Get-Content -LiteralPath $StateFile -Raw).Trim()
} else {
Write-Host 'No saved patch version yet (first run); comparing with remote...'
Write-Host 'First run: comparing with remote...'
}
if ($previousSha -eq $latestSha) {
Write-Host 'Already up to date (matches latest patch commit).'
exit 10
}
Write-Host 'Update found! Patching...'
Write-Host 'Downloading latest patch... (backend: iwr, GitLab API)'
Write-Host 'Downloading patch...'
$zipPath = Join-Path $PWD.Path 'repo.zip'
# Use a short temp extract root to avoid Windows MAX_PATH issues when
# GitLab archive root folder includes long commit SHA suffixes.

View file

@ -1,5 +1,5 @@
@echo off
setlocal EnableExtensions EnableDelayedExpansion
setlocal EnableExtensions
REM Check if being run from gameupdate folder (incorrect usage)
for %%I in ("%CD%") do set "CURRENT_FOLDER=%%~nxI"
@ -25,14 +25,14 @@ set "SCRIPT_DIR=%~dp0"
set "ROOT_DIR=%CD%"
set "CONFIG_FILE=%SCRIPT_DIR%patch-config.txt"
echo Using root directory: "%ROOT_DIR%"
echo Using config: "%CONFIG_FILE%"
echo Root: %ROOT_DIR%
setlocal EnableDelayedExpansion
echo Checking for pwsh...
set "_my_shell=pwsh"
where /q !_my_shell!
if !errorlevel! neq 0 (
echo pwsh not found.
echo PowerShell 7 ^(pwsh^) not found.
if /I "%GAMEUPDATE_PROMPT_PWSH%"=="1" (
echo.
set /p "INSTALL_PWSH=PowerShell 7 is faster. Install now via winget? (Y/N): "
@ -62,15 +62,11 @@ if !errorlevel! neq 0 (
pause
exit /b 1
)
) else (
echo pwsh found.
)
echo Using !_my_shell! for script execution.
REM Check if patch-config.txt exists in gameupdate folder
if not exist "%CONFIG_FILE%" (
echo "Config file (gameupdate\patch-config.txt) not found! Assuming no patching needed."
echo Config file gameupdate\patch-config.txt not found - skipping patch.
pause
exit /b
)
@ -113,8 +109,6 @@ REM --------------------------------------------------------
set "UNPACKER=%ROOT_DIR%\SRPG_Unpacker.exe"
if exist "%ROOT_DIR%\data.dts" (
if exist "%UNPACKER%" (
echo [Pre-Setup] Running SRPG_Unpacker preparation steps...
REM Step 1: Unpack (once)
if not exist "%ROOT_DIR%\data\" (
set "SHOULD_UNPACK=1"
@ -126,7 +120,7 @@ if exist "%ROOT_DIR%\data.dts" (
if "!SHOULD_UNPACK!"=="1" (
if exist "%ROOT_DIR%\data.dts" (
echo [Pre-Setup] Step 1: Unpacking data.dts to data
echo [Pre-Setup] Unpacking data.dts to data\
pushd "%ROOT_DIR%"
"%UNPACKER%" -o "data" "data.dts"
if !errorlevel! neq 0 (
@ -134,16 +128,13 @@ if exist "%ROOT_DIR%\data.dts" (
)
popd
) else (
echo [Pre-Setup] Step 1: Skipping unpack - no data folder and no data.dts found.
echo [Pre-Setup] Skipping unpack: data.dts missing.
)
) else (
echo [Pre-Setup] Step 1: data folder exists; skipping unpack.
)
REM Step 2: Create Patch (once)
if not exist "%ROOT_DIR%\patch\" (
if exist "%ROOT_DIR%\data\project.dat" (
echo [Pre-Setup] Step 2: Creating patch from data\project.dat
echo [Pre-Setup] Creating patch folder from data\project.dat
pushd "%ROOT_DIR%"
"%UNPACKER%" ".\data\project.dat" -c
if !errorlevel! neq 0 (
@ -151,13 +142,27 @@ if exist "%ROOT_DIR%\data.dts" (
)
popd
) else (
echo [Pre-Setup] Step 2: Skipping create patch - data\project.dat not found.
echo [Pre-Setup] Skipping create patch: data\project.dat not found.
)
) else (
echo [Pre-Setup] Step 2: patch folder exists; skipping create.
)
) else (
echo [Pre-Setup] SRPG_Unpacker.exe not found in root; skipping pre-setup steps.
REM SHOULD_UNPACK=0: only Step 2 may still be needed
if not exist "%ROOT_DIR%\patch\" (
if exist "%ROOT_DIR%\data\project.dat" (
echo [Pre-Setup] Creating patch folder from data\project.dat
pushd "%ROOT_DIR%"
"%UNPACKER%" ".\data\project.dat" -c
if !errorlevel! neq 0 (
echo [Pre-Setup] ERROR: Create Patch failed. Continuing.
)
popd
) else (
echo [Pre-Setup] Skipping create patch: data\project.dat not found.
)
)
)
) else (
echo [Pre-Setup] SRPG_Unpacker.exe not found; skipping data setup.
)
)
@ -178,13 +183,13 @@ if "!PATCH_DL_EXIT!"=="10" (
exit /b 0
)
if not "!PATCH_DL_EXIT!"=="0" (
echo Download or extraction failed!
echo Download or extraction failed^!
if exist "%ROOT_DIR%\repo.zip" del "%ROOT_DIR%\repo.zip"
if exist "%ROOT_DIR%\_patch_extract_tmp" rmdir /s /q "%ROOT_DIR%\_patch_extract_tmp"
pause
exit /b 1
)
echo "Applying patch..."
echo Applying patch...
REM Files merged by Copy-Item above
REM --------------------------------------------------------
REM POST-APPLY: Run Steps 3 and 4 after patch files are merged
@ -194,11 +199,9 @@ REM --------------------------------------------------------
set "UNPACKER=%ROOT_DIR%\SRPG_Unpacker.exe"
if exist "%ROOT_DIR%\data.dts" (
if exist "%UNPACKER%" (
echo Running SRPG_Unpacker apply/pack steps...
REM Step 3: Apply Patch
if exist "%ROOT_DIR%\data\project.dat" (
echo Step 3: Applying patch to data\project.dat
echo Applying patch to data\project.dat...
pushd "%ROOT_DIR%"
"%UNPACKER%" ".\data\project.dat" -a
if !errorlevel! neq 0 (
@ -211,7 +214,7 @@ if exist "%ROOT_DIR%\data.dts" (
REM Step 4: Pack
if exist "%ROOT_DIR%\data\" (
echo Step 4: Packing data to data.dts
echo Packing data folder to data.dts...
pushd "%ROOT_DIR%"
"%UNPACKER%" -o "data.dts" "data"
if !errorlevel! neq 0 (
@ -226,7 +229,7 @@ if exist "%ROOT_DIR%\data.dts" (
)
)
REM Clean up
echo "Cleaning up..."
echo Cleaning up...
del "%ROOT_DIR%\repo.zip"
if exist "%ROOT_DIR%\_patch_extract_tmp" rmdir /s /q "%ROOT_DIR%\_patch_extract_tmp"
endlocal