|
1 | 1 | #requires -Version 5.1 |
| 2 | +# OPENCLAW_WIN_MANAGER_CN_V2 |
2 | 3 | <# |
3 | 4 | OpenClaw Windows 10/11 独立管理脚本(中文版) |
4 | 5 | 运行: |
@@ -85,17 +86,33 @@ function ShowMenu { |
85 | 86 | } |
86 | 87 |
|
87 | 88 | function InstallNodeIfNeeded { |
88 | | - if(HasCmd "node"){ OK "检测到 Node.js: $(& node -v)"; return } |
89 | | - Info "未检测到 Node.js,尝试自动安装" |
| 89 | + if(HasCmd "node" -and HasCmd "npm"){ OK "检测到 Node.js: $(& node -v)"; return } |
| 90 | + Info "未检测到 Node.js/npm,尝试自动安装" |
90 | 91 |
|
91 | 92 | if(HasCmd "winget"){ |
92 | 93 | & winget install --id OpenJS.NodeJS.LTS -e --accept-package-agreements --accept-source-agreements |
93 | | - return |
94 | 94 | } |
95 | | - if(HasCmd "choco"){ & choco install nodejs-lts -y; return } |
96 | | - if(HasCmd "scoop"){ & scoop install nodejs-lts; return } |
| 95 | + elseif(HasCmd "choco"){ & choco install nodejs-lts -y } |
| 96 | + elseif(HasCmd "scoop"){ & scoop install nodejs-lts } |
| 97 | + else { throw "未检测到 winget/choco/scoop,请先手动安装 Node.js 20+" } |
| 98 | + |
| 99 | + # 刷新当前会话 PATH(winget 安装后常见 npm 不在当前会话 PATH) |
| 100 | + $machinePath = [Environment]::GetEnvironmentVariable('Path','Machine') |
| 101 | + $userPath = [Environment]::GetEnvironmentVariable('Path','User') |
| 102 | + $env:Path = "$machinePath;$userPath" |
| 103 | + |
| 104 | + $extra = @('C:\Program Files\nodejs','C:\Program Files (x86)\nodejs') |
| 105 | + foreach($e in $extra){ |
| 106 | + if((Test-Path $e) -and ($env:Path -notlike "*$e*")) { $env:Path += ";$e" } |
| 107 | + } |
97 | 108 |
|
98 | | - throw "未检测到 winget/choco/scoop,请先手动安装 Node.js 20+" |
| 109 | + if(-not (HasCmd "npm")){ |
| 110 | + Warn "已安装 Node.js,但当前会话未找到 npm。将尝试直接使用 npm.cmd。" |
| 111 | + $npmCmd = 'C:\Program Files\nodejs\npm.cmd' |
| 112 | + if(Test-Path $npmCmd){ |
| 113 | + Set-Alias -Name npm -Value $npmCmd -Scope Script |
| 114 | + } |
| 115 | + } |
99 | 116 | } |
100 | 117 |
|
101 | 118 | function InstallOpenClaw { |
|
0 commit comments