You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
128 lines
4.4 KiB
128 lines
4.4 KiB
# OpenHamClock - Windows Setup Script
|
|
#
|
|
# Run in PowerShell as Administrator:
|
|
# Set-ExecutionPolicy Bypass -Scope Process -Force
|
|
# .\setup-windows.ps1
|
|
#
|
|
|
|
$ErrorActionPreference = "Stop"
|
|
|
|
Write-Host ""
|
|
Write-Host "╔═══════════════════════════════════════════════════════════╗" -ForegroundColor Blue
|
|
Write-Host "║ OpenHamClock Windows Setup ║" -ForegroundColor Blue
|
|
Write-Host "╚═══════════════════════════════════════════════════════════╝" -ForegroundColor Blue
|
|
Write-Host ""
|
|
|
|
$InstallDir = "$env:USERPROFILE\openhamclock"
|
|
|
|
# Check for Node.js
|
|
function Check-Node {
|
|
try {
|
|
$nodeVersion = node -v
|
|
$versionNumber = [int]($nodeVersion -replace 'v(\d+)\..*', '$1')
|
|
|
|
if ($versionNumber -lt 18) {
|
|
Write-Host "Node.js version 18 or later required. Current: $nodeVersion" -ForegroundColor Yellow
|
|
Write-Host "Download from: https://nodejs.org/" -ForegroundColor Yellow
|
|
exit 1
|
|
}
|
|
|
|
Write-Host "✓ Node.js $nodeVersion detected" -ForegroundColor Green
|
|
}
|
|
catch {
|
|
Write-Host "Node.js not found. Please install Node.js 18 or later from https://nodejs.org/" -ForegroundColor Yellow
|
|
exit 1
|
|
}
|
|
}
|
|
|
|
# Check for Git
|
|
function Check-Git {
|
|
try {
|
|
git --version | Out-Null
|
|
Write-Host "✓ Git detected" -ForegroundColor Green
|
|
}
|
|
catch {
|
|
Write-Host "Git not found. Please install Git from https://git-scm.com/" -ForegroundColor Yellow
|
|
exit 1
|
|
}
|
|
}
|
|
|
|
# Setup repository
|
|
function Setup-Repository {
|
|
Write-Host ">>> Setting up OpenHamClock..." -ForegroundColor Blue
|
|
|
|
if (Test-Path $InstallDir) {
|
|
Write-Host "Updating existing installation..."
|
|
Set-Location $InstallDir
|
|
git pull
|
|
}
|
|
else {
|
|
Write-Host "Cloning repository..."
|
|
git clone https://github.com/accius/openhamclock.git $InstallDir
|
|
Set-Location $InstallDir
|
|
}
|
|
|
|
Write-Host "Installing dependencies..."
|
|
npm install
|
|
|
|
Write-Host "✓ Installation complete" -ForegroundColor Green
|
|
}
|
|
|
|
# Create desktop shortcut
|
|
function Create-Shortcut {
|
|
$WshShell = New-Object -ComObject WScript.Shell
|
|
$Shortcut = $WshShell.CreateShortcut("$env:USERPROFILE\Desktop\OpenHamClock.lnk")
|
|
$Shortcut.TargetPath = "cmd.exe"
|
|
$Shortcut.Arguments = "/c cd /d `"$InstallDir`" && npm start"
|
|
$Shortcut.WorkingDirectory = $InstallDir
|
|
$Shortcut.Description = "OpenHamClock - Amateur Radio Dashboard"
|
|
$Shortcut.Save()
|
|
|
|
Write-Host "✓ Desktop shortcut created" -ForegroundColor Green
|
|
}
|
|
|
|
# Create batch file launcher
|
|
function Create-Launcher {
|
|
$batchContent = @"
|
|
@echo off
|
|
cd /d "$InstallDir"
|
|
echo Starting OpenHamClock...
|
|
echo Open http://localhost:3000 in your browser
|
|
npm start
|
|
pause
|
|
"@
|
|
|
|
Set-Content -Path "$InstallDir\start.bat" -Value $batchContent
|
|
Write-Host "✓ Launcher created: $InstallDir\start.bat" -ForegroundColor Green
|
|
}
|
|
|
|
# Print instructions
|
|
function Print-Instructions {
|
|
Write-Host ""
|
|
Write-Host "╔═══════════════════════════════════════════════════════════╗" -ForegroundColor Green
|
|
Write-Host "║ Installation Complete! ║" -ForegroundColor Green
|
|
Write-Host "╚═══════════════════════════════════════════════════════════╝" -ForegroundColor Green
|
|
Write-Host ""
|
|
Write-Host " To start OpenHamClock:" -ForegroundColor Blue
|
|
Write-Host ""
|
|
Write-Host " 1. Double-click the desktop shortcut"
|
|
Write-Host " 2. Or run: $InstallDir\start.bat"
|
|
Write-Host " 3. Or in PowerShell: cd $InstallDir; npm start"
|
|
Write-Host ""
|
|
Write-Host " Then open: http://localhost:3000" -ForegroundColor Blue
|
|
Write-Host ""
|
|
Write-Host " For Electron desktop app:" -ForegroundColor Blue
|
|
Write-Host " npm run electron"
|
|
Write-Host ""
|
|
Write-Host " 73 de OpenHamClock!" -ForegroundColor Blue
|
|
Write-Host ""
|
|
}
|
|
|
|
# Main
|
|
Check-Node
|
|
Check-Git
|
|
Setup-Repository
|
|
Create-Launcher
|
|
Create-Shortcut
|
|
Print-Instructions
|