2026-08-06 11:23:33 +08:00
|
|
|
@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
|
|
|
|
|
|
2026-08-12 13:40:06 +08:00
|
|
|
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
|
|
|
|
|
|
2026-08-06 11:23:33 +08:00
|
|
|
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
|