167 lines
5.5 KiB
PowerShell
167 lines
5.5 KiB
PowerShell
# EU-Utility V3 - Dependency Checker for Windows
|
|
# Run this in PowerShell to verify all build prerequisites
|
|
|
|
param(
|
|
[switch]$InstallMissing
|
|
)
|
|
|
|
$ErrorActionPreference = "Stop"
|
|
$hasErrors = $false
|
|
|
|
Write-Host "`n=== EU-Utility V3 Build Dependency Checker ===`n" -ForegroundColor Cyan
|
|
|
|
# 1. Check Node.js
|
|
Write-Host "Checking Node.js..." -NoNewline
|
|
$nodeVersion = & node --version 2>$null
|
|
if ($nodeVersion) {
|
|
Write-Host " OK ($nodeVersion)" -ForegroundColor Green
|
|
} else {
|
|
Write-Host " MISSING" -ForegroundColor Red
|
|
Write-Host " Install from: https://nodejs.org/" -ForegroundColor Yellow
|
|
$hasErrors = $true
|
|
}
|
|
|
|
# 2. Check npm
|
|
Write-Host "Checking npm..." -NoNewline
|
|
$npmVersion = & npm --version 2>$null
|
|
if ($npmVersion) {
|
|
Write-Host " OK ($npmVersion)" -ForegroundColor Green
|
|
} else {
|
|
Write-Host " MISSING" -ForegroundColor Red
|
|
$hasErrors = $true
|
|
}
|
|
|
|
# 3. Check Rust/Cargo
|
|
Write-Host "Checking Rust..." -NoNewline
|
|
$cargoVersion = & cargo --version 2>$null
|
|
if ($cargoVersion) {
|
|
Write-Host " OK ($cargoVersion)" -ForegroundColor Green
|
|
} else {
|
|
Write-Host " MISSING" -ForegroundColor Red
|
|
Write-Host " Install from: https://rustup.rs/" -ForegroundColor Yellow
|
|
$hasErrors = $true
|
|
}
|
|
|
|
# 4. Check Tauri CLI
|
|
Write-Host "Checking Tauri CLI..." -NoNewline
|
|
$tauriVersion = & npx tauri --version 2>$null
|
|
if ($tauriVersion) {
|
|
Write-Host " OK ($tauriVersion)" -ForegroundColor Green
|
|
} else {
|
|
Write-Host " MISSING" -ForegroundColor Red
|
|
Write-Host " Install with: npm install -g @tauri-apps/cli@^1.5.0" -ForegroundColor Yellow
|
|
$hasErrors = $true
|
|
}
|
|
|
|
# 5. Check Visual Studio Build Tools
|
|
Write-Host "Checking Visual Studio Build Tools..." -NoNewline
|
|
$clPath = Get-Command cl.exe -ErrorAction SilentlyContinue
|
|
$vcvarsPath = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\vcvars64.bat"
|
|
$vsPath = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\2022\BuildTools"
|
|
|
|
if ($clPath -or (Test-Path $vcvarsPath) -or (Test-Path $vsPath)) {
|
|
Write-Host " OK" -ForegroundColor Green
|
|
} else {
|
|
Write-Host " MISSING" -ForegroundColor Red
|
|
Write-Host " Download from: https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2022" -ForegroundColor Yellow
|
|
Write-Host " Select: 'Desktop development with C++' workload" -ForegroundColor Yellow
|
|
$hasErrors = $true
|
|
}
|
|
|
|
# 6. Check vcpkg
|
|
Write-Host "Checking vcpkg..." -NoNewline
|
|
$vcpkgPath = "C:\vcpkg\vcpkg.exe"
|
|
$vcpkgExists = Test-Path $vcpkgPath
|
|
|
|
if ($vcpkgExists) {
|
|
Write-Host " OK" -ForegroundColor Green
|
|
} else {
|
|
Write-Host " MISSING" -ForegroundColor Red
|
|
Write-Host " Install with:" -ForegroundColor Yellow
|
|
Write-Host " git clone https://github.com/Microsoft/vcpkg.git C:\vcpkg" -ForegroundColor Cyan
|
|
Write-Host " C:\vcpkg\bootstrap-vcpkg.bat" -ForegroundColor Cyan
|
|
$hasErrors = $true
|
|
}
|
|
|
|
# 7. Check vcpkg static libraries
|
|
if ($vcpkgExists) {
|
|
Write-Host "`nChecking vcpkg static libraries..." -ForegroundColor White
|
|
|
|
$requiredLibs = @(
|
|
"tesseract:x64-windows-static-md",
|
|
"leptonica:x64-windows-static-md",
|
|
"libpng:x64-windows-static-md",
|
|
"tiff:x64-windows-static-md",
|
|
"libjpeg-turbo:x64-windows-static-md",
|
|
"openjpeg:x64-windows-static-md"
|
|
)
|
|
|
|
$installedLibs = & C:\vcpkg\vcpkg list 2>$null
|
|
|
|
foreach ($lib in $requiredLibs) {
|
|
$libName = $lib.Split(':')[0]
|
|
Write-Host " Checking $libName..." -NoNewline
|
|
|
|
if ($installedLibs -match $libName) {
|
|
Write-Host " OK" -ForegroundColor Green
|
|
} else {
|
|
Write-Host " MISSING" -ForegroundColor Red
|
|
if ($InstallMissing) {
|
|
Write-Host " Installing $lib..." -ForegroundColor Yellow
|
|
& C:\vcpkg\vcpkg install $lib
|
|
} else {
|
|
Write-Host " Install with: C:\vcpkg\vcpkg install $lib" -ForegroundColor Cyan
|
|
}
|
|
$hasErrors = $true
|
|
}
|
|
}
|
|
}
|
|
|
|
# 8. Check environment variables
|
|
Write-Host "`nChecking environment variables..." -ForegroundColor White
|
|
|
|
$envVars = @(
|
|
@{ Name = "VCPKG_ROOT"; Expected = "C:\vcpkg" }
|
|
)
|
|
|
|
foreach ($var in $envVars) {
|
|
$name = $var.Name
|
|
$expected = $var.Expected
|
|
$value = [Environment]::GetEnvironmentVariable($name, "User")
|
|
|
|
Write-Host " Checking $name..." -NoNewline
|
|
|
|
if ($value -eq $expected) {
|
|
Write-Host " OK" -ForegroundColor Green
|
|
} else {
|
|
Write-Host " MISSING or INCORRECT" -ForegroundColor Red
|
|
Write-Host " Set with: [Environment]::SetEnvironmentVariable('$name', '$expected', 'User')" -ForegroundColor Cyan
|
|
$hasErrors = $true
|
|
}
|
|
}
|
|
|
|
# 9. Check npm dependencies
|
|
Write-Host "`nChecking npm dependencies..." -NoNewline
|
|
Set-Location $PSScriptRoot\..
|
|
$nodeModulesExists = Test-Path "node_modules"
|
|
if ($nodeModulesExists) {
|
|
Write-Host " OK (node_modules exists)" -ForegroundColor Green
|
|
} else {
|
|
Write-Host " MISSING" -ForegroundColor Red
|
|
Write-Host " Install with: npm install" -ForegroundColor Cyan
|
|
$hasErrors = $true
|
|
}
|
|
|
|
# Summary
|
|
Write-Host "`n=== Summary ===" -ForegroundColor Cyan
|
|
if ($hasErrors) {
|
|
Write-Host "Some dependencies are missing. Fix the issues above and run again." -ForegroundColor Red
|
|
Write-Host "`nTo install missing vcpkg libraries automatically, run:" -ForegroundColor Yellow
|
|
Write-Host " .\scripts\check-dependencies.ps1 -InstallMissing" -ForegroundColor Cyan
|
|
exit 1
|
|
} else {
|
|
Write-Host "All dependencies are installed! You can now build with:" -ForegroundColor Green
|
|
Write-Host " npm run tauri-build" -ForegroundColor Cyan
|
|
exit 0
|
|
}
|