@echo off REM Offline overlay update for closed-network Windows 11. REM Run from the extracted update folder (or pass DEST as arg 1). setlocal EnableExtensions set "SRC=%~dp0" if "%SRC:~-1%"=="\" set "SRC=%SRC:~0,-1%" REM If this bat lives in scripts\, SRC is package root when called as scripts\apply... if exist "%SRC%\juc500_xfer\usb_link.py" goto :have_src if exist "%SRC%\..\juc500_xfer\usb_link.py" ( set "SRC=%SRC%\.." goto :have_src ) echo [!] juc500_xfer not found next to this script. echo Extract the offline update zip first, then run this bat from that folder. exit /b 1 :have_src set "DEST=%~1" if "%DEST%"=="" set "DEST=C:\dev\juc500" echo === JUC500 offline update === echo SRC = %SRC% echo DEST= %DEST% if not exist "%DEST%" ( echo [!] DEST missing: %DEST% echo Create it or pass path: apply_offline_update.bat D:\juc500 exit /b 1 ) echo. echo Copying runtime sources... robocopy "%SRC%\juc500_xfer" "%DEST%\juc500_xfer" /E /XD __pycache__ .git /NFL /NDL /NJH /NJS /nc /ns /np if errorlevel 8 exit /b 1 if exist "%SRC%\scripts" ( robocopy "%SRC%\scripts" "%DEST%\scripts" /E /XD __pycache__ /NFL /NDL /NJH /NJS /nc /ns /np ) for %%F in (start.bat start.sh start_win.sh start_both.sh juc500_app.py requirements.txt README.md) do ( if exist "%SRC%\%%F" copy /Y "%SRC%\%%F" "%DEST%\%%F" >nul ) if exist "%SRC%\vendor\libusb-1.0.dll" ( if not exist "%DEST%\vendor" mkdir "%DEST%\vendor" copy /Y "%SRC%\vendor\libusb-1.0.dll" "%DEST%\vendor\libusb-1.0.dll" >nul if exist "%DEST%\.venv\Scripts" copy /Y "%SRC%\vendor\libusb-1.0.dll" "%DEST%\.venv\Scripts\libusb-1.0.dll" >nul ) if exist "%SRC%\vendor\wheels" ( if not exist "%DEST%\vendor\wheels" mkdir "%DEST%\vendor\wheels" robocopy "%SRC%\vendor\wheels" "%DEST%\vendor\wheels" *.whl /NFL /NDL /NJH /NJS /nc /ns /np ) if exist "%SRC%\vendor\tools\zadig.exe" ( if not exist "%DEST%\vendor\tools" mkdir "%DEST%\vendor\tools" copy /Y "%SRC%\vendor\tools\zadig.exe" "%DEST%\vendor\tools\zadig.exe" >nul ) if exist "%SRC%\docs" ( if not exist "%DEST%\docs" mkdir "%DEST%\docs" robocopy "%SRC%\docs" "%DEST%\docs" /E /NFL /NDL /NJH /NJS /nc /ns /np ) echo. echo Verifying build tag... if exist "%DEST%\.venv\Scripts\python.exe" ( "%DEST%\.venv\Scripts\python.exe" -c "from juc500_xfer.usb_link import XFER_BUILD; print('XFER_BUILD=', XFER_BUILD)" ) else ( echo [.venv missing — run start.bat once to bootstrap from vendor] ) echo. echo Done. Close JUC500 GUI, then: echo cd /d %DEST% echo start.bat echo GUI should show build tag smartkmlink (or newer). echo SmartKMLink: Zadig MI_05 WinUSB — vendor\tools\zadig.exe endlocal exit /b 0