Всем привет!
Сегодня мы создадим батник, который автоматически установит node js для RedAge 3.0, зависимости и скомпилирует поочередно клиент и cef
Заходим в корень проекта
Создаем текстовый файл, и переименовываем его меняя расширение .txt на .bat и называем его build, получается файл build.bat
Далее открываем его с помощью например блокнота, или VScode, cursor или любым другим редактором и вставляем следующий код:
Запускаем батник и радуемся!
Сегодня мы создадим батник, который автоматически установит node js для RedAge 3.0, зависимости и скомпилирует поочередно клиент и cef
Заходим в корень проекта
Код:
@echo off
setlocal enabledelayedexpansion
chcp 65001 >nul
echo ========================================
echo Компиляция src_client и src_cef
echo ========================================
echo.
set "ERROR=0"
set "NODE_VERSION=16.14.0"
set "NVM_VERSION=1.1.11"
set "NVM_INSTALLED=0"
set "NODE_INSTALLED=0"
:: Проверка наличия nvm-windows
echo [0/4] Проверка nvm-windows...
echo ----------------------------------------
where nvm >nul 2>&1
if %errorlevel%==0 (
echo [OK] nvm-windows найден
set "NVM_INSTALLED=1"
) else (
echo nvm-windows не найден, попытка автоматической установки...
:: Проверяем наличие установщика nvm-windows
set "NVM_INSTALLER=nvm-setup.exe"
set "NVM_URL=https://github.com/coreybutler/nvm-windows/releases/download/%NVM_VERSION%/nvm-setup.exe"
if not exist "%TEMP%\%NVM_INSTALLER%" (
echo Скачивание установщика nvm-windows...
echo Это может занять некоторое время...
:: Пытаемся скачать через PowerShell
powershell -Command "& {[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; Invoke-WebRequest -Uri '%NVM_URL%' -OutFile '%TEMP%\%NVM_INSTALLER%' -UseBasicParsing}" >nul 2>&1
if not exist "%TEMP%\%NVM_INSTALLER%" (
echo [ОШИБКА] Не удалось скачать установщик nvm-windows
echo Пожалуйста, скачайте и установите nvm-windows вручную:
echo %NVM_URL%
echo После установки перезапустите этот скрипт
set "ERROR=1"
goto :end
)
)
echo Установка nvm-windows...
echo ВНИМАНИЕ: Установка может потребовать прав администратора
echo Если появится запрос UAC, нажмите "Да"
:: Запускаем установщик
start /wait "" "%TEMP%\%NVM_INSTALLER%" /S
:: Ждем немного после установки
timeout /t 3 /nobreak >nul
:: Обновляем переменные окружения в текущей сессии
call refreshenv >nul 2>&1
:: Проверяем установку через реестр
reg query "HKCU\Software\nvm" >nul 2>&1
if %errorlevel%==0 (
echo [OK] nvm-windows установлен
set "NVM_INSTALLED=1"
:: Добавляем путь nvm в PATH текущей сессии
for /f "tokens=2*" %%A in ('reg query "HKCU\Software\nvm" /v root 2^>nul') do set "NVM_ROOT=%%B"
if defined NVM_ROOT (
set "PATH=%NVM_ROOT%;%PATH%"
)
) else (
:: Пробуем найти nvm в стандартных местах
if exist "%APPDATA%\nvm\nvm.exe" (
set "NVM_ROOT=%APPDATA%\nvm"
set "PATH=%NVM_ROOT%;%PATH%"
set "NVM_INSTALLED=1"
echo [OK] nvm-windows найден в %NVM_ROOT%
) else if exist "%PROGRAMFILES%\nvm\nvm.exe" (
set "NVM_ROOT=%PROGRAMFILES%\nvm"
set "PATH=%NVM_ROOT%;%PATH%"
set "NVM_INSTALLED=1"
echo [OK] nvm-windows найден в %NVM_ROOT%
) else (
echo [ОШИБКА] Не удалось найти установленный nvm-windows
echo Возможно, требуется перезапуск командной строки или системы
echo Пожалуйста, перезапустите этот скрипт после установки nvm-windows
set "ERROR=1"
goto :end
)
)
)
if %NVM_INSTALLED%==0 (
echo [ОШИБКА] Не удалось установить или найти nvm-windows
set "ERROR=1"
goto :end
)
echo.
:: Проверка и установка Node.js через nvm
echo [1/4] Проверка Node.js через nvm...
echo ----------------------------------------
:: Используем nvm для проверки установленных версий
call nvm list >nul 2>&1
if errorlevel 1 (
echo [ВНИМАНИЕ] Команда nvm не работает в текущей сессии
echo Попытка обновления переменных окружения...
:: Пробуем найти nvm в реестре и добавить в PATH
for /f "tokens=2*" %%A in ('reg query "HKCU\Software\nvm" /v root 2^>nul') do set "NVM_ROOT=%%B"
if defined NVM_ROOT (
set "PATH=%NVM_ROOT%;%PATH%"
)
:: Пробуем использовать полный путь к nvm
if exist "%APPDATA%\nvm\nvm.exe" (
set "NVM_CMD=%APPDATA%\nvm\nvm.exe"
) else if exist "%PROGRAMFILES%\nvm\nvm.exe" (
set "NVM_CMD=%PROGRAMFILES%\nvm\nvm.exe"
) else (
set "NVM_CMD=nvm"
)
) else (
set "NVM_CMD=nvm"
)
:: Проверяем, установлена ли нужная версия Node.js
call %NVM_CMD% list | findstr /C:"%NODE_VERSION%" >nul
if %errorlevel%==0 (
echo Версия Node.js %NODE_VERSION% уже установлена
call %NVM_CMD% use %NODE_VERSION% >nul 2>&1
if errorlevel 1 (
echo [ВНИМАНИЕ] Не удалось переключиться на версию %NODE_VERSION%
echo Попытка продолжения...
) else (
echo [OK] Переключено на Node.js %NODE_VERSION%
set "NODE_INSTALLED=1"
)
) else (
echo Установка Node.js %NODE_VERSION% через nvm...
call %NVM_CMD% install %NODE_VERSION%
if errorlevel 1 (
echo [ОШИБКА] Не удалось установить Node.js %NODE_VERSION%
set "ERROR=1"
goto :end
)
call %NVM_CMD% use %NODE_VERSION%
if errorlevel 1 (
echo [ОШИБКА] Не удалось переключиться на версию %NODE_VERSION%
set "ERROR=1"
goto :end
)
echo [OK] Node.js %NODE_VERSION% установлен и активирован
set "NODE_INSTALLED=1"
)
:: Проверяем, что Node.js доступен
where node >nul 2>&1
if %errorlevel%==0 (
for /f "tokens=*" %%i in ('node --version') do set "CURRENT_NODE_VERSION=%%i"
echo Текущая версия Node.js: %CURRENT_NODE_VERSION%
echo [OK] Node.js готов к использованию
set "NODE_INSTALLED=1"
) else (
echo [ОШИБКА] Node.js не доступен после установки
echo Возможно, требуется перезапуск командной строки
set "ERROR=1"
goto :end
)
if %NODE_INSTALLED%==0 (
echo [ОШИБКА] Не удалось установить или использовать Node.js
set "ERROR=1"
goto :end
)
echo.
:end
if %ERROR%==1 (
echo.
echo ========================================
echo Ошибка при установке/настройке Node.js
echo ========================================
echo.
echo Рекомендации:
echo 1. Убедитесь, что у вас есть права администратора
echo 2. Перезапустите командную строку от имени администратора
echo 3. Перезапустите этот скрипт
echo.
pause
exit /b 1
)
:: Компиляция src_client
echo [2/4] Компиляция src_client...
echo ----------------------------------------
cd src_client
if not exist "node_modules" (
echo Установка зависимостей для src_client...
call npm install
if errorlevel 1 (
echo [ОШИБКА] Не удалось установить зависимости для src_client
set "ERROR=1"
goto :end_client
)
)
call npm run build
if errorlevel 1 (
echo [ОШИБКА] Компиляция src_client не удалась
set "ERROR=1"
) else (
echo [УСПЕХ] src_client скомпилирован успешно
)
:end_client
cd ..
echo.
:: Компиляция src_cef
echo [3/4] Компиляция src_cef...
echo ----------------------------------------
cd src_cef
if not exist "node_modules" (
echo Установка зависимостей для src_cef...
call npm install --legacy-peer-deps
if errorlevel 1 (
echo [ОШИБКА] Не удалось установить зависимости для src_cef
set "ERROR=1"
goto :end_cef
)
)
call npm run build
if errorlevel 1 (
echo [ОШИБКА] Компиляция src_cef не удалась
set "ERROR=1"
) else (
echo [УСПЕХ] src_cef скомпилирован успешно
)
:end_cef
cd ..
echo.
echo ========================================
if %ERROR%==1 (
echo Компиляция завершена с ошибками!
echo ========================================
pause
exit /b 1
) else (
echo Компиляция завершена успешно!
echo ========================================
pause
exit /b 0
)


