• Из-за обновления GTA 5 (был добавлен новый патч) может временно не работать вход в RAGE Multiplayer.

    Ошибка: Ваша версия Grand Theft Auto V не поддерживается RAGE Multiplayer.
    ERROR: Your game version is not supported by RAGE Multiplayer.

    Данная ошибка говорит о том, что GTA V обновилась до новой версии (GTA Online тоже). Вам необходимо обновить саму игру в главном меню вашего приложения (Steam / Epic Games / Rockstar Games).
    Если после этого RAGE:MP все равно не работает - вам нужно дождаться выхода патча для самого мультиплеера (обычно это занимает от нескольких часов до нескольких дней).

    Новости и апдейты Rockstar Games - https://www.rockstargames.com/newswire/
    Статус всех служб для Rockstar Games Launcher и поддерживаемых игр: https://support.rockstargames.com/ru/servicestatus


    Grand Theft Auto 5 (+ GTA Online) последний раз были обновлены:

Мануал Четкий батник для RedAge 3.0

vvrm7

Участник портала
Мошенник
21 Дек 2025
42
10
8
Всем привет!
Сегодня мы создадим батник, который автоматически установит node js для RedAge 3.0, зависимости и скомпилирует поочередно клиент и cef
Заходим в корень проекта
1769248362397.png
Создаем текстовый файл, и переименовываем его меняя расширение .txt на .bat и называем его build, получается файл build.bat
1769248554290.png
Далее открываем его с помощью например блокнота, или VScode, cursor или любым другим редактором и вставляем следующий код:
Код:
@echo off
setlocal enabledelayedexpansion
chcp 65001 >nul
set "ERROR=0"
set "NODE_VERSION=16.14.0"
set "NVM_VERSION=1.1.11"
set "NVM_INSTALLED=0"
set "NODE_INSTALLED=0"
set "DOTNET_VERSION=3.1"
set "DOTNET_SDK_INSTALLED=0"
:: Меню выбора
:menu
cls
echo ========================================
echo   Меню компиляции проекта
echo ========================================
echo.
echo   1. Установка Node.js
echo   2. Компиляция клиента (src_client)
echo   3. Компиляция CEF (src_cef)
echo   4. Компиляция CEF и клиента
echo   5. Установка .NET SDK
echo   6. Компиляция .NET проекта (dotnet/resources)
echo   7. Компиляция всего проекта (CEF + клиент + .NET)
echo   0. Выход
echo.
echo ========================================
set /p "choice=Выберите действие (0-7): "
if "%choice%"=="1" goto :install_nodejs
if "%choice%"=="2" goto :build_client
if "%choice%"=="3" goto :build_cef
if "%choice%"=="4" goto :build_both
if "%choice%"=="5" goto :install_dotnet
if "%choice%"=="6" goto :build_dotnet
if "%choice%"=="7" goto :build_all
if "%choice%"=="0" goto :end_script
echo.
echo [ОШИБКА] Неверный выбор. Попробуйте снова.
timeout /t 2 /nobreak >nul
goto :menu
:: Установка Node.js
:install_nodejs
echo.
echo ========================================
echo   Установка Node.js
echo ========================================
echo.
call :check_nvm
if %ERROR%==1 goto :end_install_nodejs
call :install_node
if %ERROR%==1 goto :end_install_nodejs
:end_install_nodejs
echo.
if %ERROR%==1 (
    echo ========================================
    echo   Ошибка при установке Node.js
    echo ========================================
) else (
    echo ========================================
    echo   Node.js установлен успешно
    echo ========================================
)
echo.
pause
set "ERROR=0"
goto :menu
:: Компиляция клиента
:build_client
echo.
echo ========================================
echo   Компиляция клиента (src_client)
echo ========================================
echo.
call :check_nodejs
if %ERROR%==1 goto :end_build_client
call :build_src_client
if %ERROR%==1 goto :end_build_client
:end_build_client
echo.
if %ERROR%==1 (
    echo ========================================
    echo   Компиляция клиента завершена с ошибками
    echo ========================================
) else (
    echo ========================================
    echo   Компиляция клиента завершена успешно
    echo ========================================
)
echo.
pause
set "ERROR=0"
goto :menu
:: Компиляция CEF
:build_cef
echo.
echo ========================================
echo   Компиляция CEF (src_cef)
echo ========================================
echo.
call :check_nodejs
if %ERROR%==1 goto :end_build_cef
call :build_src_cef
if %ERROR%==1 goto :end_build_cef
:end_build_cef
echo.
if %ERROR%==1 (
    echo ========================================
    echo   Компиляция CEF завершена с ошибками
    echo ========================================
) else (
    echo ========================================
    echo   Компиляция CEF завершена успешно
    echo ========================================
)
echo.
pause
set "ERROR=0"
goto :menu
:: Компиляция обоих
:build_both
echo.
echo ========================================
echo   Компиляция CEF и клиента
echo ========================================
echo.
call :check_nodejs
if %ERROR%==1 goto :end_build_both
call :build_src_client
if %ERROR%==1 goto :end_build_both
echo.
call :build_src_cef
if %ERROR%==1 goto :end_build_both
:end_build_both
echo.
if %ERROR%==1 (
    echo ========================================
    echo   Компиляция завершена с ошибками
    echo ========================================
) else (
    echo ========================================
    echo   Компиляция завершена успешно
    echo ========================================
)
echo.
pause
set "ERROR=0"
goto :menu
:: Установка .NET SDK
:install_dotnet
echo.
echo ========================================
echo   Установка .NET SDK
echo ========================================
echo.
call :check_dotnet_sdk
if %ERROR%==0 goto :end_install_dotnet
call :install_dotnet_sdk
if %ERROR%==1 goto :end_install_dotnet
:end_install_dotnet
echo.
if %ERROR%==1 (
    echo ========================================
    echo   Ошибка при установке .NET SDK
    echo ========================================
) else (
    echo ========================================
    echo   .NET SDK установлен успешно
    echo ========================================
)
echo.
pause
set "ERROR=0"
goto :menu
:: Компиляция .NET проекта
:build_dotnet
echo.
echo ========================================
echo   Компиляция .NET проекта (dotnet/resources)
echo ========================================
echo.
call :check_dotnet_sdk
if %ERROR%==1 goto :end_build_dotnet
call :build_dotnet_project
if %ERROR%==1 goto :end_build_dotnet
:end_build_dotnet
echo.
if %ERROR%==1 (
    echo ========================================
    echo   Компиляция .NET проекта завершена с ошибками
    echo ========================================
) else (
    echo ========================================
    echo   Компиляция .NET проекта завершена успешно
    echo ========================================
)
echo.
pause
set "ERROR=0"
goto :menu
:: Компиляция всего проекта
:build_all
echo.
echo ========================================
echo   Компиляция всего проекта
echo ========================================
echo.
call :check_nodejs
if %ERROR%==1 goto :end_build_all
call :check_dotnet_sdk
if %ERROR%==1 goto :end_build_all
echo [1/3] Компиляция клиента...
call :build_src_client
if %ERROR%==1 goto :end_build_all
echo.
echo [2/3] Компиляция CEF...
call :build_src_cef
if %ERROR%==1 goto :end_build_all
echo.
echo [3/3] Компиляция .NET проекта...
call :build_dotnet_project
if %ERROR%==1 goto :end_build_all
:end_build_all
echo.
if %ERROR%==1 (
    echo ========================================
    echo   Компиляция завершена с ошибками
    echo ========================================
) else (
    echo ========================================
    echo   Компиляция всего проекта завершена успешно
    echo ========================================
)
echo.
pause
set "ERROR=0"
goto :menu
:: Выход
:end_script
exit /b 0
:: ========================================
:: Функции
:: ========================================
:: Проверка наличия nvm-windows
:check_nvm
echo [Шаг 1/2] Проверка nvm-windows...
echo ----------------------------------------
where nvm >nul 2>&1
if %errorlevel%==0 (
    echo [OK] nvm-windows найден
    set "NVM_INSTALLED=1"
    goto :eof
)
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 :eof
    )
)
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 :eof
    )
)
if %NVM_INSTALLED%==0 (
    echo [ОШИБКА] Не удалось установить или найти nvm-windows
    set "ERROR=1"
)
goto :eof
:: Установка Node.js через nvm
:install_node
echo.
echo [Шаг 2/2] Проверка 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 :eof
    )
    
    call %NVM_CMD% use %NODE_VERSION%
    if errorlevel 1 (
        echo [ОШИБКА] Не удалось переключиться на версию %NODE_VERSION%
        set "ERROR=1"
        goto :eof
    )
    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 :eof
)
if %NODE_INSTALLED%==0 (
    echo [ОШИБКА] Не удалось установить или использовать Node.js
    set "ERROR=1"
)
goto :eof
:: Проверка наличия Node.js (для компиляции)
:check_nodejs
where node >nul 2>&1
if %errorlevel%==0 (
    for /f "tokens=*" %%i in ('node --version') do set "CURRENT_NODE_VERSION=%%i"
    echo [OK] Node.js найден: %CURRENT_NODE_VERSION%
    echo.
    goto :eof
)
echo [ОШИБКА] Node.js не найден
echo Пожалуйста, сначала установите Node.js (выберите пункт 1 в меню)
set "ERROR=1"
goto :eof
:: Компиляция src_client
:build_src_client
echo Компиляция 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"
        cd ..
        goto :eof
    )
)
call npm run build
if errorlevel 1 (
    echo [ОШИБКА] Компиляция src_client не удалась
    set "ERROR=1"
) else (
    echo [УСПЕХ] src_client скомпилирован успешно
)
cd ..
goto :eof
:: Компиляция src_cef
:build_src_cef
echo Компиляция 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"
        cd ..
        goto :eof
    )
)
call npm run build
if errorlevel 1 (
    echo [ОШИБКА] Компиляция src_cef не удалась
    set "ERROR=1"
) else (
    echo [УСПЕХ] src_cef скомпилирован успешно
)
cd ..
goto :eof
:: Проверка наличия .NET SDK
:check_dotnet_sdk
set "ERROR=0"
where dotnet >nul 2>&1
if %errorlevel%==0 (
    for /f "tokens=*" %%i in ('dotnet --version 2^>nul') do set "CURRENT_DOTNET_VERSION=%%i"
    echo [OK] .NET SDK найден: %CURRENT_DOTNET_VERSION%
    
    :: Проверяем, что установлена нужная версия или совместимая
    echo Проверка версии .NET SDK...
    dotnet --list-sdks | findstr /C:"%DOTNET_VERSION%" >nul
    if %errorlevel%==0 (
        echo [OK] .NET SDK %DOTNET_VERSION% установлен
        set "DOTNET_SDK_INSTALLED=1"
        set "ERROR=0"
        echo.
        goto :eof
    ) else (
        echo [ВНИМАНИЕ] .NET SDK %DOTNET_VERSION% не найден в списке установленных версий
        echo Установленные версии:
        dotnet --list-sdks
        echo.
        echo Продолжаем с текущей версией...
        set "DOTNET_SDK_INSTALLED=1"
        set "ERROR=0"
        echo.
        goto :eof
    )
)
echo [ОШИБКА] .NET SDK не найден
echo Пожалуйста, сначала установите .NET SDK (выберите пункт 5 в меню)
set "ERROR=1"
goto :eof
:: Установка .NET SDK
:install_dotnet_sdk
set "ERROR=0"
echo [Шаг 1/2] Определение архитектуры системы...
echo ----------------------------------------
:: Определяем архитектуру (x64 или x86)
if "%PROCESSOR_ARCHITECTURE%"=="AMD64" (
    set "ARCH=x64"
) else if "%PROCESSOR_ARCHITECTURE%"=="x86" (
    set "ARCH=x86"
) else (
    set "ARCH=x64"
)
echo Архитектура: %ARCH%
echo.
echo [Шаг 2/2] Установка .NET SDK %DOTNET_VERSION%...
echo ----------------------------------------
echo ВНИМАНИЕ: Установка может потребовать прав администратора
echo Если появится запрос UAC, нажмите "Да"
echo.
:: Используем dotnet-install скрипт для установки
set "DOTNET_INSTALL_SCRIPT=%TEMP%\dotnet-install.ps1"
set "DOTNET_INSTALL_URL=https://dot.net/v1/dotnet-install.ps1"
echo Скачивание установщика .NET SDK...
powershell -Command "& {[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; Invoke-WebRequest -Uri '%DOTNET_INSTALL_URL%' -OutFile '%DOTNET_INSTALL_SCRIPT%' -UseBasicParsing}" >nul 2>&1
if not exist "%DOTNET_INSTALL_SCRIPT%" (
    echo [ОШИБКА] Не удалось скачать установщик .NET SDK
    echo Пожалуйста, скачайте и установите .NET SDK %DOTNET_VERSION% вручную:
    echo https://dotnet.microsoft.com/download/dotnet/%DOTNET_VERSION%
    set "ERROR=1"
    goto :eof
)
echo Установка .NET SDK %DOTNET_VERSION%...
powershell -ExecutionPolicy Bypass -Command "& '%DOTNET_INSTALL_SCRIPT%' -Channel %DOTNET_VERSION% -Architecture %ARCH% -InstallDir '%USERPROFILE%\.dotnet'"
if errorlevel 1 (
    echo [ОШИБКА] Не удалось установить .NET SDK %DOTNET_VERSION%
    echo Попробуйте установить вручную: https://dotnet.microsoft.com/download/dotnet/%DOTNET_VERSION%
    set "ERROR=1"
    goto :eof
)
:: Обновляем PATH для текущей сессии
set "DOTNET_ROOT=%USERPROFILE%\.dotnet"
if exist "%DOTNET_ROOT%\dotnet.exe" (
    set "PATH=%DOTNET_ROOT%;%PATH%"
)
:: Проверяем также стандартные места установки
if exist "%ProgramFiles%\dotnet\dotnet.exe" (
    set "PATH=%ProgramFiles%\dotnet;%PATH%"
)
if exist "%ProgramFiles(x86)%\dotnet\dotnet.exe" (
    set "PATH=%ProgramFiles(x86)%\dotnet;%PATH%"
)
:: Проверяем установку
timeout /t 3 /nobreak >nul
where dotnet >nul 2>&1
if %errorlevel%==0 (
    for /f "tokens=*" %%i in ('dotnet --version 2^>nul') do set "CURRENT_DOTNET_VERSION=%%i"
    echo [OK] .NET SDK установлен: %CURRENT_DOTNET_VERSION%
    set "DOTNET_SDK_INSTALLED=1"
    set "ERROR=0"
) else (
    echo [ВНИМАНИЕ] .NET SDK установлен, но не доступен в текущей сессии
    echo Возможно, требуется перезапуск командной строки
    echo Путь установки: %DOTNET_ROOT%
    echo.
    echo Попробуйте перезапустить командную строку и запустить скрипт снова
    echo Или установите .NET SDK вручную: https://dotnet.microsoft.com/download/dotnet/%DOTNET_VERSION%
    set "ERROR=1"
)
goto :eof
:: Компиляция .NET проекта
:build_dotnet_project
set "ERROR=0"
echo Компиляция .NET проекта (dotnet/resources)...
echo ----------------------------------------
cd dotnet\resources
if not exist "NeptuneEvo.sln" (
    echo [ОШИБКА] Файл NeptuneEvo.sln не найден
    set "ERROR=1"
    cd ..\..
    goto :eof
)
echo Восстановление зависимостей NuGet...
dotnet restore NeptuneEvo.sln
if errorlevel 1 (
    echo [ОШИБКА] Не удалось восстановить зависимости NuGet
    set "ERROR=1"
    cd ..\..
    goto :eof
)
echo Компиляция решения...
echo Конфигурация: Debug (сервер ищет файлы в bin\Debug)
echo.
:: Собираем решение
dotnet build NeptuneEvo.sln --configuration Debug -p:Platform=x64
if errorlevel 1 (
    echo [ОШИБКА] Компиляция .NET проекта не удалась
    set "ERROR=1"
    cd ..\..
    goto :eof
)
:: Публикуем основной проект для копирования всех зависимостей
echo Публикация проекта NeptuneEvo для копирования зависимостей...
cd NeptuneEvo
dotnet publish --configuration Debug -p:Platform=x64 -p:CopyLocalLockFileAssemblies=true -o bin\Debug\netcoreapp3.1
if errorlevel 1 (
    echo [ВНИМАНИЕ] Публикация с --no-build не удалась, пробуем полную пересборку...
    dotnet publish --configuration Debug -p:Platform=x64 -p:CopyLocalLockFileAssemblies=true -o bin\Debug\netcoreapp3.1 --force
    if errorlevel 1 (
        echo [ОШИБКА] Публикация проекта не удалась
        set "ERROR=1"
        cd ..\..
        goto :eof
    )
)
cd ..
if %ERROR%==0 (
    echo [УСПЕХ] .NET проект скомпилирован и опубликован успешно
    echo Все зависимости скопированы в: dotnet\resources\NeptuneEvo\bin\Debug\netcoreapp3.1\
)
cd ..\..
goto :eof
Запускаем батник и радуемся!
 
Последнее редактирование:
Реакции: WHYNOT

WHYNOT

Начинающий специалист
VIP
BackEnd developer
8 Апр 2021
172
46
92
так вроде для того что бы твой батник работал нужно nvm установить(
 

WHYNOT

Начинающий специалист
VIP
BackEnd developer
8 Апр 2021
172
46
92
а сорян не увидел инсталлер в батнике
 
  • Love
Реакции: vvrm7

Harland David Sanders

🍔 ChefBurger
Команда форума
High developer
10 Сен 2020
3,932
3,156
259
зачем? если все еще нужно указывать mysql настройки и билдить dotnet.
 

vvrm7

Участник портала
Мошенник
21 Дек 2025
42
10
8
зачем? если все еще нужно указывать mysql настройки и билдить dotnet.
просто удобнее через 1 батник, чем рыться по сайтам, скачивать что то и т.д., это больше для тех кто первый раз скачивает RedAge. А mysql и билд dotnet это уже немного другая история
1769249987194.png
 

Harland David Sanders

🍔 ChefBurger
Команда форума
High developer
10 Сен 2020
3,932
3,156
259
для тех кто первый раз скачивает RedAge
щас легче, а потом у тебя 100500 новых вопросов и проблем почему не работает что-то, ибо лучше самому понять что и как надо установить, чем запустить батник и нихуя не понять.
я понимаю что этот батник сделан через ИИ, но можно найти и другие (более полезные) применения токенам :sneaky:
 
  • Haha
  • RoflanEbalo
Реакции: 🐝 ubees и WHYNOT

vvrm7

Участник портала
Мошенник
21 Дек 2025
42
10
8
щас легче, а потом у тебя 100500 новых вопросов и проблем почему не работает что-то, ибо лучше самому понять что и как надо установить, чем запустить батник и нихуя не понять.
я понимаю что этот батник сделан через ИИ, но можно найти и другие (более полезные) применения токенам :sneaky:
да это мем из разряда, сделал простой и понятный интерфейс, а природа создала более тупого юзера, вопросы в любом случае будут(
 

NULMEKS

Высший разум
VIP
22 Сен 2023
956
592
143
28
Прям сказка получается: 😂
1. Мошенник, и батник.
2. Батник и мошенник.

Как по мне не плохие заголовки для названия. 👆

Теперь перейдем к сценарию: 👇
1. Как запустить мошенника через батник?
2. Как запустить батник через мошенника?

Ну или ещё можно добавить третье лицо:
Их было трое, три лучших друга, батник, мошенник, и ИИ. 😂

Хотите узнать как?
1. ИИ, запускало мошенника чтоб мошенник запустил батник? 😂

2. ИИ, запустило батник, чтоб батник запустил мошенника. 😂

PS: Это так себе просто проснулся и порвало 🫠
 
Последнее редактирование:

night.

Начинающий специалист
2 Июл 2023
563
62
65
Прям сказка получается: 😂
1. Мошенник, и батник.
2. Батник и мошенник.

Как по мне не плохие заголовки для названия. 👆

Теперь перейдем к сценарию: 👇
1. Как запустить мошенника через батник?
2. Как запустить батник через мошенника?

Ну или ещё можно добавить третье лицо:
Их было трое, три лучших друга, батник, мошенник, и ИИ. 😂

Хотите узнать как?
1. ИИ, запускало мошенника чтоб мошенник запустил батник? 😂

2. ИИ, запустило батник, чтоб батник запустил мошенника. 😂

PS: Это так себе просто проснулся и порвало 🫠
1769283848830.png
 

vvrm7

Участник портала
Мошенник
21 Дек 2025
42
10
8
Обновленный батник

Код:
@echo off
setlocal enabledelayedexpansion
chcp 65001 >nul

set "ERROR=0"
set "NODE_VERSION=16.14.0"
set "NVM_VERSION=1.1.11"
set "NVM_INSTALLED=0"
set "NODE_INSTALLED=0"
set "DOTNET_VERSION=3.1"
set "DOTNET_SDK_INSTALLED=0"

:: Меню выбора
:menu
cls
echo ========================================
echo   Меню компиляции проекта
echo ========================================
echo.
echo   1. Установка Node.js
echo   2. Компиляция клиента (src_client)
echo   3. Компиляция CEF (src_cef)
echo   4. Компиляция CEF и клиента
echo   5. Установка .NET SDK
echo   6. Компиляция .NET проекта (dotnet/resources)
echo   7. Компиляция всего проекта (CEF + клиент + .NET)
echo   0. Выход
echo.
echo ========================================
set /p "choice=Выберите действие (0-7): "

if "%choice%"=="1" goto :install_nodejs
if "%choice%"=="2" goto :build_client
if "%choice%"=="3" goto :build_cef
if "%choice%"=="4" goto :build_both
if "%choice%"=="5" goto :install_dotnet
if "%choice%"=="6" goto :build_dotnet
if "%choice%"=="7" goto :build_all
if "%choice%"=="0" goto :end_script

echo.
echo [ОШИБКА] Неверный выбор. Попробуйте снова.
timeout /t 2 /nobreak >nul
goto :menu

:: Установка Node.js
:install_nodejs
echo.
echo ========================================
echo   Установка Node.js
echo ========================================
echo.

call :check_nvm
if %ERROR%==1 goto :end_install_nodejs

call :install_node
if %ERROR%==1 goto :end_install_nodejs

:end_install_nodejs
echo.
if %ERROR%==1 (
    echo ========================================
    echo   Ошибка при установке Node.js
    echo ========================================
) else (
    echo ========================================
    echo   Node.js установлен успешно
    echo ========================================
)
echo.
pause
set "ERROR=0"
goto :menu

:: Компиляция клиента
:build_client
echo.
echo ========================================
echo   Компиляция клиента (src_client)
echo ========================================
echo.

call :check_nodejs
if %ERROR%==1 goto :end_build_client

call :build_src_client
if %ERROR%==1 goto :end_build_client

:end_build_client
echo.
if %ERROR%==1 (
    echo ========================================
    echo   Компиляция клиента завершена с ошибками
    echo ========================================
) else (
    echo ========================================
    echo   Компиляция клиента завершена успешно
    echo ========================================
)
echo.
pause
set "ERROR=0"
goto :menu

:: Компиляция CEF
:build_cef
echo.
echo ========================================
echo   Компиляция CEF (src_cef)
echo ========================================
echo.

call :check_nodejs
if %ERROR%==1 goto :end_build_cef

call :build_src_cef
if %ERROR%==1 goto :end_build_cef

:end_build_cef
echo.
if %ERROR%==1 (
    echo ========================================
    echo   Компиляция CEF завершена с ошибками
    echo ========================================
) else (
    echo ========================================
    echo   Компиляция CEF завершена успешно
    echo ========================================
)
echo.
pause
set "ERROR=0"
goto :menu

:: Компиляция обоих
:build_both
echo.
echo ========================================
echo   Компиляция CEF и клиента
echo ========================================
echo.

call :check_nodejs
if %ERROR%==1 goto :end_build_both

call :build_src_client
if %ERROR%==1 goto :end_build_both

echo.

call :build_src_cef
if %ERROR%==1 goto :end_build_both

:end_build_both
echo.
if %ERROR%==1 (
    echo ========================================
    echo   Компиляция завершена с ошибками
    echo ========================================
) else (
    echo ========================================
    echo   Компиляция завершена успешно
    echo ========================================
)
echo.
pause
set "ERROR=0"
goto :menu

:: Установка .NET SDK
:install_dotnet
echo.
echo ========================================
echo   Установка .NET SDK
echo ========================================
echo.

call :check_dotnet_sdk
if %ERROR%==0 goto :end_install_dotnet

call :install_dotnet_sdk
if %ERROR%==1 goto :end_install_dotnet

:end_install_dotnet
echo.
if %ERROR%==1 (
    echo ========================================
    echo   Ошибка при установке .NET SDK
    echo ========================================
) else (
    echo ========================================
    echo   .NET SDK установлен успешно
    echo ========================================
)
echo.
pause
set "ERROR=0"
goto :menu

:: Компиляция .NET проекта
:build_dotnet
echo.
echo ========================================
echo   Компиляция .NET проекта (dotnet/resources)
echo ========================================
echo.

call :check_dotnet_sdk
if %ERROR%==1 goto :end_build_dotnet

call :build_dotnet_project
if %ERROR%==1 goto :end_build_dotnet

:end_build_dotnet
echo.
if %ERROR%==1 (
    echo ========================================
    echo   Компиляция .NET проекта завершена с ошибками
    echo ========================================
) else (
    echo ========================================
    echo   Компиляция .NET проекта завершена успешно
    echo ========================================
)
echo.
pause
set "ERROR=0"
goto :menu

:: Компиляция всего проекта
:build_all
echo.
echo ========================================
echo   Компиляция всего проекта
echo ========================================
echo.

call :check_nodejs
if %ERROR%==1 goto :end_build_all

call :check_dotnet_sdk
if %ERROR%==1 goto :end_build_all

echo [1/3] Компиляция клиента...
call :build_src_client
if %ERROR%==1 goto :end_build_all

echo.
echo [2/3] Компиляция CEF...
call :build_src_cef
if %ERROR%==1 goto :end_build_all

echo.
echo [3/3] Компиляция .NET проекта...
call :build_dotnet_project
if %ERROR%==1 goto :end_build_all

:end_build_all
echo.
if %ERROR%==1 (
    echo ========================================
    echo   Компиляция завершена с ошибками
    echo ========================================
) else (
    echo ========================================
    echo   Компиляция всего проекта завершена успешно
    echo ========================================
)
echo.
pause
set "ERROR=0"
goto :menu

:: Выход
:end_script
exit /b 0

:: ========================================
:: Функции
:: ========================================

:: Проверка наличия nvm-windows
:check_nvm
echo [Шаг 1/2] Проверка nvm-windows...
echo ----------------------------------------
where nvm >nul 2>&1
if %errorlevel%==0 (
    echo [OK] nvm-windows найден
    set "NVM_INSTALLED=1"
    goto :eof
)

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 :eof
    )
)

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 :eof
    )
)

if %NVM_INSTALLED%==0 (
    echo [ОШИБКА] Не удалось установить или найти nvm-windows
    set "ERROR=1"
)
goto :eof

:: Установка Node.js через nvm
:install_node
echo.
echo [Шаг 2/2] Проверка 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 :eof
    )
   
    call %NVM_CMD% use %NODE_VERSION%
    if errorlevel 1 (
        echo [ОШИБКА] Не удалось переключиться на версию %NODE_VERSION%
        set "ERROR=1"
        goto :eof
    )
    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 :eof
)

if %NODE_INSTALLED%==0 (
    echo [ОШИБКА] Не удалось установить или использовать Node.js
    set "ERROR=1"
)
goto :eof

:: Проверка наличия Node.js (для компиляции)
:check_nodejs
where node >nul 2>&1
if %errorlevel%==0 (
    for /f "tokens=*" %%i in ('node --version') do set "CURRENT_NODE_VERSION=%%i"
    echo [OK] Node.js найден: %CURRENT_NODE_VERSION%
    echo.
    goto :eof
)

echo [ОШИБКА] Node.js не найден
echo Пожалуйста, сначала установите Node.js (выберите пункт 1 в меню)
set "ERROR=1"
goto :eof

:: Компиляция src_client
:build_src_client
echo Компиляция 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"
        cd ..
        goto :eof
    )
)
call npm run build
if errorlevel 1 (
    echo [ОШИБКА] Компиляция src_client не удалась
    set "ERROR=1"
) else (
    echo [УСПЕХ] src_client скомпилирован успешно
)
cd ..
goto :eof

:: Компиляция src_cef
:build_src_cef
echo Компиляция 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"
        cd ..
        goto :eof
    )
)
call npm run build
if errorlevel 1 (
    echo [ОШИБКА] Компиляция src_cef не удалась
    set "ERROR=1"
) else (
    echo [УСПЕХ] src_cef скомпилирован успешно
)
cd ..
goto :eof

:: Проверка наличия .NET SDK
:check_dotnet_sdk
set "ERROR=0"
where dotnet >nul 2>&1
if %errorlevel%==0 (
    for /f "tokens=*" %%i in ('dotnet --version 2^>nul') do set "CURRENT_DOTNET_VERSION=%%i"
    echo [OK] .NET SDK найден: %CURRENT_DOTNET_VERSION%
   
    :: Проверяем, что установлена нужная версия или совместимая
    echo Проверка версии .NET SDK...
    dotnet --list-sdks | findstr /C:"%DOTNET_VERSION%" >nul
    if %errorlevel%==0 (
        echo [OK] .NET SDK %DOTNET_VERSION% установлен
        set "DOTNET_SDK_INSTALLED=1"
        set "ERROR=0"
        echo.
        goto :eof
    ) else (
        echo [ВНИМАНИЕ] .NET SDK %DOTNET_VERSION% не найден в списке установленных версий
        echo Установленные версии:
        dotnet --list-sdks
        echo.
        echo Продолжаем с текущей версией...
        set "DOTNET_SDK_INSTALLED=1"
        set "ERROR=0"
        echo.
        goto :eof
    )
)

echo [ОШИБКА] .NET SDK не найден
echo Пожалуйста, сначала установите .NET SDK (выберите пункт 5 в меню)
set "ERROR=1"
goto :eof

:: Установка .NET SDK
:install_dotnet_sdk
set "ERROR=0"
echo [Шаг 1/2] Определение архитектуры системы...
echo ----------------------------------------

:: Определяем архитектуру (x64 или x86)
if "%PROCESSOR_ARCHITECTURE%"=="AMD64" (
    set "ARCH=x64"
) else if "%PROCESSOR_ARCHITECTURE%"=="x86" (
    set "ARCH=x86"
) else (
    set "ARCH=x64"
)

echo Архитектура: %ARCH%
echo.

echo [Шаг 2/2] Установка .NET SDK %DOTNET_VERSION%...
echo ----------------------------------------
echo ВНИМАНИЕ: Установка может потребовать прав администратора
echo Если появится запрос UAC, нажмите "Да"
echo.

:: Используем dotnet-install скрипт для установки
set "DOTNET_INSTALL_SCRIPT=%TEMP%\dotnet-install.ps1"
set "DOTNET_INSTALL_URL=https://dot.net/v1/dotnet-install.ps1"

echo Скачивание установщика .NET SDK...
powershell -Command "& {[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; Invoke-WebRequest -Uri '%DOTNET_INSTALL_URL%' -OutFile '%DOTNET_INSTALL_SCRIPT%' -UseBasicParsing}" >nul 2>&1

if not exist "%DOTNET_INSTALL_SCRIPT%" (
    echo [ОШИБКА] Не удалось скачать установщик .NET SDK
    echo Пожалуйста, скачайте и установите .NET SDK %DOTNET_VERSION% вручную:
    echo https://dotnet.microsoft.com/download/dotnet/%DOTNET_VERSION%
    set "ERROR=1"
    goto :eof
)

echo Установка .NET SDK %DOTNET_VERSION%...
powershell -ExecutionPolicy Bypass -Command "& '%DOTNET_INSTALL_SCRIPT%' -Channel %DOTNET_VERSION% -Architecture %ARCH% -InstallDir '%USERPROFILE%\.dotnet'"

if errorlevel 1 (
    echo [ОШИБКА] Не удалось установить .NET SDK %DOTNET_VERSION%
    echo Попробуйте установить вручную: https://dotnet.microsoft.com/download/dotnet/%DOTNET_VERSION%
    set "ERROR=1"
    goto :eof
)

:: Обновляем PATH для текущей сессии
set "DOTNET_ROOT=%USERPROFILE%\.dotnet"
if exist "%DOTNET_ROOT%\dotnet.exe" (
    set "PATH=%DOTNET_ROOT%;%PATH%"
)

:: Проверяем также стандартные места установки
if exist "%ProgramFiles%\dotnet\dotnet.exe" (
    set "PATH=%ProgramFiles%\dotnet;%PATH%"
)
if exist "%ProgramFiles(x86)%\dotnet\dotnet.exe" (
    set "PATH=%ProgramFiles(x86)%\dotnet;%PATH%"
)

:: Проверяем установку
timeout /t 3 /nobreak >nul
where dotnet >nul 2>&1
if %errorlevel%==0 (
    for /f "tokens=*" %%i in ('dotnet --version 2^>nul') do set "CURRENT_DOTNET_VERSION=%%i"
    echo [OK] .NET SDK установлен: %CURRENT_DOTNET_VERSION%
    set "DOTNET_SDK_INSTALLED=1"
    set "ERROR=0"
) else (
    echo [ВНИМАНИЕ] .NET SDK установлен, но не доступен в текущей сессии
    echo Возможно, требуется перезапуск командной строки
    echo Путь установки: %DOTNET_ROOT%
    echo.
    echo Попробуйте перезапустить командную строку и запустить скрипт снова
    echo Или установите .NET SDK вручную: https://dotnet.microsoft.com/download/dotnet/%DOTNET_VERSION%
    set "ERROR=1"
)
goto :eof

:: Компиляция .NET проекта
:build_dotnet_project
set "ERROR=0"
echo Компиляция .NET проекта (dotnet/resources)...
echo ----------------------------------------
cd dotnet\resources

if not exist "NeptuneEvo.sln" (
    echo [ОШИБКА] Файл NeptuneEvo.sln не найден
    set "ERROR=1"
    cd ..\..
    goto :eof
)

echo Восстановление зависимостей NuGet...
dotnet restore NeptuneEvo.sln
if errorlevel 1 (
    echo [ОШИБКА] Не удалось восстановить зависимости NuGet
    set "ERROR=1"
    cd ..\..
    goto :eof
)

echo Компиляция решения...
dotnet build NeptuneEvo.sln --configuration Release -p:Platform=x64
if errorlevel 1 (
    echo [ОШИБКА] Компиляция .NET проекта не удалась
    set "ERROR=1"
) else (
    echo [УСПЕХ] .NET проект скомпилирован успешно
)

cd ..\..
goto :eof
Теперь можно компилировать на выбор, так же доступна компиляция серверной части проекта, с установкой .NET если необходимо
1769432210601.png
 

Sidney

Гуру
19 Апр 2024
660
131
85
Обновленный батник

Код:
@echo off
setlocal enabledelayedexpansion
chcp 65001 >nul

set "ERROR=0"
set "NODE_VERSION=16.14.0"
set "NVM_VERSION=1.1.11"
set "NVM_INSTALLED=0"
set "NODE_INSTALLED=0"
set "DOTNET_VERSION=3.1"
set "DOTNET_SDK_INSTALLED=0"

:: Меню выбора
:menu
cls
echo ========================================
echo   Меню компиляции проекта
echo ========================================
echo.
echo   1. Установка Node.js
echo   2. Компиляция клиента (src_client)
echo   3. Компиляция CEF (src_cef)
echo   4. Компиляция CEF и клиента
echo   5. Установка .NET SDK
echo   6. Компиляция .NET проекта (dotnet/resources)
echo   7. Компиляция всего проекта (CEF + клиент + .NET)
echo   0. Выход
echo.
echo ========================================
set /p "choice=Выберите действие (0-7): "

if "%choice%"=="1" goto :install_nodejs
if "%choice%"=="2" goto :build_client
if "%choice%"=="3" goto :build_cef
if "%choice%"=="4" goto :build_both
if "%choice%"=="5" goto :install_dotnet
if "%choice%"=="6" goto :build_dotnet
if "%choice%"=="7" goto :build_all
if "%choice%"=="0" goto :end_script

echo.
echo [ОШИБКА] Неверный выбор. Попробуйте снова.
timeout /t 2 /nobreak >nul
goto :menu

:: Установка Node.js
:install_nodejs
echo.
echo ========================================
echo   Установка Node.js
echo ========================================
echo.

call :check_nvm
if %ERROR%==1 goto :end_install_nodejs

call :install_node
if %ERROR%==1 goto :end_install_nodejs

:end_install_nodejs
echo.
if %ERROR%==1 (
    echo ========================================
    echo   Ошибка при установке Node.js
    echo ========================================
) else (
    echo ========================================
    echo   Node.js установлен успешно
    echo ========================================
)
echo.
pause
set "ERROR=0"
goto :menu

:: Компиляция клиента
:build_client
echo.
echo ========================================
echo   Компиляция клиента (src_client)
echo ========================================
echo.

call :check_nodejs
if %ERROR%==1 goto :end_build_client

call :build_src_client
if %ERROR%==1 goto :end_build_client

:end_build_client
echo.
if %ERROR%==1 (
    echo ========================================
    echo   Компиляция клиента завершена с ошибками
    echo ========================================
) else (
    echo ========================================
    echo   Компиляция клиента завершена успешно
    echo ========================================
)
echo.
pause
set "ERROR=0"
goto :menu

:: Компиляция CEF
:build_cef
echo.
echo ========================================
echo   Компиляция CEF (src_cef)
echo ========================================
echo.

call :check_nodejs
if %ERROR%==1 goto :end_build_cef

call :build_src_cef
if %ERROR%==1 goto :end_build_cef

:end_build_cef
echo.
if %ERROR%==1 (
    echo ========================================
    echo   Компиляция CEF завершена с ошибками
    echo ========================================
) else (
    echo ========================================
    echo   Компиляция CEF завершена успешно
    echo ========================================
)
echo.
pause
set "ERROR=0"
goto :menu

:: Компиляция обоих
:build_both
echo.
echo ========================================
echo   Компиляция CEF и клиента
echo ========================================
echo.

call :check_nodejs
if %ERROR%==1 goto :end_build_both

call :build_src_client
if %ERROR%==1 goto :end_build_both

echo.

call :build_src_cef
if %ERROR%==1 goto :end_build_both

:end_build_both
echo.
if %ERROR%==1 (
    echo ========================================
    echo   Компиляция завершена с ошибками
    echo ========================================
) else (
    echo ========================================
    echo   Компиляция завершена успешно
    echo ========================================
)
echo.
pause
set "ERROR=0"
goto :menu

:: Установка .NET SDK
:install_dotnet
echo.
echo ========================================
echo   Установка .NET SDK
echo ========================================
echo.

call :check_dotnet_sdk
if %ERROR%==0 goto :end_install_dotnet

call :install_dotnet_sdk
if %ERROR%==1 goto :end_install_dotnet

:end_install_dotnet
echo.
if %ERROR%==1 (
    echo ========================================
    echo   Ошибка при установке .NET SDK
    echo ========================================
) else (
    echo ========================================
    echo   .NET SDK установлен успешно
    echo ========================================
)
echo.
pause
set "ERROR=0"
goto :menu

:: Компиляция .NET проекта
:build_dotnet
echo.
echo ========================================
echo   Компиляция .NET проекта (dotnet/resources)
echo ========================================
echo.

call :check_dotnet_sdk
if %ERROR%==1 goto :end_build_dotnet

call :build_dotnet_project
if %ERROR%==1 goto :end_build_dotnet

:end_build_dotnet
echo.
if %ERROR%==1 (
    echo ========================================
    echo   Компиляция .NET проекта завершена с ошибками
    echo ========================================
) else (
    echo ========================================
    echo   Компиляция .NET проекта завершена успешно
    echo ========================================
)
echo.
pause
set "ERROR=0"
goto :menu

:: Компиляция всего проекта
:build_all
echo.
echo ========================================
echo   Компиляция всего проекта
echo ========================================
echo.

call :check_nodejs
if %ERROR%==1 goto :end_build_all

call :check_dotnet_sdk
if %ERROR%==1 goto :end_build_all

echo [1/3] Компиляция клиента...
call :build_src_client
if %ERROR%==1 goto :end_build_all

echo.
echo [2/3] Компиляция CEF...
call :build_src_cef
if %ERROR%==1 goto :end_build_all

echo.
echo [3/3] Компиляция .NET проекта...
call :build_dotnet_project
if %ERROR%==1 goto :end_build_all

:end_build_all
echo.
if %ERROR%==1 (
    echo ========================================
    echo   Компиляция завершена с ошибками
    echo ========================================
) else (
    echo ========================================
    echo   Компиляция всего проекта завершена успешно
    echo ========================================
)
echo.
pause
set "ERROR=0"
goto :menu

:: Выход
:end_script
exit /b 0

:: ========================================
:: Функции
:: ========================================

:: Проверка наличия nvm-windows
:check_nvm
echo [Шаг 1/2] Проверка nvm-windows...
echo ----------------------------------------
where nvm >nul 2>&1
if %errorlevel%==0 (
    echo [OK] nvm-windows найден
    set "NVM_INSTALLED=1"
    goto :eof
)

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 :eof
    )
)

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 :eof
    )
)

if %NVM_INSTALLED%==0 (
    echo [ОШИБКА] Не удалось установить или найти nvm-windows
    set "ERROR=1"
)
goto :eof

:: Установка Node.js через nvm
:install_node
echo.
echo [Шаг 2/2] Проверка 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 :eof
    )
  
    call %NVM_CMD% use %NODE_VERSION%
    if errorlevel 1 (
        echo [ОШИБКА] Не удалось переключиться на версию %NODE_VERSION%
        set "ERROR=1"
        goto :eof
    )
    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 :eof
)

if %NODE_INSTALLED%==0 (
    echo [ОШИБКА] Не удалось установить или использовать Node.js
    set "ERROR=1"
)
goto :eof

:: Проверка наличия Node.js (для компиляции)
:check_nodejs
where node >nul 2>&1
if %errorlevel%==0 (
    for /f "tokens=*" %%i in ('node --version') do set "CURRENT_NODE_VERSION=%%i"
    echo [OK] Node.js найден: %CURRENT_NODE_VERSION%
    echo.
    goto :eof
)

echo [ОШИБКА] Node.js не найден
echo Пожалуйста, сначала установите Node.js (выберите пункт 1 в меню)
set "ERROR=1"
goto :eof

:: Компиляция src_client
:build_src_client
echo Компиляция 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"
        cd ..
        goto :eof
    )
)
call npm run build
if errorlevel 1 (
    echo [ОШИБКА] Компиляция src_client не удалась
    set "ERROR=1"
) else (
    echo [УСПЕХ] src_client скомпилирован успешно
)
cd ..
goto :eof

:: Компиляция src_cef
:build_src_cef
echo Компиляция 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"
        cd ..
        goto :eof
    )
)
call npm run build
if errorlevel 1 (
    echo [ОШИБКА] Компиляция src_cef не удалась
    set "ERROR=1"
) else (
    echo [УСПЕХ] src_cef скомпилирован успешно
)
cd ..
goto :eof

:: Проверка наличия .NET SDK
:check_dotnet_sdk
set "ERROR=0"
where dotnet >nul 2>&1
if %errorlevel%==0 (
    for /f "tokens=*" %%i in ('dotnet --version 2^>nul') do set "CURRENT_DOTNET_VERSION=%%i"
    echo [OK] .NET SDK найден: %CURRENT_DOTNET_VERSION%
  
    :: Проверяем, что установлена нужная версия или совместимая
    echo Проверка версии .NET SDK...
    dotnet --list-sdks | findstr /C:"%DOTNET_VERSION%" >nul
    if %errorlevel%==0 (
        echo [OK] .NET SDK %DOTNET_VERSION% установлен
        set "DOTNET_SDK_INSTALLED=1"
        set "ERROR=0"
        echo.
        goto :eof
    ) else (
        echo [ВНИМАНИЕ] .NET SDK %DOTNET_VERSION% не найден в списке установленных версий
        echo Установленные версии:
        dotnet --list-sdks
        echo.
        echo Продолжаем с текущей версией...
        set "DOTNET_SDK_INSTALLED=1"
        set "ERROR=0"
        echo.
        goto :eof
    )
)

echo [ОШИБКА] .NET SDK не найден
echo Пожалуйста, сначала установите .NET SDK (выберите пункт 5 в меню)
set "ERROR=1"
goto :eof

:: Установка .NET SDK
:install_dotnet_sdk
set "ERROR=0"
echo [Шаг 1/2] Определение архитектуры системы...
echo ----------------------------------------

:: Определяем архитектуру (x64 или x86)
if "%PROCESSOR_ARCHITECTURE%"=="AMD64" (
    set "ARCH=x64"
) else if "%PROCESSOR_ARCHITECTURE%"=="x86" (
    set "ARCH=x86"
) else (
    set "ARCH=x64"
)

echo Архитектура: %ARCH%
echo.

echo [Шаг 2/2] Установка .NET SDK %DOTNET_VERSION%...
echo ----------------------------------------
echo ВНИМАНИЕ: Установка может потребовать прав администратора
echo Если появится запрос UAC, нажмите "Да"
echo.

:: Используем dotnet-install скрипт для установки
set "DOTNET_INSTALL_SCRIPT=%TEMP%\dotnet-install.ps1"
set "DOTNET_INSTALL_URL=https://dot.net/v1/dotnet-install.ps1"

echo Скачивание установщика .NET SDK...
powershell -Command "& {[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; Invoke-WebRequest -Uri '%DOTNET_INSTALL_URL%' -OutFile '%DOTNET_INSTALL_SCRIPT%' -UseBasicParsing}" >nul 2>&1

if not exist "%DOTNET_INSTALL_SCRIPT%" (
    echo [ОШИБКА] Не удалось скачать установщик .NET SDK
    echo Пожалуйста, скачайте и установите .NET SDK %DOTNET_VERSION% вручную:
    echo https://dotnet.microsoft.com/download/dotnet/%DOTNET_VERSION%
    set "ERROR=1"
    goto :eof
)

echo Установка .NET SDK %DOTNET_VERSION%...
powershell -ExecutionPolicy Bypass -Command "& '%DOTNET_INSTALL_SCRIPT%' -Channel %DOTNET_VERSION% -Architecture %ARCH% -InstallDir '%USERPROFILE%\.dotnet'"

if errorlevel 1 (
    echo [ОШИБКА] Не удалось установить .NET SDK %DOTNET_VERSION%
    echo Попробуйте установить вручную: https://dotnet.microsoft.com/download/dotnet/%DOTNET_VERSION%
    set "ERROR=1"
    goto :eof
)

:: Обновляем PATH для текущей сессии
set "DOTNET_ROOT=%USERPROFILE%\.dotnet"
if exist "%DOTNET_ROOT%\dotnet.exe" (
    set "PATH=%DOTNET_ROOT%;%PATH%"
)

:: Проверяем также стандартные места установки
if exist "%ProgramFiles%\dotnet\dotnet.exe" (
    set "PATH=%ProgramFiles%\dotnet;%PATH%"
)
if exist "%ProgramFiles(x86)%\dotnet\dotnet.exe" (
    set "PATH=%ProgramFiles(x86)%\dotnet;%PATH%"
)

:: Проверяем установку
timeout /t 3 /nobreak >nul
where dotnet >nul 2>&1
if %errorlevel%==0 (
    for /f "tokens=*" %%i in ('dotnet --version 2^>nul') do set "CURRENT_DOTNET_VERSION=%%i"
    echo [OK] .NET SDK установлен: %CURRENT_DOTNET_VERSION%
    set "DOTNET_SDK_INSTALLED=1"
    set "ERROR=0"
) else (
    echo [ВНИМАНИЕ] .NET SDK установлен, но не доступен в текущей сессии
    echo Возможно, требуется перезапуск командной строки
    echo Путь установки: %DOTNET_ROOT%
    echo.
    echo Попробуйте перезапустить командную строку и запустить скрипт снова
    echo Или установите .NET SDK вручную: https://dotnet.microsoft.com/download/dotnet/%DOTNET_VERSION%
    set "ERROR=1"
)
goto :eof

:: Компиляция .NET проекта
:build_dotnet_project
set "ERROR=0"
echo Компиляция .NET проекта (dotnet/resources)...
echo ----------------------------------------
cd dotnet\resources

if not exist "NeptuneEvo.sln" (
    echo [ОШИБКА] Файл NeptuneEvo.sln не найден
    set "ERROR=1"
    cd ..\..
    goto :eof
)

echo Восстановление зависимостей NuGet...
dotnet restore NeptuneEvo.sln
if errorlevel 1 (
    echo [ОШИБКА] Не удалось восстановить зависимости NuGet
    set "ERROR=1"
    cd ..\..
    goto :eof
)

echo Компиляция решения...
dotnet build NeptuneEvo.sln --configuration Release -p:Platform=x64
if errorlevel 1 (
    echo [ОШИБКА] Компиляция .NET проекта не удалась
    set "ERROR=1"
) else (
    echo [УСПЕХ] .NET проект скомпилирован успешно
)

cd ..\..
goto :eof
Теперь можно компилировать на выбор, так же доступна компиляция серверной части проекта, с установкой .NET если необходимо Посмотреть вложение 24116
Сделай выбор версии, Release или Debug для компиляции серверной части
 

Sidney

Гуру
19 Апр 2024
660
131
85
Если у тебя мод, RedAge оригинальный то там нет в этом смысла.

Нужно переписать, настроить конфиги билда.
Редага в дебаге билдится у него там релиз билдится, новички не будут понимать почему у них ничего не меняется на сервере, поэтому лучше сделать выбор debug или release
 

🐝 ubees

Мастер
11 Фев 2023
1,069
172
134
41
Редага в дебаге билдится у него там релиз билдится, новички не будут понимать почему у них ничего не меняется на сервере, поэтому лучше сделать выбор debug или release
да новичкам debug или release вообще не о чём не говорит и они только путаться будут и забывать
 

NULMEKS

Высший разум
VIP
22 Сен 2023
956
592
143
28
Новичка
да новичкам debug или release вообще не о чём не говорит и они только путаться будут и забывать
Новичкам вообще, не мешало бы сначала ознакомиться с базой перед тем как куда-то лезть. Или вообще не браться если нет желания чтоб не было куча глупых тем.

Потому что некоторые новички как то умеют гуглить и находить то что им надо, и хотя бы хоть как то ознакомиться с базой могут или найти что где надо.

А некоторые даже тему нормально не могут сформулировать. И по мимо всего по инструкции сделать.
 
Реакции: 🐝 ubees

vvrm7

Участник портала
Мошенник
21 Дек 2025
42
10
8
Всем привет!
Сегодня мы создадим батник, который автоматически установит node js для RedAge 3.0, зависимости и скомпилирует поочередно клиент и cef
Заходим в корень проекта
Создаем текстовый файл, и переименовываем его меняя расширение .txt на .bat и называем его build, получается файл build.bat
Далее открываем его с помощью например блокнота, или VScode, cursor или любым другим редактором и вставляем следующий код:
Код:
@echo off
setlocal enabledelayedexpansion
chcp 65001 >nul
set "ERROR=0"
set "NODE_VERSION=16.14.0"
set "NVM_VERSION=1.1.11"
set "NVM_INSTALLED=0"
set "NODE_INSTALLED=0"
set "DOTNET_VERSION=3.1"
set "DOTNET_SDK_INSTALLED=0"
:: Меню выбора
:menu
cls
echo ========================================
echo   Меню компиляции проекта
echo ========================================
echo.
echo   1. Установка Node.js
echo   2. Компиляция клиента (src_client)
echo   3. Компиляция CEF (src_cef)
echo   4. Компиляция CEF и клиента
echo   5. Установка .NET SDK
echo   6. Компиляция .NET проекта (dotnet/resources)
echo   7. Компиляция всего проекта (CEF + клиент + .NET)
echo   0. Выход
echo.
echo ========================================
set /p "choice=Выберите действие (0-7): "
if "%choice%"=="1" goto :install_nodejs
if "%choice%"=="2" goto :build_client
if "%choice%"=="3" goto :build_cef
if "%choice%"=="4" goto :build_both
if "%choice%"=="5" goto :install_dotnet
if "%choice%"=="6" goto :build_dotnet
if "%choice%"=="7" goto :build_all
if "%choice%"=="0" goto :end_script
echo.
echo [ОШИБКА] Неверный выбор. Попробуйте снова.
timeout /t 2 /nobreak >nul
goto :menu
:: Установка Node.js
:install_nodejs
echo.
echo ========================================
echo   Установка Node.js
echo ========================================
echo.
call :check_nvm
if %ERROR%==1 goto :end_install_nodejs
call :install_node
if %ERROR%==1 goto :end_install_nodejs
:end_install_nodejs
echo.
if %ERROR%==1 (
    echo ========================================
    echo   Ошибка при установке Node.js
    echo ========================================
) else (
    echo ========================================
    echo   Node.js установлен успешно
    echo ========================================
)
echo.
pause
set "ERROR=0"
goto :menu
:: Компиляция клиента
:build_client
echo.
echo ========================================
echo   Компиляция клиента (src_client)
echo ========================================
echo.
call :check_nodejs
if %ERROR%==1 goto :end_build_client
call :build_src_client
if %ERROR%==1 goto :end_build_client
:end_build_client
echo.
if %ERROR%==1 (
    echo ========================================
    echo   Компиляция клиента завершена с ошибками
    echo ========================================
) else (
    echo ========================================
    echo   Компиляция клиента завершена успешно
    echo ========================================
)
echo.
pause
set "ERROR=0"
goto :menu
:: Компиляция CEF
:build_cef
echo.
echo ========================================
echo   Компиляция CEF (src_cef)
echo ========================================
echo.
call :check_nodejs
if %ERROR%==1 goto :end_build_cef
call :build_src_cef
if %ERROR%==1 goto :end_build_cef
:end_build_cef
echo.
if %ERROR%==1 (
    echo ========================================
    echo   Компиляция CEF завершена с ошибками
    echo ========================================
) else (
    echo ========================================
    echo   Компиляция CEF завершена успешно
    echo ========================================
)
echo.
pause
set "ERROR=0"
goto :menu
:: Компиляция обоих
:build_both
echo.
echo ========================================
echo   Компиляция CEF и клиента
echo ========================================
echo.
call :check_nodejs
if %ERROR%==1 goto :end_build_both
call :build_src_client
if %ERROR%==1 goto :end_build_both
echo.
call :build_src_cef
if %ERROR%==1 goto :end_build_both
:end_build_both
echo.
if %ERROR%==1 (
    echo ========================================
    echo   Компиляция завершена с ошибками
    echo ========================================
) else (
    echo ========================================
    echo   Компиляция завершена успешно
    echo ========================================
)
echo.
pause
set "ERROR=0"
goto :menu
:: Установка .NET SDK
:install_dotnet
echo.
echo ========================================
echo   Установка .NET SDK
echo ========================================
echo.
call :check_dotnet_sdk
if %ERROR%==0 goto :end_install_dotnet
call :install_dotnet_sdk
if %ERROR%==1 goto :end_install_dotnet
:end_install_dotnet
echo.
if %ERROR%==1 (
    echo ========================================
    echo   Ошибка при установке .NET SDK
    echo ========================================
) else (
    echo ========================================
    echo   .NET SDK установлен успешно
    echo ========================================
)
echo.
pause
set "ERROR=0"
goto :menu
:: Компиляция .NET проекта
:build_dotnet
echo.
echo ========================================
echo   Компиляция .NET проекта (dotnet/resources)
echo ========================================
echo.
call :check_dotnet_sdk
if %ERROR%==1 goto :end_build_dotnet
call :build_dotnet_project
if %ERROR%==1 goto :end_build_dotnet
:end_build_dotnet
echo.
if %ERROR%==1 (
    echo ========================================
    echo   Компиляция .NET проекта завершена с ошибками
    echo ========================================
) else (
    echo ========================================
    echo   Компиляция .NET проекта завершена успешно
    echo ========================================
)
echo.
pause
set "ERROR=0"
goto :menu
:: Компиляция всего проекта
:build_all
echo.
echo ========================================
echo   Компиляция всего проекта
echo ========================================
echo.
call :check_nodejs
if %ERROR%==1 goto :end_build_all
call :check_dotnet_sdk
if %ERROR%==1 goto :end_build_all
echo [1/3] Компиляция клиента...
call :build_src_client
if %ERROR%==1 goto :end_build_all
echo.
echo [2/3] Компиляция CEF...
call :build_src_cef
if %ERROR%==1 goto :end_build_all
echo.
echo [3/3] Компиляция .NET проекта...
call :build_dotnet_project
if %ERROR%==1 goto :end_build_all
:end_build_all
echo.
if %ERROR%==1 (
    echo ========================================
    echo   Компиляция завершена с ошибками
    echo ========================================
) else (
    echo ========================================
    echo   Компиляция всего проекта завершена успешно
    echo ========================================
)
echo.
pause
set "ERROR=0"
goto :menu
:: Выход
:end_script
exit /b 0
:: ========================================
:: Функции
:: ========================================
:: Проверка наличия nvm-windows
:check_nvm
echo [Шаг 1/2] Проверка nvm-windows...
echo ----------------------------------------
where nvm >nul 2>&1
if %errorlevel%==0 (
    echo [OK] nvm-windows найден
    set "NVM_INSTALLED=1"
    goto :eof
)
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 :eof
    )
)
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 :eof
    )
)
if %NVM_INSTALLED%==0 (
    echo [ОШИБКА] Не удалось установить или найти nvm-windows
    set "ERROR=1"
)
goto :eof
:: Установка Node.js через nvm
:install_node
echo.
echo [Шаг 2/2] Проверка 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 :eof
    )
   
    call %NVM_CMD% use %NODE_VERSION%
    if errorlevel 1 (
        echo [ОШИБКА] Не удалось переключиться на версию %NODE_VERSION%
        set "ERROR=1"
        goto :eof
    )
    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 :eof
)
if %NODE_INSTALLED%==0 (
    echo [ОШИБКА] Не удалось установить или использовать Node.js
    set "ERROR=1"
)
goto :eof
:: Проверка наличия Node.js (для компиляции)
:check_nodejs
where node >nul 2>&1
if %errorlevel%==0 (
    for /f "tokens=*" %%i in ('node --version') do set "CURRENT_NODE_VERSION=%%i"
    echo [OK] Node.js найден: %CURRENT_NODE_VERSION%
    echo.
    goto :eof
)
echo [ОШИБКА] Node.js не найден
echo Пожалуйста, сначала установите Node.js (выберите пункт 1 в меню)
set "ERROR=1"
goto :eof
:: Компиляция src_client
:build_src_client
echo Компиляция 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"
        cd ..
        goto :eof
    )
)
call npm run build
if errorlevel 1 (
    echo [ОШИБКА] Компиляция src_client не удалась
    set "ERROR=1"
) else (
    echo [УСПЕХ] src_client скомпилирован успешно
)
cd ..
goto :eof
:: Компиляция src_cef
:build_src_cef
echo Компиляция 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"
        cd ..
        goto :eof
    )
)
call npm run build
if errorlevel 1 (
    echo [ОШИБКА] Компиляция src_cef не удалась
    set "ERROR=1"
) else (
    echo [УСПЕХ] src_cef скомпилирован успешно
)
cd ..
goto :eof
:: Проверка наличия .NET SDK
:check_dotnet_sdk
set "ERROR=0"
where dotnet >nul 2>&1
if %errorlevel%==0 (
    for /f "tokens=*" %%i in ('dotnet --version 2^>nul') do set "CURRENT_DOTNET_VERSION=%%i"
    echo [OK] .NET SDK найден: %CURRENT_DOTNET_VERSION%
   
    :: Проверяем, что установлена нужная версия или совместимая
    echo Проверка версии .NET SDK...
    dotnet --list-sdks | findstr /C:"%DOTNET_VERSION%" >nul
    if %errorlevel%==0 (
        echo [OK] .NET SDK %DOTNET_VERSION% установлен
        set "DOTNET_SDK_INSTALLED=1"
        set "ERROR=0"
        echo.
        goto :eof
    ) else (
        echo [ВНИМАНИЕ] .NET SDK %DOTNET_VERSION% не найден в списке установленных версий
        echo Установленные версии:
        dotnet --list-sdks
        echo.
        echo Продолжаем с текущей версией...
        set "DOTNET_SDK_INSTALLED=1"
        set "ERROR=0"
        echo.
        goto :eof
    )
)
echo [ОШИБКА] .NET SDK не найден
echo Пожалуйста, сначала установите .NET SDK (выберите пункт 5 в меню)
set "ERROR=1"
goto :eof
:: Установка .NET SDK
:install_dotnet_sdk
set "ERROR=0"
echo [Шаг 1/2] Определение архитектуры системы...
echo ----------------------------------------
:: Определяем архитектуру (x64 или x86)
if "%PROCESSOR_ARCHITECTURE%"=="AMD64" (
    set "ARCH=x64"
) else if "%PROCESSOR_ARCHITECTURE%"=="x86" (
    set "ARCH=x86"
) else (
    set "ARCH=x64"
)
echo Архитектура: %ARCH%
echo.
echo [Шаг 2/2] Установка .NET SDK %DOTNET_VERSION%...
echo ----------------------------------------
echo ВНИМАНИЕ: Установка может потребовать прав администратора
echo Если появится запрос UAC, нажмите "Да"
echo.
:: Используем dotnet-install скрипт для установки
set "DOTNET_INSTALL_SCRIPT=%TEMP%\dotnet-install.ps1"
set "DOTNET_INSTALL_URL=https://dot.net/v1/dotnet-install.ps1"
echo Скачивание установщика .NET SDK...
powershell -Command "& {[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; Invoke-WebRequest -Uri '%DOTNET_INSTALL_URL%' -OutFile '%DOTNET_INSTALL_SCRIPT%' -UseBasicParsing}" >nul 2>&1
if not exist "%DOTNET_INSTALL_SCRIPT%" (
    echo [ОШИБКА] Не удалось скачать установщик .NET SDK
    echo Пожалуйста, скачайте и установите .NET SDK %DOTNET_VERSION% вручную:
    echo https://dotnet.microsoft.com/download/dotnet/%DOTNET_VERSION%
    set "ERROR=1"
    goto :eof
)
echo Установка .NET SDK %DOTNET_VERSION%...
powershell -ExecutionPolicy Bypass -Command "& '%DOTNET_INSTALL_SCRIPT%' -Channel %DOTNET_VERSION% -Architecture %ARCH% -InstallDir '%USERPROFILE%\.dotnet'"
if errorlevel 1 (
    echo [ОШИБКА] Не удалось установить .NET SDK %DOTNET_VERSION%
    echo Попробуйте установить вручную: https://dotnet.microsoft.com/download/dotnet/%DOTNET_VERSION%
    set "ERROR=1"
    goto :eof
)
:: Обновляем PATH для текущей сессии
set "DOTNET_ROOT=%USERPROFILE%\.dotnet"
if exist "%DOTNET_ROOT%\dotnet.exe" (
    set "PATH=%DOTNET_ROOT%;%PATH%"
)
:: Проверяем также стандартные места установки
if exist "%ProgramFiles%\dotnet\dotnet.exe" (
    set "PATH=%ProgramFiles%\dotnet;%PATH%"
)
if exist "%ProgramFiles(x86)%\dotnet\dotnet.exe" (
    set "PATH=%ProgramFiles(x86)%\dotnet;%PATH%"
)
:: Проверяем установку
timeout /t 3 /nobreak >nul
where dotnet >nul 2>&1
if %errorlevel%==0 (
    for /f "tokens=*" %%i in ('dotnet --version 2^>nul') do set "CURRENT_DOTNET_VERSION=%%i"
    echo [OK] .NET SDK установлен: %CURRENT_DOTNET_VERSION%
    set "DOTNET_SDK_INSTALLED=1"
    set "ERROR=0"
) else (
    echo [ВНИМАНИЕ] .NET SDK установлен, но не доступен в текущей сессии
    echo Возможно, требуется перезапуск командной строки
    echo Путь установки: %DOTNET_ROOT%
    echo.
    echo Попробуйте перезапустить командную строку и запустить скрипт снова
    echo Или установите .NET SDK вручную: https://dotnet.microsoft.com/download/dotnet/%DOTNET_VERSION%
    set "ERROR=1"
)
goto :eof
:: Компиляция .NET проекта
:build_dotnet_project
set "ERROR=0"
echo Компиляция .NET проекта (dotnet/resources)...
echo ----------------------------------------
cd dotnet\resources
if not exist "NeptuneEvo.sln" (
    echo [ОШИБКА] Файл NeptuneEvo.sln не найден
    set "ERROR=1"
    cd ..\..
    goto :eof
)
echo Восстановление зависимостей NuGet...
dotnet restore NeptuneEvo.sln
if errorlevel 1 (
    echo [ОШИБКА] Не удалось восстановить зависимости NuGet
    set "ERROR=1"
    cd ..\..
    goto :eof
)
echo Компиляция решения...
echo Конфигурация: Debug (сервер ищет файлы в bin\Debug)
echo.
:: Собираем решение
dotnet build NeptuneEvo.sln --configuration Debug -p:Platform=x64
if errorlevel 1 (
    echo [ОШИБКА] Компиляция .NET проекта не удалась
    set "ERROR=1"
    cd ..\..
    goto :eof
)
:: Публикуем основной проект для копирования всех зависимостей
echo Публикация проекта NeptuneEvo для копирования зависимостей...
cd NeptuneEvo
dotnet publish --configuration Debug -p:Platform=x64 -p:CopyLocalLockFileAssemblies=true -o bin\Debug\netcoreapp3.1
if errorlevel 1 (
    echo [ВНИМАНИЕ] Публикация с --no-build не удалась, пробуем полную пересборку...
    dotnet publish --configuration Debug -p:Platform=x64 -p:CopyLocalLockFileAssemblies=true -o bin\Debug\netcoreapp3.1 --force
    if errorlevel 1 (
        echo [ОШИБКА] Публикация проекта не удалась
        set "ERROR=1"
        cd ..\..
        goto :eof
    )
)
cd ..
if %ERROR%==0 (
    echo [УСПЕХ] .NET проект скомпилирован и опубликован успешно
    echo Все зависимости скопированы в: dotnet\resources\NeptuneEvo\bin\Debug\netcoreapp3.1\
)
cd ..\..
goto :eof
Запускаем батник и радуемся!
обновил код батника, подправил билд серверной части, теперь билдится debug, и все чик пук запускается после компилирования
 
Реакции: Sidney