@echo off setlocal EnableExtensions EnableDelayedExpansion set "PROJECT_DIR=%~dp0" set "BUILD_VERSION=1.0.1" set "MIN_GO_MAJOR=1" set "MIN_GO_MINOR=22" set "VENDOR_DLL=%PROJECT_DIR%..\card-read-service\package\DWCardReaderDLL\CardReaderDLL.dll" title readcard-go package echo ======================================== echo Checking readcard-go packaging environment... echo Version: %BUILD_VERSION% echo ======================================== echo. where.exe powershell.exe >nul 2>&1 if errorlevel 1 ( echo [ERROR] Windows PowerShell was not found. echo Install or enable Windows PowerShell and try again. goto :environment_check_failed ) echo [OK] PowerShell where.exe go.exe >nul 2>&1 if errorlevel 1 ( echo [ERROR] Go was not found in PATH. echo Install Go %MIN_GO_MAJOR%.%MIN_GO_MINOR% or later from https://go.dev/dl/ echo After installation, reopen this window and run the package script again. goto :environment_check_failed ) set "GO_VERSION=" for /f "delims=" %%V in ('go env GOVERSION 2^>nul') do set "GO_VERSION=%%V" if not defined GO_VERSION ( echo [ERROR] The Go installation could not report its version. echo Reinstall Go and ensure its bin directory is included in PATH. goto :environment_check_failed ) set "GO_SEMVER=!GO_VERSION:go=!" set "GO_MAJOR=" set "GO_MINOR=" for /f "tokens=1,2 delims=." %%A in ("!GO_SEMVER!") do ( set "GO_MAJOR=%%A" set "GO_MINOR=%%B" ) if not defined GO_MAJOR goto :invalid_go_version if not defined GO_MINOR goto :invalid_go_version set /a "GO_MAJOR_NUMBER=GO_MAJOR" >nul 2>&1 if errorlevel 1 goto :invalid_go_version set /a "GO_MINOR_NUMBER=GO_MINOR" >nul 2>&1 if errorlevel 1 goto :invalid_go_version if !GO_MAJOR_NUMBER! LSS %MIN_GO_MAJOR% goto :unsupported_go_version if !GO_MAJOR_NUMBER! EQU %MIN_GO_MAJOR% if !GO_MINOR_NUMBER! LSS %MIN_GO_MINOR% goto :unsupported_go_version echo [OK] Go: !GO_VERSION! set "HAS_WINDOWS_386=" for /f "delims=" %%T in ('go tool dist list 2^>nul') do ( if "%%T"=="windows/386" set "HAS_WINDOWS_386=1" ) if not defined HAS_WINDOWS_386 ( echo [ERROR] The installed Go toolchain does not support windows/386. echo Install an official Go distribution and try again. goto :environment_check_failed ) echo [OK] Go target: windows/386 if not exist "%PROJECT_DIR%build.ps1" ( echo [ERROR] Missing build script: %PROJECT_DIR%build.ps1 goto :environment_check_failed ) echo [OK] Build script if not exist "%PROJECT_DIR%config.json" ( echo [ERROR] Missing configuration file: %PROJECT_DIR%config.json goto :environment_check_failed ) echo [OK] Configuration file if not exist "%PROJECT_DIR%readcard-go.exe.manifest" ( echo [ERROR] Missing Windows application manifest: %PROJECT_DIR%readcard-go.exe.manifest goto :environment_check_failed ) echo [OK] Windows application manifest if not exist "%PROJECT_DIR%rsrc_windows_386.syso" ( echo [ERROR] Missing embedded Windows resource: %PROJECT_DIR%rsrc_windows_386.syso goto :environment_check_failed ) echo [OK] Embedded Windows resource if not exist "%VENDOR_DLL%" ( echo [ERROR] Vendor DLL was not found: echo %VENDOR_DLL% echo Restore card-read-service\package\DWCardReaderDLL before packaging. goto :environment_check_failed ) echo [OK] Vendor DLL package if /i "%~1"=="--check" ( echo. echo Environment check passed. exit /b 0 ) echo. echo Environment check passed. Packaging readcard-go, please wait... echo. powershell.exe -NoProfile -ExecutionPolicy Bypass -File "%PROJECT_DIR%build.ps1" -Version "%BUILD_VERSION%" set "BUILD_EXIT_CODE=%ERRORLEVEL%" echo. if not "%BUILD_EXIT_CODE%"=="0" ( echo ======================================== echo Packaging failed. Exit code: %BUILD_EXIT_CODE% echo See the error output above for details. echo ======================================== pause exit /b %BUILD_EXIT_CODE% ) echo ======================================== echo Packaging completed successfully. echo Output directory: %PROJECT_DIR%dist echo ======================================== start "" "%PROJECT_DIR%dist" pause exit /b 0 :invalid_go_version echo [ERROR] Unable to parse the installed Go version: !GO_VERSION! echo Install Go %MIN_GO_MAJOR%.%MIN_GO_MINOR% or later from https://go.dev/dl/ goto :environment_check_failed :unsupported_go_version echo [ERROR] Go !GO_VERSION! is too old. echo Install Go %MIN_GO_MAJOR%.%MIN_GO_MINOR% or later from https://go.dev/dl/ goto :environment_check_failed :environment_check_failed echo. echo Packaging stopped because the environment check failed. pause exit /b 1