fix(installer): copy portable Node into place

This commit is contained in:
Peter Steinberger
2026-05-22 14:51:08 +01:00
parent 6ea907cec1
commit c21ca883b0
3 changed files with 3 additions and 3 deletions

View File

@@ -62,7 +62,7 @@ Docs: https://docs.openclaw.ai
- Plugins/discovery: strip `-plugin` package suffixes when deriving plugin id hints so package names line up with manifest ids. (#85170) Thanks @JulyanXu.
- Telegram: preserve fenced code block languages through Markdown rendering so Telegram receives `language-*` code classes. (#85209) Thanks @leno23.
- Windows installer: bootstrap a user-local portable Node.js when native Windows has no Node and no winget, Chocolatey, or Scoop, so first-run installs can continue on raw hosts.
- Windows installer: install the downloaded portable Node.js directory atomically so PowerShell 5.1 first-run bootstraps do not fail while moving zip contents.
- Windows installer: copy the downloaded portable Node.js directory into place so PowerShell 5.1 first-run bootstraps do not fail while moving zip contents.
- fix(integrations): enforce channel read target allowlists [AI]. (#84982) Thanks @pgondhi987.
- Agents/heartbeat: route single-owner `session.dmScope=main` direct-message exec and cron event wakes back to the agent main session so async completions no longer strand context in orphan direct-DM queues. Fixes #71581. (#83743) Thanks @Kaspre.
- Agents/code-mode: expose outer code-mode `exec` source through the `command` hook alias with `toolKind`/`toolInputKind` discriminators so exec-shaped policies can distinguish code-mode cells. (#83483) Thanks @Kaspre.

View File

@@ -222,7 +222,7 @@ function Install-PortableNode {
throw "Node.js archive did not contain node.exe."
}
Move-Item -LiteralPath $nodeDir.FullName -Destination $portableRoot -Force
Copy-Item -LiteralPath $nodeDir.FullName -Destination $portableRoot -Recurse -Force
} finally {
if (Test-Path $tmpZip) {
Remove-Item -Force $tmpZip

View File

@@ -129,7 +129,7 @@ describe("install.ps1 failure handling", () => {
expect(portableNodeBody).toContain("portable-node");
expect(portableNodeBody).toContain("Ensure-PortableNodeOnUserPath");
expect(portableNodeBody).toContain(
"Move-Item -LiteralPath $nodeDir.FullName -Destination $portableRoot -Force",
"Copy-Item -LiteralPath $nodeDir.FullName -Destination $portableRoot -Recurse -Force",
);
expect(portableNodeBody).not.toContain('Join-Path $nodeDir.FullName "*"');
expect(portableNodePathBody).toContain("Add-ToUserPath $nodeDir");