e76d88e0c7
Import the existing Electron + React + TypeScript app as the version-control baseline before the scanner rework (C# input/capture sidecar, resolution-anchored layout profiles, OCR preprocessing, eval harness, rescan-merge, GOOD interop). Housekeeping in this commit: - Remove orphaned temp_inputhelper_block.ts (duplicate of the input-helper script). - Ignore .claude/scheduled_tasks.lock local session state. - Add .gitattributes to normalize line endings (LF in repo). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
88 lines
4.6 KiB
PowerShell
88 lines
4.6 KiB
PowerShell
param(
|
|
[string]$ProjectRoot
|
|
)
|
|
|
|
# Mit -NoExit gestartet: dieses Fenster bleibt immer offen (siehe dev-admin.cmd),
|
|
# aber ein sauberer try/catch mit klarer Meldung ist trotzdem besser als ein
|
|
# roher Stacktrace, wenn z.B. der Dev-Port schon belegt ist.
|
|
$ErrorActionPreference = "Stop"
|
|
|
|
try {
|
|
$project = (Resolve-Path -LiteralPath $ProjectRoot).Path
|
|
|
|
Write-Host "Projekt: $project"
|
|
|
|
# A UAC-elevated process gets its environment rebuilt fresh from the
|
|
# registry; it does NOT inherit PATH edits that only exist in the calling
|
|
# (non-elevated) shell session (e.g. a version manager that only patched
|
|
# the current terminal). If node/npm resolve normally but not here, that
|
|
# is almost always the cause - fail with a clear message instead of a
|
|
# cryptic "npm is not recognized" a few lines down.
|
|
$npmCommand = Get-Command npm.cmd -ErrorAction SilentlyContinue
|
|
if (-not $npmCommand) { $npmCommand = Get-Command npm -ErrorAction SilentlyContinue }
|
|
$nodeCommand = Get-Command node.exe -ErrorAction SilentlyContinue
|
|
if (-not $nodeCommand) { $nodeCommand = Get-Command node -ErrorAction SilentlyContinue }
|
|
if (-not $npmCommand -or -not $nodeCommand) {
|
|
Write-Host ""
|
|
Write-Host "FEHLER: npm/node wurden in diesem administrativen Fenster nicht gefunden." -ForegroundColor Red
|
|
Write-Host "npm gefunden: $([bool]$npmCommand) node gefunden: $([bool]$nodeCommand)" -ForegroundColor Red
|
|
Write-Host "Ein 'Als Administrator ausfuehren'-Prozess bekommt seine Umgebung frisch aus der Registry -" -ForegroundColor Red
|
|
Write-Host "PATH-Aenderungen, die nur in deiner normalen (nicht-elevierten) Sitzung gelten (z.B. nvm/Volta" -ForegroundColor Red
|
|
Write-Host "ohne dauerhafte Registry-Eintragung), sind hier nicht sichtbar, obwohl 'npm run dev' normal funktioniert." -ForegroundColor Red
|
|
Write-Host "PATH in diesem Fenster:" -ForegroundColor DarkGray
|
|
Write-Host $env:PATH -ForegroundColor DarkGray
|
|
Write-Host ""
|
|
Write-Host "Loesung: node/npm dauerhaft im PATH eintragen (System-Umgebungsvariablen, nicht nur die Sitzung)," -ForegroundColor Yellow
|
|
Write-Host "z.B. ueber die Windows-Systemsteuerung 'Umgebungsvariablen bearbeiten' oder 'setx PATH ...'." -ForegroundColor Yellow
|
|
throw "npm/node nicht im administrativen PATH gefunden."
|
|
}
|
|
|
|
# Kill stale instances of THIS project BEFORE checking the port: a leftover
|
|
# electron/vite/node/input-helper cluster from a previous run (e.g. a window
|
|
# force-closed via Task Manager, which skips main.ts's graceful will-quit
|
|
# cleanup and orphans the spawned input-helper.ps1 child) is the most common
|
|
# reason a fresh start silently talks to an old instance instead of
|
|
# replacing it. Shared with "npm run dev" itself via the predev hook, so
|
|
# both start paths get the same guarantee.
|
|
& (Join-Path $PSScriptRoot "kill-stale-instances.ps1")
|
|
|
|
$devPort = 5173
|
|
$portInUse = $null
|
|
try {
|
|
$portInUse = Get-NetTCPConnection -LocalPort $devPort -State Listen -ErrorAction Stop | Select-Object -First 1
|
|
} catch {
|
|
# Get-NetTCPConnection kann auf manchen Systemen fehlen; das ist kein Fehler.
|
|
$portInUse = $null
|
|
}
|
|
if ($portInUse) {
|
|
$portOwner = Get-Process -Id $portInUse.OwningProcess -ErrorAction SilentlyContinue
|
|
Write-Host ""
|
|
Write-Host "WARNUNG: Port $devPort ist noch belegt (Prozess: $($portOwner.ProcessName), PID $($portInUse.OwningProcess)) - auch nach dem Beenden alter Instanzen dieses Projekts." -ForegroundColor Yellow
|
|
Write-Host "Das ist wahrscheinlich ein unabhaengiger Prozess (z.B. ein anderes Projekt auf Port $devPort)." -ForegroundColor Yellow
|
|
Write-Host "'npm run dev' weicht dann auf einen anderen Port aus oder verbindet sich mit dem falschen Server." -ForegroundColor Yellow
|
|
Write-Host "Falls noetig: Prozess PID $($portInUse.OwningProcess) manuell beenden und dieses Fenster neu starten." -ForegroundColor Yellow
|
|
Write-Host ""
|
|
}
|
|
|
|
Set-Location -LiteralPath $project
|
|
Write-Host "Starte npm run dev (Administrator)..."
|
|
npm run dev
|
|
$exitCode = $LASTEXITCODE
|
|
|
|
if ($exitCode -ne 0) {
|
|
Write-Host ""
|
|
Write-Host "npm run dev wurde mit Fehlercode $exitCode beendet." -ForegroundColor Red
|
|
Write-Host "Die Ausgabe oben zeigt die genaue Ursache (z.B. belegter Port, fehlende Abhaengigkeiten)." -ForegroundColor Red
|
|
} else {
|
|
Write-Host ""
|
|
Write-Host "npm run dev wurde beendet (Fenster schliessen oder Strg+C fuer Neustart)."
|
|
}
|
|
} catch {
|
|
Write-Host ""
|
|
Write-Host "Fehler beim Start: $($_.Exception.Message)" -ForegroundColor Red
|
|
Write-Host $_.ScriptStackTrace -ForegroundColor DarkGray
|
|
}
|
|
|
|
Write-Host ""
|
|
Write-Host "Dieses Fenster bleibt offen (siehe Meldungen oben). Schliessen mit Enter oder dem Fenster-X."
|