From c196e9a59a47bcaceab93342af5cf7a2f6ddd853 Mon Sep 17 00:00:00 2001 From: Thomas Schmucker Date: Thu, 23 Jul 2026 10:20:06 +0200 Subject: windows: manuelle Schritte reduzieren (PATH-Refresh, windows/bin automatisch im PATH) bootstrap/neovim-win.ps1: Update-SessionPath liest PATH nach der Git/Node-Installation aus der Registry neu ein, damit die folgenden npm-Installationen (Formatters/LSP) im selben Lauf nicht faelschlich 'npm nicht gefunden' melden. install-win.ps1: haengt windows/bin (gmake.cmd) automatisch und idempotent an den User-PATH an, statt das manuell per Anleitung zu verlangen. --- bootstrap/neovim-win.ps1 | 12 ++++++++++++ install-win.ps1 | 17 +++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/bootstrap/neovim-win.ps1 b/bootstrap/neovim-win.ps1 index a2e755b..1ea3b3c 100644 --- a/bootstrap/neovim-win.ps1 +++ b/bootstrap/neovim-win.ps1 @@ -89,9 +89,21 @@ function Test-Prerequisites { } } +function Update-SessionPath { + # winget/npm-Installer tragen PATH-Aenderungen in die Registry (User- + # und/oder Machine-Scope) ein, aber der laufende PowerShell-Prozess + # bekommt das nicht automatisch mit. Ohne diesen Refresh wuerde z.B. + # "npm" gleich im Anschluss an die Node-Installation als "nicht + # gefunden" gemeldet, obwohl es gerade erst installiert wurde. + $machine = [Environment]::GetEnvironmentVariable("PATH", "Machine") + $user = [Environment]::GetEnvironmentVariable("PATH", "User") + $env:PATH = "$machine;$user" +} + function Install-Prerequisites { Install-WingetPackage -Binary "git" -Id "Git.Git" Install-WingetPackage -Binary "node" -Id "OpenJS.NodeJS.LTS" + Update-SessionPath } function Install-Formatters { diff --git a/install-win.ps1 b/install-win.ps1 index 41b3b51..632c25e 100644 --- a/install-win.ps1 +++ b/install-win.ps1 @@ -80,14 +80,31 @@ function Copy-Npmrc { Write-Ok $NpmrcDst } +function Add-BinToUserPath { + $binDir = Join-Path $RepoRoot "windows\bin" + $userPath = [Environment]::GetEnvironmentVariable("PATH", "User") + $entries = $userPath -split ";" + + if ($entries -contains $binDir) { + Write-SkipMsg "$binDir bereits im User-PATH" + return + } + + Write-Step "$binDir zum User-PATH hinzufuegen (enthaelt gmake.cmd)" + [Environment]::SetEnvironmentVariable("PATH", "$userPath;$binDir", "User") + Write-Ok "$binDir (wirkt erst in neuen Terminal-Sitzungen)" +} + function Main { Copy-NvimConfig Copy-GitConfig Copy-Npmrc + Add-BinToUserPath Write-Host "" Write-Host "Fertig. Dateien wurden KOPIERT, nicht verlinkt." -ForegroundColor Green Write-Host "Nach Aenderungen im Repo dieses Skript erneut ausfuehren." + Write-Host "Neues Terminal oeffnen, damit PATH-Aenderungen wirksam werden." -ForegroundColor Yellow } Main -- cgit v1.3