Skip to content

[codex] fix Windows installer backend cleanup#85

Merged
zouyonghe merged 12 commits intoAstrBotDevs:mainfrom
zouyonghe:codex/windows-installer-backend-cleanup
Mar 11, 2026
Merged

[codex] fix Windows installer backend cleanup#85
zouyonghe merged 12 commits intoAstrBotDevs:mainfrom
zouyonghe:codex/windows-installer-backend-cleanup

Conversation

@zouyonghe
Copy link
Copy Markdown
Member

@zouyonghe zouyonghe commented Mar 11, 2026

This fixes a Windows installer cleanup regression that leaves the bundled backend Python process running across upgrade and reinstall flows.

The user-facing symptom is that app updates can close the desktop shell and start the NSIS installer, but installation then hangs on file-in-use errors under backend\python, and a manual reinstall after uninstall can fail the same way until python.exe is killed in Task Manager. In practice the blocked file was _asyncio.pyd, which remained locked by the old bundled runtime process.

The root cause was that our NSIS preinstall cleanup hook looked for kill-backend-processes.ps1 under $INSTDIR\resources\..., but the script is actually packaged at the install root as $INSTDIR\kill-backend-processes.ps1 via tauri.conf.json. That meant the cleanup hook could skip the script entirely, leaving the old backend process alive while the installer tried to overwrite the bundled Python runtime.

This change updates the NSIS hook to look for the install-root cleanup script first and only fall back to the updater resource path if needed. It also adds regression coverage that locks the expected lookup order in the hook and ensures the cleanup logic remains scoped to the provided install root.

Verification:

  • node --test scripts/ci/windows-installer-cleanup-script.test.mjs
  • pnpm test:prepare-resources

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以正确定位并运行捆绑的 PowerShell 脚本,防止遗留的后端进程阻碍升级。

错误修复:

  • 确保 NSIS 安装程序的清理钩子在回退到更新程序资源路径之前,优先在安装根目录查找后端清理脚本,从而避免遗留的后端 Python 进程在安装期间锁定文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被正确限定在指定的安装根目录内,并断言 NSIS 钩子在查找脚本时使用正确的查找顺序且不再依赖旧路径。
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,确保在安装和升级过程中,捆绑的后端 Python 进程能够被正确终止。

错误修复:

  • 确保 NSIS 安装程序的清理钩子会先在安装根目录查找后端清理 PowerShell 脚本,然后才回退到更新器资源路径,从而防止陈旧的后端 Python 进程在安装过程中锁定文件。

测试:

  • 扩展 Windows 安装程序清理测试,用于验证进程匹配被限定在提供的安装根目录范围内,并且 NSIS 钩子使用正确的查找顺序来定位清理脚本。
Original summary in English

Sourcery 总结

修复 Windows NSIS 安装程序后端清理逻辑,以便在升级和重新安装时,能在覆盖文件之前正确终止捆绑的后端运行时。

错误修复:

  • 更新 NSIS 后端清理钩子,使其优先从安装根目录解析清理 PowerShell 脚本,并在此失败时回退到 updater-staging 路径,确保残留的后端 Python 进程不会锁定安装文件。

测试:

  • 扩展 Windows 安装程序清理测试,用于验证清理脚本只针对指定安装根目录下的进程,并确保 NSIS 钩子使用正确的脚本查找顺序并通过 nsExec 执行该脚本。
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.

Bug 修复:

  • 更正 NSIS 后端清理钩子,使其优先使用安装根目录下的清理脚本路径,只有在需要时才回退到更新程序暂存路径,确保在文件被覆盖之前终止捆绑的后端进程。

测试:

  • 扩展 Windows 安装程序清理测试,以验证 PowerShell 脚本只匹配给定安装根目录下的进程,并验证 NSIS 钩子使用正确的脚本路径查找顺序并通过 nsExec 执行脚本。
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.

错误修复:

  • 修正 NSIS 预安装清理钩子,使其优先在安装根目录查找后端清理 PowerShell 脚本,仅在必要时回退到 updater 暂存路径,从而防止遗留的后端 Python 进程锁定安装文件。

测试:

  • 扩展 Windows 安装程序清理测试,用于断言进程匹配仅限于指定的安装根目录,并验证 NSIS 钩子的脚本查找顺序及其执行行为。
Original summary in English

Sourcery 总结

修复 Windows NSIS 安装程序后端清理逻辑,以便在升级和重新安装时,能在覆盖文件之前正确终止捆绑的后端运行时。

错误修复:

  • 更新 NSIS 后端清理钩子,使其优先从安装根目录解析清理 PowerShell 脚本,并在此失败时回退到 updater-staging 路径,确保残留的后端 Python 进程不会锁定安装文件。

测试:

  • 扩展 Windows 安装程序清理测试,用于验证清理脚本只针对指定安装根目录下的进程,并确保 NSIS 钩子使用正确的脚本查找顺序并通过 nsExec 执行该脚本。
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.

Bug 修复:

  • 更正 NSIS 后端清理钩子,使其优先使用安装根目录下的清理脚本路径,只有在需要时才回退到更新程序暂存路径,确保在文件被覆盖之前终止捆绑的后端进程。

测试:

  • 扩展 Windows 安装程序清理测试,以验证 PowerShell 脚本只匹配给定安装根目录下的进程,并验证 NSIS 钩子使用正确的脚本路径查找顺序并通过 nsExec 执行脚本。
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.

Bug 修复:

  • 修复 Windows NSIS 安装程序清理逻辑,使其不再遗漏打包的后端 PowerShell 脚本,从而防止遗留的后端 Python 进程阻塞升级和重新安装。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并验证 NSIS 钩子使用正确的主脚本和回退脚本查找顺序。
Original summary in English

Sourcery 总结

修复 Windows NSIS 安装程序后端清理逻辑,以便在升级和重新安装时,能在覆盖文件之前正确终止捆绑的后端运行时。

错误修复:

  • 更新 NSIS 后端清理钩子,使其优先从安装根目录解析清理 PowerShell 脚本,并在此失败时回退到 updater-staging 路径,确保残留的后端 Python 进程不会锁定安装文件。

测试:

  • 扩展 Windows 安装程序清理测试,用于验证清理脚本只针对指定安装根目录下的进程,并确保 NSIS 钩子使用正确的脚本查找顺序并通过 nsExec 执行该脚本。
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.

Bug 修复:

  • 更正 NSIS 后端清理钩子,使其优先使用安装根目录下的清理脚本路径,只有在需要时才回退到更新程序暂存路径,确保在文件被覆盖之前终止捆绑的后端进程。

测试:

  • 扩展 Windows 安装程序清理测试,以验证 PowerShell 脚本只匹配给定安装根目录下的进程,并验证 NSIS 钩子使用正确的脚本路径查找顺序并通过 nsExec 执行脚本。
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.

错误修复:

  • 修正 NSIS 预安装清理钩子,使其优先在安装根目录查找后端清理 PowerShell 脚本,仅在必要时回退到 updater 暂存路径,从而防止遗留的后端 Python 进程锁定安装文件。

测试:

  • 扩展 Windows 安装程序清理测试,用于断言进程匹配仅限于指定的安装根目录,并验证 NSIS 钩子的脚本查找顺序及其执行行为。
Original summary in English

Sourcery 总结

修复 Windows NSIS 安装程序后端清理逻辑,以便在升级和重新安装时,能在覆盖文件之前正确终止捆绑的后端运行时。

错误修复:

  • 更新 NSIS 后端清理钩子,使其优先从安装根目录解析清理 PowerShell 脚本,并在此失败时回退到 updater-staging 路径,确保残留的后端 Python 进程不会锁定安装文件。

测试:

  • 扩展 Windows 安装程序清理测试,用于验证清理脚本只针对指定安装根目录下的进程,并确保 NSIS 钩子使用正确的脚本查找顺序并通过 nsExec 执行该脚本。
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.

Bug 修复:

  • 更正 NSIS 后端清理钩子,使其优先使用安装根目录下的清理脚本路径,只有在需要时才回退到更新程序暂存路径,确保在文件被覆盖之前终止捆绑的后端进程。

测试:

  • 扩展 Windows 安装程序清理测试,以验证 PowerShell 脚本只匹配给定安装根目录下的进程,并验证 NSIS 钩子使用正确的脚本路径查找顺序并通过 nsExec 执行脚本。
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.

Bug 修复:

  • 确保 NSIS 预安装清理钩子在回退到更新程序资源路径之前,先在安装根目录查找后端清理脚本,避免残留的后端 Python 进程在安装过程中锁定文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确认 NSIS 钩子在查找清理脚本时使用了正确的查找顺序。
Original summary in English

Sourcery 总结

修复 Windows NSIS 安装程序后端清理逻辑,以便在升级和重新安装时,能在覆盖文件之前正确终止捆绑的后端运行时。

错误修复:

  • 更新 NSIS 后端清理钩子,使其优先从安装根目录解析清理 PowerShell 脚本,并在此失败时回退到 updater-staging 路径,确保残留的后端 Python 进程不会锁定安装文件。

测试:

  • 扩展 Windows 安装程序清理测试,用于验证清理脚本只针对指定安装根目录下的进程,并确保 NSIS 钩子使用正确的脚本查找顺序并通过 nsExec 执行该脚本。
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.

Bug 修复:

  • 更正 NSIS 后端清理钩子,使其优先使用安装根目录下的清理脚本路径,只有在需要时才回退到更新程序暂存路径,确保在文件被覆盖之前终止捆绑的后端进程。

测试:

  • 扩展 Windows 安装程序清理测试,以验证 PowerShell 脚本只匹配给定安装根目录下的进程,并验证 NSIS 钩子使用正确的脚本路径查找顺序并通过 nsExec 执行脚本。
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.

错误修复:

  • 修正 NSIS 预安装清理钩子,使其优先在安装根目录查找后端清理 PowerShell 脚本,仅在必要时回退到 updater 暂存路径,从而防止遗留的后端 Python 进程锁定安装文件。

测试:

  • 扩展 Windows 安装程序清理测试,用于断言进程匹配仅限于指定的安装根目录,并验证 NSIS 钩子的脚本查找顺序及其执行行为。
Original summary in English

Sourcery 总结

修复 Windows NSIS 安装程序后端清理逻辑,以便在升级和重新安装时,能在覆盖文件之前正确终止捆绑的后端运行时。

错误修复:

  • 更新 NSIS 后端清理钩子,使其优先从安装根目录解析清理 PowerShell 脚本,并在此失败时回退到 updater-staging 路径,确保残留的后端 Python 进程不会锁定安装文件。

测试:

  • 扩展 Windows 安装程序清理测试,用于验证清理脚本只针对指定安装根目录下的进程,并确保 NSIS 钩子使用正确的脚本查找顺序并通过 nsExec 执行该脚本。
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.

Bug 修复:

  • 更正 NSIS 后端清理钩子,使其优先使用安装根目录下的清理脚本路径,只有在需要时才回退到更新程序暂存路径,确保在文件被覆盖之前终止捆绑的后端进程。

测试:

  • 扩展 Windows 安装程序清理测试,以验证 PowerShell 脚本只匹配给定安装根目录下的进程,并验证 NSIS 钩子使用正确的脚本路径查找顺序并通过 nsExec 执行脚本。
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.

Bug 修复:

  • 修复 Windows NSIS 安装程序清理逻辑,使其不再遗漏打包的后端 PowerShell 脚本,从而防止遗留的后端 Python 进程阻塞升级和重新安装。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并验证 NSIS 钩子使用正确的主脚本和回退脚本查找顺序。
Original summary in English

Sourcery 总结

修复 Windows NSIS 安装程序后端清理逻辑,以便在升级和重新安装时,能在覆盖文件之前正确终止捆绑的后端运行时。

错误修复:

  • 更新 NSIS 后端清理钩子,使其优先从安装根目录解析清理 PowerShell 脚本,并在此失败时回退到 updater-staging 路径,确保残留的后端 Python 进程不会锁定安装文件。

测试:

  • 扩展 Windows 安装程序清理测试,用于验证清理脚本只针对指定安装根目录下的进程,并确保 NSIS 钩子使用正确的脚本查找顺序并通过 nsExec 执行该脚本。
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.

Bug 修复:

  • 更正 NSIS 后端清理钩子,使其优先使用安装根目录下的清理脚本路径,只有在需要时才回退到更新程序暂存路径,确保在文件被覆盖之前终止捆绑的后端进程。

测试:

  • 扩展 Windows 安装程序清理测试,以验证 PowerShell 脚本只匹配给定安装根目录下的进程,并验证 NSIS 钩子使用正确的脚本路径查找顺序并通过 nsExec 执行脚本。
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.

错误修复:

  • 修正 NSIS 预安装清理钩子,使其优先在安装根目录查找后端清理 PowerShell 脚本,仅在必要时回退到 updater 暂存路径,从而防止遗留的后端 Python 进程锁定安装文件。

测试:

  • 扩展 Windows 安装程序清理测试,用于断言进程匹配仅限于指定的安装根目录,并验证 NSIS 钩子的脚本查找顺序及其执行行为。
Original summary in English

Sourcery 总结

修复 Windows NSIS 安装程序后端清理逻辑,以便在升级和重新安装时,能在覆盖文件之前正确终止捆绑的后端运行时。

错误修复:

  • 更新 NSIS 后端清理钩子,使其优先从安装根目录解析清理 PowerShell 脚本,并在此失败时回退到 updater-staging 路径,确保残留的后端 Python 进程不会锁定安装文件。

测试:

  • 扩展 Windows 安装程序清理测试,用于验证清理脚本只针对指定安装根目录下的进程,并确保 NSIS 钩子使用正确的脚本查找顺序并通过 nsExec 执行该脚本。
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.

Bug 修复:

  • 更正 NSIS 后端清理钩子,使其优先使用安装根目录下的清理脚本路径,只有在需要时才回退到更新程序暂存路径,确保在文件被覆盖之前终止捆绑的后端进程。

测试:

  • 扩展 Windows 安装程序清理测试,以验证 PowerShell 脚本只匹配给定安装根目录下的进程,并验证 NSIS 钩子使用正确的脚本路径查找顺序并通过 nsExec 执行脚本。
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以正确定位并运行捆绑的 PowerShell 脚本,防止遗留的后端进程阻碍升级。

错误修复:

  • 确保 NSIS 安装程序的清理钩子在回退到更新程序资源路径之前,优先在安装根目录查找后端清理脚本,从而避免遗留的后端 Python 进程在安装期间锁定文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被正确限定在指定的安装根目录内,并断言 NSIS 钩子在查找脚本时使用正确的查找顺序且不再依赖旧路径。
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,确保在安装和升级过程中,捆绑的后端 Python 进程能够被正确终止。

错误修复:

  • 确保 NSIS 安装程序的清理钩子会先在安装根目录查找后端清理 PowerShell 脚本,然后才回退到更新器资源路径,从而防止陈旧的后端 Python 进程在安装过程中锁定文件。

测试:

  • 扩展 Windows 安装程序清理测试,用于验证进程匹配被限定在提供的安装根目录范围内,并且 NSIS 钩子使用正确的查找顺序来定位清理脚本。
Original summary in English

Sourcery 总结

修复 Windows NSIS 安装程序后端清理逻辑,以便在升级和重新安装时,能在覆盖文件之前正确终止捆绑的后端运行时。

错误修复:

  • 更新 NSIS 后端清理钩子,使其优先从安装根目录解析清理 PowerShell 脚本,并在此失败时回退到 updater-staging 路径,确保残留的后端 Python 进程不会锁定安装文件。

测试:

  • 扩展 Windows 安装程序清理测试,用于验证清理脚本只针对指定安装根目录下的进程,并确保 NSIS 钩子使用正确的脚本查找顺序并通过 nsExec 执行该脚本。
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.

Bug 修复:

  • 更正 NSIS 后端清理钩子,使其优先使用安装根目录下的清理脚本路径,只有在需要时才回退到更新程序暂存路径,确保在文件被覆盖之前终止捆绑的后端进程。

测试:

  • 扩展 Windows 安装程序清理测试,以验证 PowerShell 脚本只匹配给定安装根目录下的进程,并验证 NSIS 钩子使用正确的脚本路径查找顺序并通过 nsExec 执行脚本。
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.

错误修复:

  • 修正 NSIS 预安装清理钩子,使其优先在安装根目录查找后端清理 PowerShell 脚本,仅在必要时回退到 updater 暂存路径,从而防止遗留的后端 Python 进程锁定安装文件。

测试:

  • 扩展 Windows 安装程序清理测试,用于断言进程匹配仅限于指定的安装根目录,并验证 NSIS 钩子的脚本查找顺序及其执行行为。
Original summary in English

Sourcery 总结

修复 Windows NSIS 安装程序后端清理逻辑,以便在升级和重新安装时,能在覆盖文件之前正确终止捆绑的后端运行时。

错误修复:

  • 更新 NSIS 后端清理钩子,使其优先从安装根目录解析清理 PowerShell 脚本,并在此失败时回退到 updater-staging 路径,确保残留的后端 Python 进程不会锁定安装文件。

测试:

  • 扩展 Windows 安装程序清理测试,用于验证清理脚本只针对指定安装根目录下的进程,并确保 NSIS 钩子使用正确的脚本查找顺序并通过 nsExec 执行该脚本。
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.

Bug 修复:

  • 更正 NSIS 后端清理钩子,使其优先使用安装根目录下的清理脚本路径,只有在需要时才回退到更新程序暂存路径,确保在文件被覆盖之前终止捆绑的后端进程。

测试:

  • 扩展 Windows 安装程序清理测试,以验证 PowerShell 脚本只匹配给定安装根目录下的进程,并验证 NSIS 钩子使用正确的脚本路径查找顺序并通过 nsExec 执行脚本。
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.

Bug 修复:

  • 修复 Windows NSIS 安装程序清理逻辑,使其不再遗漏打包的后端 PowerShell 脚本,从而防止遗留的后端 Python 进程阻塞升级和重新安装。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并验证 NSIS 钩子使用正确的主脚本和回退脚本查找顺序。
Original summary in English

Sourcery 总结

修复 Windows NSIS 安装程序后端清理逻辑,以便在升级和重新安装时,能在覆盖文件之前正确终止捆绑的后端运行时。

错误修复:

  • 更新 NSIS 后端清理钩子,使其优先从安装根目录解析清理 PowerShell 脚本,并在此失败时回退到 updater-staging 路径,确保残留的后端 Python 进程不会锁定安装文件。

测试:

  • 扩展 Windows 安装程序清理测试,用于验证清理脚本只针对指定安装根目录下的进程,并确保 NSIS 钩子使用正确的脚本查找顺序并通过 nsExec 执行该脚本。
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.

Bug 修复:

  • 更正 NSIS 后端清理钩子,使其优先使用安装根目录下的清理脚本路径,只有在需要时才回退到更新程序暂存路径,确保在文件被覆盖之前终止捆绑的后端进程。

测试:

  • 扩展 Windows 安装程序清理测试,以验证 PowerShell 脚本只匹配给定安装根目录下的进程,并验证 NSIS 钩子使用正确的脚本路径查找顺序并通过 nsExec 执行脚本。
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.

错误修复:

  • 修正 NSIS 预安装清理钩子,使其优先在安装根目录查找后端清理 PowerShell 脚本,仅在必要时回退到 updater 暂存路径,从而防止遗留的后端 Python 进程锁定安装文件。

测试:

  • 扩展 Windows 安装程序清理测试,用于断言进程匹配仅限于指定的安装根目录,并验证 NSIS 钩子的脚本查找顺序及其执行行为。
Original summary in English

Sourcery 总结

修复 Windows NSIS 安装程序后端清理逻辑,以便在升级和重新安装时,能在覆盖文件之前正确终止捆绑的后端运行时。

错误修复:

  • 更新 NSIS 后端清理钩子,使其优先从安装根目录解析清理 PowerShell 脚本,并在此失败时回退到 updater-staging 路径,确保残留的后端 Python 进程不会锁定安装文件。

测试:

  • 扩展 Windows 安装程序清理测试,用于验证清理脚本只针对指定安装根目录下的进程,并确保 NSIS 钩子使用正确的脚本查找顺序并通过 nsExec 执行该脚本。
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.

Bug 修复:

  • 更正 NSIS 后端清理钩子,使其优先使用安装根目录下的清理脚本路径,只有在需要时才回退到更新程序暂存路径,确保在文件被覆盖之前终止捆绑的后端进程。

测试:

  • 扩展 Windows 安装程序清理测试,以验证 PowerShell 脚本只匹配给定安装根目录下的进程,并验证 NSIS 钩子使用正确的脚本路径查找顺序并通过 nsExec 执行脚本。
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.

Bug 修复:

  • 确保 NSIS 预安装清理钩子在回退到更新程序资源路径之前,先在安装根目录查找后端清理脚本,避免残留的后端 Python 进程在安装过程中锁定文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确认 NSIS 钩子在查找清理脚本时使用了正确的查找顺序。
Original summary in English

Sourcery 总结

修复 Windows NSIS 安装程序后端清理逻辑,以便在升级和重新安装时,能在覆盖文件之前正确终止捆绑的后端运行时。

错误修复:

  • 更新 NSIS 后端清理钩子,使其优先从安装根目录解析清理 PowerShell 脚本,并在此失败时回退到 updater-staging 路径,确保残留的后端 Python 进程不会锁定安装文件。

测试:

  • 扩展 Windows 安装程序清理测试,用于验证清理脚本只针对指定安装根目录下的进程,并确保 NSIS 钩子使用正确的脚本查找顺序并通过 nsExec 执行该脚本。
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.

Bug 修复:

  • 更正 NSIS 后端清理钩子,使其优先使用安装根目录下的清理脚本路径,只有在需要时才回退到更新程序暂存路径,确保在文件被覆盖之前终止捆绑的后端进程。

测试:

  • 扩展 Windows 安装程序清理测试,以验证 PowerShell 脚本只匹配给定安装根目录下的进程,并验证 NSIS 钩子使用正确的脚本路径查找顺序并通过 nsExec 执行脚本。
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.

错误修复:

  • 修正 NSIS 预安装清理钩子,使其优先在安装根目录查找后端清理 PowerShell 脚本,仅在必要时回退到 updater 暂存路径,从而防止遗留的后端 Python 进程锁定安装文件。

测试:

  • 扩展 Windows 安装程序清理测试,用于断言进程匹配仅限于指定的安装根目录,并验证 NSIS 钩子的脚本查找顺序及其执行行为。
Original summary in English

Sourcery 总结

修复 Windows NSIS 安装程序后端清理逻辑,以便在升级和重新安装时,能在覆盖文件之前正确终止捆绑的后端运行时。

错误修复:

  • 更新 NSIS 后端清理钩子,使其优先从安装根目录解析清理 PowerShell 脚本,并在此失败时回退到 updater-staging 路径,确保残留的后端 Python 进程不会锁定安装文件。

测试:

  • 扩展 Windows 安装程序清理测试,用于验证清理脚本只针对指定安装根目录下的进程,并确保 NSIS 钩子使用正确的脚本查找顺序并通过 nsExec 执行该脚本。
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.

Bug 修复:

  • 更正 NSIS 后端清理钩子,使其优先使用安装根目录下的清理脚本路径,只有在需要时才回退到更新程序暂存路径,确保在文件被覆盖之前终止捆绑的后端进程。

测试:

  • 扩展 Windows 安装程序清理测试,以验证 PowerShell 脚本只匹配给定安装根目录下的进程,并验证 NSIS 钩子使用正确的脚本路径查找顺序并通过 nsExec 执行脚本。
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.

Bug 修复:

  • 修复 Windows NSIS 安装程序清理逻辑,使其不再遗漏打包的后端 PowerShell 脚本,从而防止遗留的后端 Python 进程阻塞升级和重新安装。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并验证 NSIS 钩子使用正确的主脚本和回退脚本查找顺序。
Original summary in English

Sourcery 总结

修复 Windows NSIS 安装程序后端清理逻辑,以便在升级和重新安装时,能在覆盖文件之前正确终止捆绑的后端运行时。

错误修复:

  • 更新 NSIS 后端清理钩子,使其优先从安装根目录解析清理 PowerShell 脚本,并在此失败时回退到 updater-staging 路径,确保残留的后端 Python 进程不会锁定安装文件。

测试:

  • 扩展 Windows 安装程序清理测试,用于验证清理脚本只针对指定安装根目录下的进程,并确保 NSIS 钩子使用正确的脚本查找顺序并通过 nsExec 执行该脚本。
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.

Bug 修复:

  • 更正 NSIS 后端清理钩子,使其优先使用安装根目录下的清理脚本路径,只有在需要时才回退到更新程序暂存路径,确保在文件被覆盖之前终止捆绑的后端进程。

测试:

  • 扩展 Windows 安装程序清理测试,以验证 PowerShell 脚本只匹配给定安装根目录下的进程,并验证 NSIS 钩子使用正确的脚本路径查找顺序并通过 nsExec 执行脚本。
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.

错误修复:

  • 修正 NSIS 预安装清理钩子,使其优先在安装根目录查找后端清理 PowerShell 脚本,仅在必要时回退到 updater 暂存路径,从而防止遗留的后端 Python 进程锁定安装文件。

测试:

  • 扩展 Windows 安装程序清理测试,用于断言进程匹配仅限于指定的安装根目录,并验证 NSIS 钩子的脚本查找顺序及其执行行为。
Original summary in English

Sourcery 总结

修复 Windows NSIS 安装程序后端清理逻辑,以便在升级和重新安装时,能在覆盖文件之前正确终止捆绑的后端运行时。

错误修复:

  • 更新 NSIS 后端清理钩子,使其优先从安装根目录解析清理 PowerShell 脚本,并在此失败时回退到 updater-staging 路径,确保残留的后端 Python 进程不会锁定安装文件。

测试:

  • 扩展 Windows 安装程序清理测试,用于验证清理脚本只针对指定安装根目录下的进程,并确保 NSIS 钩子使用正确的脚本查找顺序并通过 nsExec 执行该脚本。
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.

Bug 修复:

  • 更正 NSIS 后端清理钩子,使其优先使用安装根目录下的清理脚本路径,只有在需要时才回退到更新程序暂存路径,确保在文件被覆盖之前终止捆绑的后端进程。

测试:

  • 扩展 Windows 安装程序清理测试,以验证 PowerShell 脚本只匹配给定安装根目录下的进程,并验证 NSIS 钩子使用正确的脚本路径查找顺序并通过 nsExec 执行脚本。
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.
Original summary in English

由 Sourcery 提供的摘要

修复 Windows NSIS 安装程序后端清理逻辑,以便在安装和升级过程中能够正确找到并调用捆绑的 PowerShell 脚本。

错误修复:

  • 更新 NSIS 后端清理钩子,使其使用安装根目录中的清理脚本路径,并在此基础上增加“updater-staging”目录的回退路径,从而防止陈旧的后端 Python 进程锁定安装程序文件。

测试:

  • 扩展 Windows 安装程序清理测试,以验证进程匹配被限制在给定的安装根目录内,并确保 NSIS 钩子使用正确的脚本查找顺序并按预期执行。
Original summary in English

Summary by Sourcery

Fix Windows NSIS installer backend cleanup so the bundled PowerShell script is correctly located and invoked during installs and upgrades.

Bug Fixes:

  • Update the NSIS backend cleanup hook to use the install-root cleanup script path with an updater-staging fallback, preventing stale backend Python processes from locking installer files.

Tests:

  • Extend Windows installer cleanup tests to validate process matching is constrained to the given install root and that the NSIS hook uses the correct script lookup order and execution.

@gemini-code-assist
Copy link
Copy Markdown
Contributor

Summary of Changes

Hello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request resolves a critical bug in the Windows installer that prevented proper cleanup of the backend Python process during updates and reinstalls. By correcting the path lookup for the cleanup script and adding regression tests, this change ensures a smoother and more reliable installation experience for users.

Highlights

  • Fixes Windows installer cleanup regression: Addresses an issue where the bundled backend Python process remains running after app updates or reinstalls, causing file-in-use errors.
  • Updates NSIS hook: Modifies the NSIS preinstall cleanup hook to correctly locate and execute the kill-backend-processes.ps1 script from the install root.
  • Adds regression coverage: Introduces tests to ensure the cleanup logic is scoped to the provided install root and that the correct lookup order is maintained in the hook.
Changelog
  • scripts/ci/windows-installer-cleanup-script.test.mjs
    • Added tests to verify that the cleanup script only matches processes under the install root and that the NSIS installer hook looks for the cleanup script in the correct order.
  • src-tauri/windows/nsis-installer-hooks.nsh
    • Updated the NSIS installer hook to prioritize the install-root cleanup script before falling back to the updater resource path.
Activity
  • zouyonghe fixed a Windows installer cleanup regression.
  • zouyonghe updated the NSIS hook to look for the install-root cleanup script first.
  • zouyonghe added regression coverage to lock the expected lookup order in the hook.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@zouyonghe zouyonghe marked this pull request as ready for review March 11, 2026 16:30
Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request effectively resolves a critical issue in the Windows installer's backend cleanup process by correcting the path used to locate the kill-backend-processes.ps1 script. The change ensures that the bundled Python process is properly terminated during upgrades and reinstalls, preventing file-in-use errors. Additionally, robust test cases have been added to validate the cleanup script's scope and the NSIS hook's script lookup order, significantly improving the installer's reliability and preventing future regressions.

Copy link
Copy Markdown

@sourcery-ai sourcery-ai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey - 我留下了一些整体层面的反馈:

  • 针对 NSIS hook 和 PowerShell 脚本的新测试过于依赖精确的字符串模式(包括使用 doesNotMatch 的负向匹配检查),这在将来可能会比较脆弱;建议将断言更多地聚焦在更高层次的行为或更稳定的子串上,而不是完整的命令行以及不相关标记是否不存在。
  • NSIS hook 中将 "$INSTDIR\_up_\resources\kill-backend-processes.ps1" 写死了;如果这种更新器目录结构会在多个地方使用,建议将该路径集中管理,或者清晰地文档化这一约定,以避免在更新器结构变化时出现不一致。
给 AI 代理的提示
Please address the comments from this code review:

## Overall Comments
- The new tests for the NSIS hook and PowerShell script are tightly coupled to exact string patterns (including negative `doesNotMatch` checks), which may be brittle over time; consider focusing assertions on higher-level behaviors or more stable substrings rather than full command lines and absence of unrelated tokens.
- The NSIS hook hardcodes `"$INSTDIR\_up_\resources\kill-backend-processes.ps1"`; if this updater layout is used in multiple places, consider centralizing this path or documenting its contract to avoid future divergence when the updater structure changes.

Sourcery 对开源项目是免费的——如果你觉得我们的代码审查有帮助,欢迎分享 ✨
帮我变得更有用!请在每条评论上点击 👍 或 👎,我会根据你的反馈改进后续的代码审查。
Original comment in English

Hey - I've left some high level feedback:

  • The new tests for the NSIS hook and PowerShell script are tightly coupled to exact string patterns (including negative doesNotMatch checks), which may be brittle over time; consider focusing assertions on higher-level behaviors or more stable substrings rather than full command lines and absence of unrelated tokens.
  • The NSIS hook hardcodes "$INSTDIR\_up_\resources\kill-backend-processes.ps1"; if this updater layout is used in multiple places, consider centralizing this path or documenting its contract to avoid future divergence when the updater structure changes.
Prompt for AI Agents
Please address the comments from this code review:

## Overall Comments
- The new tests for the NSIS hook and PowerShell script are tightly coupled to exact string patterns (including negative `doesNotMatch` checks), which may be brittle over time; consider focusing assertions on higher-level behaviors or more stable substrings rather than full command lines and absence of unrelated tokens.
- The NSIS hook hardcodes `"$INSTDIR\_up_\resources\kill-backend-processes.ps1"`; if this updater layout is used in multiple places, consider centralizing this path or documenting its contract to avoid future divergence when the updater structure changes.

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

@zouyonghe
Copy link
Copy Markdown
Member Author

@sourcery-ai review

Copy link
Copy Markdown

@sourcery-ai sourcery-ai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey - 我在这里留下了一些高层次的反馈:

  • 测试 nsis installer hook looks for the install-root cleanup script before updater fallback 目前只断言了两个路径都存在,而没有断言它们的先后顺序;如果你确实想锁定查找顺序,可以考虑对这两个字符串在文件中的索引位置进行断言。
  • NSIS hook 的测试匹配的是非常具体的 StrCpy 行,这在面对无害的重构(例如新增标志或空白字符)时可能比较脆弱;你可以让这些正则表达式稍微灵活一些,同时仍然保证断言的是相同的行为。
给 AI Agent 的提示
Please address the comments from this code review:

## Overall Comments
- The test `nsis installer hook looks for the install-root cleanup script before updater fallback` currently only asserts both paths exist and not their order; if you truly want to lock lookup order, consider asserting on the index positions of the two strings in the file.
- The NSIS hook test matches very specific `StrCpy` lines, which may be brittle to harmless refactors (e.g., additional flags or whitespace); you might make the regexes a bit more flexible while still asserting the same behavior.

Sourcery 对开源项目是免费的——如果你觉得我们的评审有帮助,欢迎分享 ✨
帮我变得更有用!请在每条评论上点击 👍 或 👎,我会根据你的反馈改进后续的评审。
Original comment in English

Hey - I've left some high level feedback:

  • The test nsis installer hook looks for the install-root cleanup script before updater fallback currently only asserts both paths exist and not their order; if you truly want to lock lookup order, consider asserting on the index positions of the two strings in the file.
  • The NSIS hook test matches very specific StrCpy lines, which may be brittle to harmless refactors (e.g., additional flags or whitespace); you might make the regexes a bit more flexible while still asserting the same behavior.
Prompt for AI Agents
Please address the comments from this code review:

## Overall Comments
- The test `nsis installer hook looks for the install-root cleanup script before updater fallback` currently only asserts both paths exist and not their order; if you truly want to lock lookup order, consider asserting on the index positions of the two strings in the file.
- The NSIS hook test matches very specific `StrCpy` lines, which may be brittle to harmless refactors (e.g., additional flags or whitespace); you might make the regexes a bit more flexible while still asserting the same behavior.

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

@zouyonghe
Copy link
Copy Markdown
Member Author

@sourcery-ai review

Copy link
Copy Markdown

@sourcery-ai sourcery-ai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey - 我在这里给出了一些整体性的反馈:

  • nsis installer hook looks for the install-root cleanup script before updater fallback 这个测试依赖原始文件文本中通过 indexOf 得到的顺序判断,这种方式有点脆弱;可以考虑基于宏结构进行断言,或者使用更有针对性的正则表达式,在容忍格式变化的同时,仍然保证查找顺序的约束。
  • NSIS hook 和测试里硬编码的 PowerShell 脚本路径可以集中到一处(例如共享常量或一个小的辅助方法),这样未来路径变更时就不需要手动修改多个调用点。
供 AI 代理使用的提示词
Please address the comments from this code review:

## Overall Comments
- `nsis installer hook looks for the install-root cleanup script before updater fallback` 这个测试依赖原始文件文本中通过 `indexOf` 得到的顺序判断,这种方式有点脆弱;可以考虑基于宏结构进行断言,或者使用更有针对性的正则表达式,在容忍格式变化的同时,仍然保证查找顺序的约束。
- NSIS hook 和测试里硬编码的 PowerShell 脚本路径可以集中到一处(例如共享常量或一个小的辅助方法),这样未来路径变更时就不需要手动修改多个调用点。

Sourcery 对开源项目是免费的——如果你觉得我们的评审有帮助,欢迎分享给更多人 ✨
帮我变得更有用!请在每条评论上点 👍 或 👎,我会根据你的反馈持续改进评审质量。
Original comment in English

Hey - I've left some high level feedback:

  • The nsis installer hook looks for the install-root cleanup script before updater fallback test relies on indexOf ordering in the raw file text, which is a bit brittle; consider asserting on macro structure or using more targeted regexes to tolerate formatting changes while still enforcing lookup order.
  • The hard-coded PowerShell script paths in both the NSIS hook and the tests could be centralized (e.g., shared constants or a small helper) so that future path changes don’t require updating multiple call sites manually.
Prompt for AI Agents
Please address the comments from this code review:

## Overall Comments
- The `nsis installer hook looks for the install-root cleanup script before updater fallback` test relies on `indexOf` ordering in the raw file text, which is a bit brittle; consider asserting on macro structure or using more targeted regexes to tolerate formatting changes while still enforcing lookup order.
- The hard-coded PowerShell script paths in both the NSIS hook and the tests could be centralized (e.g., shared constants or a small helper) so that future path changes don’t require updating multiple call sites manually.

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

@zouyonghe
Copy link
Copy Markdown
Member Author

@sourcery-ai review

Copy link
Copy Markdown

@sourcery-ai sourcery-ai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey - 我发现了 2 个问题

面向 AI 代理的提示词
Please address the comments from this code review:

## Individual Comments

### Comment 1
<location path="scripts/ci/windows-installer-cleanup-script.test.mjs" line_range="16-20" />
<code_context>
+  return value.replaceAll(/[.*+?^${}()|[\]\\]/g, '\\$&');
+}
+
+function extractNsisMacroBody(source, macroName) {
+  const match = source.match(new RegExp(`!macro\\s+${escapeRegex(macroName)}([\\s\\S]*?)!macroend`));
+  assert.ok(match, `Expected NSIS macro ${macroName} to exist`);
</code_context>
<issue_to_address>
**suggestion (bug_risk):** 收紧宏提取的正则表达式,避免意外的部分匹配,并简化模式。

当前的模式会匹配任何名称中包含 `macroName` 子串的 `!macro`,并依赖 `[\s\S]*?` 跨行匹配,这可能导致错误匹配。比如,在搜索 `NSIS_RUN_BACKEND_CLEANUP` 时,`NSIS_RUN_BACKEND_CLEANUP_EXTRA` 也会被匹配到。

为了让其更安全、更清晰,可以考虑:

- 使用单词边界锚定宏名:`!macro\s+${escapeRegex(macroName)}\b`- 使用 `m``s` 标志配合更简单的主体模式:`new RegExp(`^!macro\s+${escapeRegex(macroName)}\b([\s\S]*?)^!macroend`, 'ms')`。

这可以减少意外的部分匹配,并且在同一文件中存在多个宏时更健壮。

```suggestion
function extractNsisMacroBody(source, macroName) {
  const match = source.match(
    new RegExp(
      `^!macro\\s+${escapeRegex(macroName)}\\b([\\s\\S]*?)^!macroend`,
      'ms',
    ),
  );
  assert.ok(match, `Expected NSIS macro ${macroName} to exist`);
  return match[1];
}
```
</issue_to_address>

### Comment 2
<location path="scripts/ci/windows-installer-cleanup-script.test.mjs" line_range="12" />
<code_context>
+const installRootCleanupPath = '$INSTDIR\\kill-backend-processes.ps1';
+const updaterFallbackCleanupPath = '$INSTDIR\\_up_\\resources\\kill-backend-processes.ps1';
+
+function escapeRegex(value) {
+  return value.replaceAll(/[.*+?^${}()|[\]\\]/g, '\\$&');
+}
</code_context>
<issue_to_address>
**issue (complexity):** 建议用直接的字面量检查和更简单的字符串解析来替换大量使用正则的辅助函数,使这些测试更易读、更易维护。

你可以通过更简单、更直接的字符串/行检查来保持相同的覆盖率,并避免这些重度依赖正则的辅助方法。

### 1. 对常量去掉 `escapeRegex` / 动态 `RegExp`

既然 define 和路径都是你控制的常量,字面量正则会更易读、更容易理解:

```js
// Before
assert.match(
  source,
  new RegExp(
    `!define\\s+${escapeRegex(nsisPrimaryCleanupDefine)}\\s+"${escapeRegex(installRootCleanupPath)}"`
  )
);

// After
assert.match(
  source,
  /!define\s+ASTRBOT_BACKEND_CLEANUP_SCRIPT_INSTALL_ROOT\s+"\$INSTDIR\\kill-backend-processes\.ps1"/
);
```

回退路径也同理:

```js
assert.match(
  source,
  /!define\s+ASTRBOT_BACKEND_CLEANUP_SCRIPT_UPDATER_FALLBACK\s+"\$INSTDIR\\_up_\\resources\\kill-backend-processes\.ps1"/
);
```

这样就可以完全移除 `escapeRegex`### 2. 将 `extractNsisMacroBody` 简化为基于行的解析

宏边界是非常明确的标记;你不需要“匹配一切”的正则表达式:

```js
// Before
function extractNsisMacroBody(source, macroName) {
  const match = source.match(new RegExp(`!macro\\s+${escapeRegex(macroName)}([\\s\\S]*?)!macroend`));
  assert.ok(match, `Expected NSIS macro ${macroName} to exist`);
  return match[1];
}

// After
function extractNsisMacroBody(source, macroName) {
  const startMarker = `!macro ${macroName}`;
  const endMarker = '!macroend';

  const startIdx = source.indexOf(startMarker);
  assert.ok(startIdx !== -1, `Expected NSIS macro ${macroName} to exist`);

  const bodyStart = startIdx + startMarker.length;
  const endIdx = source.indexOf(endMarker, bodyStart);
  assert.ok(endIdx !== -1, `Expected end of NSIS macro ${macroName}`);

  return source.slice(bodyStart, endIdx);
}
```

这能保持原有功能,但更容易理解,而且对正则的依赖更少、不那么脆弱。

### 3. 拆分密集的宏行为 `RegExp`

与其用一个长而拼接的模式,不如在宏主体上按顺序断言关键行为。例如:

```js
// Before
assert.match(
  macroBody,
  new RegExp(
    `StrCpy\\s+\\$1\\s+"\\$\\{${escapeRegex(nsisPrimaryCleanupDefine)}\\}"[\\s\\S]*?` +
      `IfFileExists\\s+"\\$1"\\s+\\+2\\s+0[\\s\\S]*?` +
      `StrCpy\\s+\\$1\\s+"\\$\\{${escapeRegex(nsisFallbackCleanupDefine)}\\}"`
  )
);

// After
assert.match(
  macroBody,
  /StrCpy\s+\$1\s+"\$\{ASTRBOT_BACKEND_CLEANUP_SCRIPT_INSTALL_ROOT\}"/
);
assert.match(
  macroBody,
  /IfFileExists\s+"\$1"\s+\+2\s+0/
);
assert.match(
  macroBody,
  /StrCpy\s+\$1\s+"\$\{ASTRBOT_BACKEND_CLEANUP_SCRIPT_UPDATER_FALLBACK\}"/
);

// Optional: ensure ordering via positions
const primaryIdx = macroBody.indexOf('StrCpy $1 "${ASTRBOT_BACKEND_CLEANUP_SCRIPT_INSTALL_ROOT}"');
const ifIdx = macroBody.indexOf('IfFileExists "$1" +2 0');
const fallbackIdx = macroBody.indexOf('StrCpy $1 "${ASTRBOT_BACKEND_CLEANUP_SCRIPT_UPDATER_FALLBACK}"');

assert.ok(primaryIdx !== -1 && ifIdx !== -1 && fallbackIdx !== -1);
assert.ok(primaryIdx < ifIdx && ifIdx < fallbackIdx);
```

这在保持相同行为保证(主路径、存在性检查、回退路径以及顺序)的同时,显著降低了测试的理解负担。
</issue_to_address>

Sourcery 对开源项目是免费的——如果你觉得我们的评审有帮助,请考虑分享 ✨
帮我变得更有用!请在每条评论上点击 👍 或 👎,我会根据你的反馈改进之后的评审。
Original comment in English

Hey - I've found 2 issues

Prompt for AI Agents
Please address the comments from this code review:

## Individual Comments

### Comment 1
<location path="scripts/ci/windows-installer-cleanup-script.test.mjs" line_range="16-20" />
<code_context>
+  return value.replaceAll(/[.*+?^${}()|[\]\\]/g, '\\$&');
+}
+
+function extractNsisMacroBody(source, macroName) {
+  const match = source.match(new RegExp(`!macro\\s+${escapeRegex(macroName)}([\\s\\S]*?)!macroend`));
+  assert.ok(match, `Expected NSIS macro ${macroName} to exist`);
</code_context>
<issue_to_address>
**suggestion (bug_risk):** Tighten the macro-extraction regex to avoid accidental partial matches and simplify the pattern.

The current pattern matches any `!macro` whose name contains `macroName` as a substring and relies on `[\s\S]*?` to span lines, which can lead to incorrect matches. For example, `NSIS_RUN_BACKEND_CLEANUP_EXTRA` would match when searching for `NSIS_RUN_BACKEND_CLEANUP`.

To make this safer and clearer, consider:

- Anchoring the name with a word boundary: `!macro\s+${escapeRegex(macroName)}\b`.
- Using `m` and `s` flags with a simpler body pattern: `new RegExp(`^!macro\s+${escapeRegex(macroName)}\b([\s\S]*?)^!macroend`, 'ms')`.

This reduces accidental partial matches and is more robust when multiple macros are present in the same file.

```suggestion
function extractNsisMacroBody(source, macroName) {
  const match = source.match(
    new RegExp(
      `^!macro\\s+${escapeRegex(macroName)}\\b([\\s\\S]*?)^!macroend`,
      'ms',
    ),
  );
  assert.ok(match, `Expected NSIS macro ${macroName} to exist`);
  return match[1];
}
```
</issue_to_address>

### Comment 2
<location path="scripts/ci/windows-installer-cleanup-script.test.mjs" line_range="12" />
<code_context>
+const installRootCleanupPath = '$INSTDIR\\kill-backend-processes.ps1';
+const updaterFallbackCleanupPath = '$INSTDIR\\_up_\\resources\\kill-backend-processes.ps1';
+
+function escapeRegex(value) {
+  return value.replaceAll(/[.*+?^${}()|[\]\\]/g, '\\$&');
+}
</code_context>
<issue_to_address>
**issue (complexity):** Consider replacing the regex-heavy helpers with direct, literal checks and simpler string parsing to keep these tests easier to read and maintain.

You can keep the same coverage with simpler, more direct string/line checks and avoid the regex-heavy helpers.

### 1. Drop `escapeRegex` / dynamic `RegExp` for constants

Since the defines and paths are constants you control, literal regexes are easier to read and reason about:

```js
// Before
assert.match(
  source,
  new RegExp(
    `!define\\s+${escapeRegex(nsisPrimaryCleanupDefine)}\\s+"${escapeRegex(installRootCleanupPath)}"`
  )
);

// After
assert.match(
  source,
  /!define\s+ASTRBOT_BACKEND_CLEANUP_SCRIPT_INSTALL_ROOT\s+"\$INSTDIR\\kill-backend-processes\.ps1"/
);
```

Same for the fallback:

```js
assert.match(
  source,
  /!define\s+ASTRBOT_BACKEND_CLEANUP_SCRIPT_UPDATER_FALLBACK\s+"\$INSTDIR\\_up_\\resources\\kill-backend-processes\.ps1"/
);
```

With this, you can remove `escapeRegex` entirely.

### 2. Simplify `extractNsisMacroBody` to line-based parsing

The macro boundaries are clear markers; you don’t need a “match everything” regex:

```js
// Before
function extractNsisMacroBody(source, macroName) {
  const match = source.match(new RegExp(`!macro\\s+${escapeRegex(macroName)}([\\s\\S]*?)!macroend`));
  assert.ok(match, `Expected NSIS macro ${macroName} to exist`);
  return match[1];
}

// After
function extractNsisMacroBody(source, macroName) {
  const startMarker = `!macro ${macroName}`;
  const endMarker = '!macroend';

  const startIdx = source.indexOf(startMarker);
  assert.ok(startIdx !== -1, `Expected NSIS macro ${macroName} to exist`);

  const bodyStart = startIdx + startMarker.length;
  const endIdx = source.indexOf(endMarker, bodyStart);
  assert.ok(endIdx !== -1, `Expected end of NSIS macro ${macroName}`);

  return source.slice(bodyStart, endIdx);
}
```

This keeps functionality but is easier to follow and less regex‑brittle.

### 3. Break up the dense macro behavior `RegExp`

Instead of one long stitched pattern, assert key behaviors in sequence on the macro body. For example:

```js
// Before
assert.match(
  macroBody,
  new RegExp(
    `StrCpy\\s+\\$1\\s+"\\$\\{${escapeRegex(nsisPrimaryCleanupDefine)}\\}"[\\s\\S]*?` +
      `IfFileExists\\s+"\\$1"\\s+\\+2\\s+0[\\s\\S]*?` +
      `StrCpy\\s+\\$1\\s+"\\$\\{${escapeRegex(nsisFallbackCleanupDefine)}\\}"`
  )
);

// After
assert.match(
  macroBody,
  /StrCpy\s+\$1\s+"\$\{ASTRBOT_BACKEND_CLEANUP_SCRIPT_INSTALL_ROOT\}"/
);
assert.match(
  macroBody,
  /IfFileExists\s+"\$1"\s+\+2\s+0/
);
assert.match(
  macroBody,
  /StrCpy\s+\$1\s+"\$\{ASTRBOT_BACKEND_CLEANUP_SCRIPT_UPDATER_FALLBACK\}"/
);

// Optional: ensure ordering via positions
const primaryIdx = macroBody.indexOf('StrCpy $1 "${ASTRBOT_BACKEND_CLEANUP_SCRIPT_INSTALL_ROOT}"');
const ifIdx = macroBody.indexOf('IfFileExists "$1" +2 0');
const fallbackIdx = macroBody.indexOf('StrCpy $1 "${ASTRBOT_BACKEND_CLEANUP_SCRIPT_UPDATER_FALLBACK}"');

assert.ok(primaryIdx !== -1 && ifIdx !== -1 && fallbackIdx !== -1);
assert.ok(primaryIdx < ifIdx && ifIdx < fallbackIdx);
```

This keeps the same behavioral guarantees (primary path, existence check, fallback path, ordering) but substantially reduces mental overhead in the tests.
</issue_to_address>

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

Comment thread scripts/ci/windows-installer-cleanup-script.test.mjs Outdated
Comment thread scripts/ci/windows-installer-cleanup-script.test.mjs Outdated
@zouyonghe zouyonghe closed this Mar 11, 2026
@zouyonghe
Copy link
Copy Markdown
Member Author

@sourcery-ai review

@zouyonghe zouyonghe reopened this Mar 11, 2026
Copy link
Copy Markdown

@sourcery-ai sourcery-ai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey - 我在这里给出了一些整体性的反馈:

  • NSIS 宏解析辅助函数 extractNsisMacroBody 假设宏声明行严格为 !macro <name>,没有参数也没有行尾注释;建议将判断放宽为使用 startsWith('!macro ' + macroName),以避免将来宏签名扩展时导致的兼容性问题。
  • 在 NSIS hook 中,通过对精确字符串执行 indexOf 来断言特定的 StrCpy 行,这种写法比较脆弱;你可以考虑改用基于正则的检查,或者在提取出的宏体中搜索模式,从而在仍然保证查找顺序的前提下,更好地容忍无害的空白或格式变更。
给 AI Agent 的提示
Please address the comments from this code review:

## Overall Comments
- The NSIS macro parsing helper `extractNsisMacroBody` assumes the macro declaration line is exactly `!macro <name>` with no parameters or trailing comments; consider relaxing this to `startsWith('!macro ' + macroName)` to avoid future breakage if the macro signature is extended.
- The test asserting specific `StrCpy` lines via `indexOf` on exact strings in the NSIS hook is quite brittle; you could instead use regex-based checks or search for patterns within the extracted macro body to tolerate benign whitespace or formatting changes while still enforcing the lookup order.

Sourcery 对开源项目是免费的——如果你觉得我们的代码审查有帮助,欢迎分享 ✨
帮我变得更有用!请在每条评论上点 👍 或 👎,我会根据你的反馈改进之后的审查。
Original comment in English

Hey - I've left some high level feedback:

  • The NSIS macro parsing helper extractNsisMacroBody assumes the macro declaration line is exactly !macro <name> with no parameters or trailing comments; consider relaxing this to startsWith('!macro ' + macroName) to avoid future breakage if the macro signature is extended.
  • The test asserting specific StrCpy lines via indexOf on exact strings in the NSIS hook is quite brittle; you could instead use regex-based checks or search for patterns within the extracted macro body to tolerate benign whitespace or formatting changes while still enforcing the lookup order.
Prompt for AI Agents
Please address the comments from this code review:

## Overall Comments
- The NSIS macro parsing helper `extractNsisMacroBody` assumes the macro declaration line is exactly `!macro <name>` with no parameters or trailing comments; consider relaxing this to `startsWith('!macro ' + macroName)` to avoid future breakage if the macro signature is extended.
- The test asserting specific `StrCpy` lines via `indexOf` on exact strings in the NSIS hook is quite brittle; you could instead use regex-based checks or search for patterns within the extracted macro body to tolerate benign whitespace or formatting changes while still enforcing the lookup order.

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

@zouyonghe
Copy link
Copy Markdown
Member Author

@sourcery-ai review

Copy link
Copy Markdown

@sourcery-ai sourcery-ai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey - 我发现了 1 个问题,并留下了一些整体性反馈:

  • windows-installer-cleanup-script.test.mjs 中的 NSIS 宏解析辅助函数假设了一个没有嵌套的简单 !macro/!macroend 结构;如果这个文件将来变得更复杂,建议收紧结束标记的搜索方式(例如追踪嵌套深度,或按宏名限定作用域),以避免不小心跨越到后续的宏中。
  • NSIS_RUN_BACKEND_CLEANUP 的测试依赖于对 define 和 StrCpy 顺序的精确字符串/正则匹配;为了在未来重构时不那么脆弱,你可以把查找顺序的断言抽象出来,更多地关注相对顺序和宏的使用情况,而不是完整的字面路径和空白字符。
给 AI 代理的提示
Please address the comments from this code review:

## Overall Comments
- The NSIS macro parsing helpers in `windows-installer-cleanup-script.test.mjs` assume a simple `!macro`/`!macroend` structure with no nesting; if this file grows more complex, consider tightening the end-marker search (e.g., tracking nesting depth or scoping by macro name) to avoid accidentally spanning into subsequent macros.
- The tests for `NSIS_RUN_BACKEND_CLEANUP` rely on exact string/regex matches for the defines and `StrCpy` order; to make future refactors less brittle, you might factor the lookup-order assertions to focus on relative ordering and macro usage rather than the full literal paths and whitespace.

## Individual Comments

### Comment 1
<location path="scripts/ci/windows-installer-cleanup-script.test.mjs" line_range="21" />
<code_context>
+
+  assert.notEqual(startIdx, -1, `Expected NSIS macro ${macroName} to exist`);
+
+  const endIdx = lines.findIndex((line, index) => index > startIdx && line.trim() === '!macroend');
+
+  assert.notEqual(endIdx, -1, `Expected end of NSIS macro ${macroName}`);
</code_context>
<issue_to_address>
**suggestion:** Make `extractNsisMacroBody` more tolerant of `!macroend` formatting.

This equality check will miss valid `!macroend` lines that include comments, extra whitespace, or different casing (e.g. `!macroend ; end`). To better match NSIS behavior and avoid brittle failures, consider something like `line.trim().toLowerCase().startsWith('!macroend')`, optionally allowing trailing comments.

```suggestion
  const endIdx = lines.findIndex((line, index) => {
    if (index <= startIdx) return false;

    const normalizedLine = line.trim().toLowerCase();
    return normalizedLine.startsWith('!macroend');
  });
```
</issue_to_address>

Sourcery 对开源项目是免费的——如果你觉得这些 Review 有帮助,欢迎分享 ✨
帮我变得更有用!请在每条评论上点 👍 或 👎,我会根据你的反馈改进后续的 Review。
Original comment in English

Hey - I've found 1 issue, and left some high level feedback:

  • The NSIS macro parsing helpers in windows-installer-cleanup-script.test.mjs assume a simple !macro/!macroend structure with no nesting; if this file grows more complex, consider tightening the end-marker search (e.g., tracking nesting depth or scoping by macro name) to avoid accidentally spanning into subsequent macros.
  • The tests for NSIS_RUN_BACKEND_CLEANUP rely on exact string/regex matches for the defines and StrCpy order; to make future refactors less brittle, you might factor the lookup-order assertions to focus on relative ordering and macro usage rather than the full literal paths and whitespace.
Prompt for AI Agents
Please address the comments from this code review:

## Overall Comments
- The NSIS macro parsing helpers in `windows-installer-cleanup-script.test.mjs` assume a simple `!macro`/`!macroend` structure with no nesting; if this file grows more complex, consider tightening the end-marker search (e.g., tracking nesting depth or scoping by macro name) to avoid accidentally spanning into subsequent macros.
- The tests for `NSIS_RUN_BACKEND_CLEANUP` rely on exact string/regex matches for the defines and `StrCpy` order; to make future refactors less brittle, you might factor the lookup-order assertions to focus on relative ordering and macro usage rather than the full literal paths and whitespace.

## Individual Comments

### Comment 1
<location path="scripts/ci/windows-installer-cleanup-script.test.mjs" line_range="21" />
<code_context>
+
+  assert.notEqual(startIdx, -1, `Expected NSIS macro ${macroName} to exist`);
+
+  const endIdx = lines.findIndex((line, index) => index > startIdx && line.trim() === '!macroend');
+
+  assert.notEqual(endIdx, -1, `Expected end of NSIS macro ${macroName}`);
</code_context>
<issue_to_address>
**suggestion:** Make `extractNsisMacroBody` more tolerant of `!macroend` formatting.

This equality check will miss valid `!macroend` lines that include comments, extra whitespace, or different casing (e.g. `!macroend ; end`). To better match NSIS behavior and avoid brittle failures, consider something like `line.trim().toLowerCase().startsWith('!macroend')`, optionally allowing trailing comments.

```suggestion
  const endIdx = lines.findIndex((line, index) => {
    if (index <= startIdx) return false;

    const normalizedLine = line.trim().toLowerCase();
    return normalizedLine.startsWith('!macroend');
  });
```
</issue_to_address>

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

Comment thread scripts/ci/windows-installer-cleanup-script.test.mjs Outdated
@zouyonghe
Copy link
Copy Markdown
Member Author

@sourcery-ai review

Copy link
Copy Markdown

@sourcery-ai sourcery-ai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey - 我在这里给出一些整体性的反馈:

  • 现在的 parseNsisDefines 辅助函数只匹配使用双引号的 define 值;如果将来你的 NSIS 钩子里出现未加引号或使用单引号的值,这些情况会被静默忽略。所以建议稍微泛化一下正则表达式,或者在看起来像 !define 的行却没有匹配到时加一个断言。
  • 用来检查 nsExec::ExecToLog 的测试目前使用的是 startsWith("nsExec::ExecToLog '"),这对空白字符和格式的变化非常敏感;改用类似 /nsExec::ExecToLog/ 这样的正则,可以保留测试意图,同时让它在未来的修改中不那么脆弱。
供 AI Agent 使用的提示词
Please address the comments from this code review:

## Overall Comments
- The `parseNsisDefines` helper currently only matches double-quoted define values; if your NSIS hooks ever introduce unquoted or single-quoted values this will silently miss them, so consider slightly generalizing the regex or adding an assertion when a line looks like a `!define` but doesn’t match.
- The test that checks for `nsExec::ExecToLog` uses `startsWith("nsExec::ExecToLog '")`, which is quite sensitive to whitespace/formatting changes; using a regex like `/nsExec::ExecToLog/` would keep the intent while making the test less brittle to future edits.

Sourcery 对开源项目免费 —— 如果你觉得我们的代码审查有帮助,欢迎分享 ✨
帮我变得更有用!请在每条评论上点击 👍 或 👎,我会根据你的反馈改进后续的代码审查。
Original comment in English

Hey - I've left some high level feedback:

  • The parseNsisDefines helper currently only matches double-quoted define values; if your NSIS hooks ever introduce unquoted or single-quoted values this will silently miss them, so consider slightly generalizing the regex or adding an assertion when a line looks like a !define but doesn’t match.
  • The test that checks for nsExec::ExecToLog uses startsWith("nsExec::ExecToLog '"), which is quite sensitive to whitespace/formatting changes; using a regex like /nsExec::ExecToLog/ would keep the intent while making the test less brittle to future edits.
Prompt for AI Agents
Please address the comments from this code review:

## Overall Comments
- The `parseNsisDefines` helper currently only matches double-quoted define values; if your NSIS hooks ever introduce unquoted or single-quoted values this will silently miss them, so consider slightly generalizing the regex or adding an assertion when a line looks like a `!define` but doesn’t match.
- The test that checks for `nsExec::ExecToLog` uses `startsWith("nsExec::ExecToLog '")`, which is quite sensitive to whitespace/formatting changes; using a regex like `/nsExec::ExecToLog/` would keep the intent while making the test less brittle to future edits.

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

@zouyonghe
Copy link
Copy Markdown
Member Author

@sourcery-ai review

Copy link
Copy Markdown

@sourcery-ai sourcery-ai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey - 我发现了 2 个问题

用于 AI 代理的提示词
Please address the comments from this code review:

## Individual Comments

### Comment 1
<location path="scripts/ci/windows-installer-cleanup-script.test.mjs" line_range="8-17" />
<code_context>
 const scriptPath = new URL('../../src-tauri/windows/kill-backend-processes.ps1', import.meta.url);
+const hookPath = new URL('../../src-tauri/windows/nsis-installer-hooks.nsh', import.meta.url);
+
+function extractNsisMacroBody(source, macroName) {
+  const lines = source.split('\n');
+  const startMarker = `!macro ${macroName}`;
+  const startIdx = lines.findIndex((line) => {
+    const normalizedLine = line.trimStart();
</code_context>
<issue_to_address>
**suggestion (bug_risk):** 宏起始标记的检测是区分大小写的,而宏结束标记的检测是不区分大小写的。

结束标记是通过 `toLowerCase().startsWith('!macroend')` 匹配的,但起始标记使用的是区分大小写的 `!macro`。由于 NSIS 指令通常是不区分大小写的,像 `!MACRO``!Macro` 会被忽略,而 `!macroend` 仍然能被找到。请同样对起始匹配进行大小写规范化,这样这个辅助函数在指令大小写任意变化时都能正常工作。

```suggestion
function extractNsisMacroBody(source, macroName) {
  const lines = source.split('\n');
  const startMarker = `!macro ${macroName}`;
  const startMarkerLower = startMarker.toLowerCase();
  const startIdx = lines.findIndex((line) => {
    const normalizedLine = line.trimStart();
    const normalizedLower = normalizedLine.toLowerCase();
    return (
      normalizedLower.startsWith(startMarkerLower) &&
      (normalizedLine.length === startMarker.length || /\s/.test(normalizedLine[startMarker.length]))
    );
  });
```
</issue_to_address>

### Comment 2
<location path="scripts/ci/windows-installer-cleanup-script.test.mjs" line_range="35-42" />
<code_context>
+  return lines.findIndex((line) => pattern.test(line));
+}
+
+function parseNsisDefines(source) {
+  const defines = new Map();
+
+  for (const line of source.split('\n')) {
+    const trimmedLine = line.trim();
+    const match = trimmedLine.match(/^!define\s+(\S+)\s+(?:"([^"]+)"|'([^']+)'|(\S+))/);
+
+    if (trimmedLine.startsWith('!define ') && !match) {
+      assert.fail(`Expected NSIS define line to be parseable: ${trimmedLine}`);
+    }
</code_context>
<issue_to_address>
**issue:** 当前的 define 解析器在处理没有值的 `!define` 指令或更复杂的写法时会失败。

该正则只会解析带有非空值的 `!define` 行,并且对于任何其他形式的 `!define` 都会触发断言。NSIS 支持无值和更复杂形式的 define,因此今后对 `nsis-installer-hooks.nsh` 做出某些本来合法的修改,可能会导致这些测试开始失败。为避免这种情况,可以放宽断言逻辑:要么跳过那些不符合你所需的简单 `name + value` 形态的 `!define` 行,要么只对特定的 define(例如按名称)应用断言。
</issue_to_address>

Sourcery 对开源项目免费——如果你觉得这类评审有帮助,请考虑分享 ✨
帮我变得更有用!请在每条评论上点 👍 或 👎,我会根据反馈改进后续评审。
Original comment in English

Hey - I've found 2 issues

Prompt for AI Agents
Please address the comments from this code review:

## Individual Comments

### Comment 1
<location path="scripts/ci/windows-installer-cleanup-script.test.mjs" line_range="8-17" />
<code_context>
 const scriptPath = new URL('../../src-tauri/windows/kill-backend-processes.ps1', import.meta.url);
+const hookPath = new URL('../../src-tauri/windows/nsis-installer-hooks.nsh', import.meta.url);
+
+function extractNsisMacroBody(source, macroName) {
+  const lines = source.split('\n');
+  const startMarker = `!macro ${macroName}`;
+  const startIdx = lines.findIndex((line) => {
+    const normalizedLine = line.trimStart();
</code_context>
<issue_to_address>
**suggestion (bug_risk):** Macro start detection is case-sensitive while macro end detection is case-insensitive.

The end marker is matched with `toLowerCase().startsWith('!macroend')`, but the start marker uses a case-sensitive `!macro`. Since NSIS directives are typically case-insensitive, `!MACRO` or `!Macro` would be ignored while `!macroend` is still found. Please normalize the case for the start match as well so the helper works regardless of directive casing.

```suggestion
function extractNsisMacroBody(source, macroName) {
  const lines = source.split('\n');
  const startMarker = `!macro ${macroName}`;
  const startMarkerLower = startMarker.toLowerCase();
  const startIdx = lines.findIndex((line) => {
    const normalizedLine = line.trimStart();
    const normalizedLower = normalizedLine.toLowerCase();
    return (
      normalizedLower.startsWith(startMarkerLower) &&
      (normalizedLine.length === startMarker.length || /\s/.test(normalizedLine[startMarker.length]))
    );
  });
```
</issue_to_address>

### Comment 2
<location path="scripts/ci/windows-installer-cleanup-script.test.mjs" line_range="35-42" />
<code_context>
+  return lines.findIndex((line) => pattern.test(line));
+}
+
+function parseNsisDefines(source) {
+  const defines = new Map();
+
+  for (const line of source.split('\n')) {
+    const trimmedLine = line.trim();
+    const match = trimmedLine.match(/^!define\s+(\S+)\s+(?:"([^"]+)"|'([^']+)'|(\S+))/);
+
+    if (trimmedLine.startsWith('!define ') && !match) {
+      assert.fail(`Expected NSIS define line to be parseable: ${trimmedLine}`);
+    }
</code_context>
<issue_to_address>
**issue:** Current define parser will fail on value-less `!define` directives or more complex forms.

The regex only parses `!define` lines with a non-empty value and asserts on any other `!define`. NSIS supports valueless and more complex defines, so a future valid change to `nsis-installer-hooks.nsh` could start failing these tests. To avoid that, either relax the assertion to skip `!define` lines that don’t match the simple `name + value` shape you need, or restrict the assertion to specific defines (e.g., by name).
</issue_to_address>

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

Comment thread scripts/ci/windows-installer-cleanup-script.test.mjs Outdated
Comment thread scripts/ci/windows-installer-cleanup-script.test.mjs Outdated
@zouyonghe
Copy link
Copy Markdown
Member Author

@sourcery-ai review

Copy link
Copy Markdown

@sourcery-ai sourcery-ai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey - 我在这里给了一些整体性的反馈:

  • extractNsisMacroBody 中,建议让对 !macroend 的检测对行内注释或额外的标记更加健壮(例如 !macroend ; comment),这样以后对 NSIS 文件的修改就不会轻易把解析器弄坏。
  • parseNsisDefines 中的正则表达式假设 !define 的形式比较简单;如果你预计未来会出现多 token 或宏展开后的值,可能需要要么收紧对输入形态的预期(并将其文档化),要么在遇到不支持的形式时明确失败,这样测试会以更明显的方式报错。
给 AI Agent 的提示
Please address the comments from this code review:

## Overall Comments
-`extractNsisMacroBody` 中,建议让对 `!macroend` 的检测对行内注释或额外的标记更加健壮(例如 `!macroend ; comment`),这样以后对 NSIS 文件的修改就不会轻易把解析器弄坏。
- `parseNsisDefines` 中的正则表达式假设 `!define` 的形式比较简单;如果你预计未来会出现多 token 或宏展开后的值,可能需要要么收紧对输入形态的预期(并将其文档化),要么在遇到不支持的形式时明确失败,这样测试会以更明显的方式报错。

Sourcery 对开源项目是免费的——如果你觉得这些 review 有帮助,欢迎分享 ✨
帮我变得更有用!请在每条评论上点 👍 或 👎,我会根据你的反馈改进后续的 review。
Original comment in English

Hey - I've left some high level feedback:

  • In extractNsisMacroBody, consider making the !macroend detection robust against inline comments or additional tokens (e.g., !macroend ; comment) so future edits to the NSIS file don’t accidentally break the parser.
  • The regex in parseNsisDefines assumes a simple !define shape; if you expect multi-token or macro-expanded values in the future, it may be worth either tightening the expectations (and documenting them) or explicitly failing when encountering unsupported forms so the tests fail loudly.
Prompt for AI Agents
Please address the comments from this code review:

## Overall Comments
- In `extractNsisMacroBody`, consider making the `!macroend` detection robust against inline comments or additional tokens (e.g., `!macroend ; comment`) so future edits to the NSIS file don’t accidentally break the parser.
- The regex in `parseNsisDefines` assumes a simple `!define` shape; if you expect multi-token or macro-expanded values in the future, it may be worth either tightening the expectations (and documenting them) or explicitly failing when encountering unsupported forms so the tests fail loudly.

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

Copy link
Copy Markdown

@SourceryAI SourceryAI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey - 我已经审查了你的更改,看起来非常不错!


Hi @zouyonghe! 👋

感谢你通过评论 @sourcery-ai review 来试用 Sourcery!🚀

安装 sourcery-ai 机器人,即可在每个拉取请求上自动获得代码审查 ✨

帮我变得更有用!请在每条评论上点 👍 或 👎,我会根据你的反馈改进我的审查。
Original comment in English

Hey - I've reviewed your changes and they look great!


Hi @zouyonghe! 👋

Thanks for trying out Sourcery by commenting with @sourcery-ai review! 🚀

Install the sourcery-ai bot to get automatic code reviews on every pull request ✨

Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

@zouyonghe
Copy link
Copy Markdown
Member Author

@sourcery-ai review

Copy link
Copy Markdown

@sourcery-ai sourcery-ai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey - 我发现了 1 个问题

Prompt for AI Agents
Please address the comments from this code review:

## Individual Comments

### Comment 1
<location path="scripts/ci/windows-installer-cleanup-script.test.mjs" line_range="8" />
<code_context>
 const scriptPath = new URL('../../src-tauri/windows/kill-backend-processes.ps1', import.meta.url);
+const hookPath = new URL('../../src-tauri/windows/nsis-installer-hooks.nsh', import.meta.url);
+
+function extractNsisMacroBody(source, macroName) {
+  const lines = source.split('\n');
+  const startMarker = `!macro ${macroName}`;
</code_context>
<issue_to_address>
**issue (complexity):** 请考虑简化 NSIS 解析辅助函数和顺序断言,以减少分支、定制索引辅助方法,并让测试阅读起来更加线性。

在保持相同断言/行为的前提下,可以简化部分解析逻辑和索引计算。

### 1. 移除 `findMatchingLineIndex` 并避免索引来回切换

目前使用三个独立索引加一个辅助函数,会让测试更难快速理解。你可以用拼接后的字符串加 `indexOf` 来断言相对顺序,这依然很明确,但更简单一些:

```js
test('nsis installer hook looks for the install-root cleanup script before updater fallback', async () => {
  const source = await readFile(hookPath, 'utf8');
  const macroBody = extractNsisMacroBody(source, 'NSIS_RUN_BACKEND_CLEANUP');
  const bodyText = macroBody.join('\n');

  const primaryPattern = /StrCpy\s+\$1\s+"\$\{ASTRBOT_BACKEND_CLEANUP_SCRIPT_INSTALL_ROOT\}"/;
  const fileExistsPattern = /IfFileExists\s+"\$1"\s+\+2\s+0/;
  const fallbackPattern = /StrCpy\s+\$1\s+"\$\{ASTRBOT_BACKEND_CLEANUP_SCRIPT_UPDATER_FALLBACK\}"/;

  const primaryIdx = bodyText.search(primaryPattern);
  const fileExistsIdx = bodyText.search(fileExistsPattern);
  const fallbackIdx = bodyText.search(fallbackPattern);

  assert.ok(primaryIdx !== -1);
  assert.ok(fileExistsIdx !== -1);
  assert.ok(fallbackIdx !== -1);
  assert.ok(primaryIdx < fileExistsIdx && fileExistsIdx < fallbackIdx);

  assert.ok(/nsExec::ExecToLog/.test(bodyText));
});
```

这样可以完全去掉 `findMatchingLineIndex`,并让整体流程更像是“在这个宏文本中找到这三个元素并检查它们的顺序”,而不是构建一个迷你索引器。

### 2. 用一个针对性的正则来简化 `getNsisDefineValue`

你可以保留“简单字面值 / 无空格”的约束以及对引号的处理,但减少循环内部的分支。使用一个既强制简单值又能移除可选引号的正则,会更容易理解:

```js
function getNsisDefineValue(source, defineName) {
  const definePattern = new RegExp(
    `^!define\\s+${defineName}\\s+("([^"\\s]+)"|'([^'\\s]+)'|([^"'\n\\s]+))$`,
    'i'
  );

  for (const line of source.split('\n')) {
    const match = line.trim().match(definePattern);
    if (!match) continue;

    // one of groups 2, 3, or 4 contains the value, all of which exclude spaces
    const value = match[2] ?? match[3] ?? match[4];
    if (!value) {
      throw new Error(`Expected NSIS define ${defineName} to have a simple literal value`);
    }
    return value;
  }

  return undefined;
}
```

这样依然可以:

- 支持带引号和不带引号的值;
- 拒绝包含空格的值(由正则本身保证);
- 在语法不受支持时抛出相同的错误信息;
- 继续逐行扫描文件。

### 3.(可选)稍微收紧 `extractNsisMacroBody`

如果你不期待同一个宏被定义多次,可以在保留你显式测试的特性(大小写不敏感的 `!macro`、允许带注释的 `!macroend`)的同时,简化一些通用处理逻辑:

```js
function extractNsisMacroBody(source, macroName) {
  const lines = source.split('\n');
  const startPattern = new RegExp(`^\\s*!macro\\s+${macroName}(?:\\s|$)`, 'i');
  const endPattern = /^\s*!macroend\b/i;

  const startIdx = lines.findIndex(line => startPattern.test(line));
  assert.notEqual(startIdx, -1, `Expected NSIS macro ${macroName} to exist`);

  const endIdx = lines.findIndex((line, idx) => idx > startIdx && endPattern.test(line));
  assert.notEqual(endIdx, -1, `Expected end of NSIS macro ${macroName}`);

  return lines.slice(startIdx + 1, endIdx).map(line => line.trim());
}
```

这仍然保留了你正在断言的行为(大小写不敏感的 `!macro`,以及带注释的 `!macroend`),但读起来更直接:就是“找到起始行,找到结束行,返回中间的行”,不再需要额外的 lowercasing/长度检查。
</issue_to_address>

Sourcery 对开源项目免费使用——如果你喜欢我们的评审,请考虑分享 ✨
帮我变得更有用!请在每条评论上点击 👍 或 👎,我会利用你的反馈来改进之后的评审。
Original comment in English

Hey - I've found 1 issue

Prompt for AI Agents
Please address the comments from this code review:

## Individual Comments

### Comment 1
<location path="scripts/ci/windows-installer-cleanup-script.test.mjs" line_range="8" />
<code_context>
 const scriptPath = new URL('../../src-tauri/windows/kill-backend-processes.ps1', import.meta.url);
+const hookPath = new URL('../../src-tauri/windows/nsis-installer-hooks.nsh', import.meta.url);
+
+function extractNsisMacroBody(source, macroName) {
+  const lines = source.split('\n');
+  const startMarker = `!macro ${macroName}`;
</code_context>
<issue_to_address>
**issue (complexity):** Consider simplifying the NSIS parsing helpers and ordering assertions to reduce branching, custom index helpers, and make the tests read more linearly.

You can keep the same assertions/behavior while simplifying some of the parsing and index math.

### 1. Drop `findMatchingLineIndex` and avoid index juggling

The three separate indices plus a helper make the test harder to scan. You can assert the relative order with a joined string and `indexOf`, which is still explicit but simpler:

```js
test('nsis installer hook looks for the install-root cleanup script before updater fallback', async () => {
  const source = await readFile(hookPath, 'utf8');
  const macroBody = extractNsisMacroBody(source, 'NSIS_RUN_BACKEND_CLEANUP');
  const bodyText = macroBody.join('\n');

  const primaryPattern = /StrCpy\s+\$1\s+"\$\{ASTRBOT_BACKEND_CLEANUP_SCRIPT_INSTALL_ROOT\}"/;
  const fileExistsPattern = /IfFileExists\s+"\$1"\s+\+2\s+0/;
  const fallbackPattern = /StrCpy\s+\$1\s+"\$\{ASTRBOT_BACKEND_CLEANUP_SCRIPT_UPDATER_FALLBACK\}"/;

  const primaryIdx = bodyText.search(primaryPattern);
  const fileExistsIdx = bodyText.search(fileExistsPattern);
  const fallbackIdx = bodyText.search(fallbackPattern);

  assert.ok(primaryIdx !== -1);
  assert.ok(fileExistsIdx !== -1);
  assert.ok(fallbackIdx !== -1);
  assert.ok(primaryIdx < fileExistsIdx && fileExistsIdx < fallbackIdx);

  assert.ok(/nsExec::ExecToLog/.test(bodyText));
});
```

This removes `findMatchingLineIndex` entirely and makes the flow read more like “find these three things in this macro text and check their order” instead of building a mini indexer.

### 2. Simplify `getNsisDefineValue` with a single targeted regex

You can keep the “simple literal value / no spaces” constraint and quote handling but reduce branching inside the loop. A single regex that enforces a simple value and then strips optional quotes is easier to follow:

```js
function getNsisDefineValue(source, defineName) {
  const definePattern = new RegExp(
    `^!define\\s+${defineName}\\s+("([^"\\s]+)"|'([^'\\s]+)'|([^"'\n\\s]+))$`,
    'i'
  );

  for (const line of source.split('\n')) {
    const match = line.trim().match(definePattern);
    if (!match) continue;

    // one of groups 2, 3, or 4 contains the value, all of which exclude spaces
    const value = match[2] ?? match[3] ?? match[4];
    if (!value) {
      throw new Error(`Expected NSIS define ${defineName} to have a simple literal value`);
    }
    return value;
  }

  return undefined;
}
```

This still:

- Supports quoted and unquoted values.
- Rejects values with spaces (by construction of the regex).
- Throws the same error message when the syntax is unsupported.
- Continues to scan the file line-by-line.

### 3. (Optional) Narrow `extractNsisMacroBody` slightly

If you don’t expect multiple definitions of the same macro, you can avoid some of the generic handling while keeping the case-insensitivity and `!macroend` comment tolerance you’re explicitly testing:

```js
function extractNsisMacroBody(source, macroName) {
  const lines = source.split('\n');
  const startPattern = new RegExp(`^\\s*!macro\\s+${macroName}(?:\\s|$)`, 'i');
  const endPattern = /^\s*!macroend\b/i;

  const startIdx = lines.findIndex(line => startPattern.test(line));
  assert.notEqual(startIdx, -1, `Expected NSIS macro ${macroName} to exist`);

  const endIdx = lines.findIndex((line, idx) => idx > startIdx && endPattern.test(line));
  assert.notEqual(endIdx, -1, `Expected end of NSIS macro ${macroName}`);

  return lines.slice(startIdx + 1, endIdx).map(line => line.trim());
}
```

This keeps the behavior you’re asserting (case-insensitive `!macro`, `!macroend` with comments) but reads a bit more directly as “find start line, find end line, return inner lines” without extra lowercasing/length checks.
</issue_to_address>

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

Comment thread scripts/ci/windows-installer-cleanup-script.test.mjs
@zouyonghe
Copy link
Copy Markdown
Member Author

@sourcery-ai review

Copy link
Copy Markdown

@SourceryAI SourceryAI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey - 我已经查看了你的更改,一切看起来都很棒!


Hi @zouyonghe! 👋

感谢你通过评论 @sourcery-ai review 来试用 Sourcery!🚀

安装 sourcery-ai 机器人,即可在每个 pull request 上获得自动代码审查 ✨

帮我变得更有用吧!请在每条评论上点击 👍 或 👎,我会根据你的反馈来改进我的审查质量。
Original comment in English

Hey - I've reviewed your changes and they look great!


Hi @zouyonghe! 👋

Thanks for trying out Sourcery by commenting with @sourcery-ai review! 🚀

Install the sourcery-ai bot to get automatic code reviews on every pull request ✨

Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

@zouyonghe zouyonghe merged commit 27b898c into AstrBotDevs:main Mar 11, 2026
4 checks passed
Copy link
Copy Markdown

@sourcery-ai sourcery-ai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey - 我已经查看了你的修改,看起来非常不错!


Sourcery 对开源项目是免费的——如果你喜欢我们的审查结果,欢迎帮忙分享 ✨
帮我变得更有用!请在每条评论上点选 👍 或 👎,我会根据你的反馈来改进之后的审查。
Original comment in English

Hey - I've reviewed your changes and they look great!


Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

Copy link
Copy Markdown

@SourceryAI SourceryAI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey - 我发现了 1 个问题

Prompt for AI Agents
Please address the comments from this code review:

## Individual Comments

### Comment 1
<location path="scripts/ci/windows-installer-cleanup-script.test.mjs" line_range="8" />
<code_context>
 const scriptPath = new URL('../../src-tauri/windows/kill-backend-processes.ps1', import.meta.url);
+const hookPath = new URL('../../src-tauri/windows/nsis-installer-hooks.nsh', import.meta.url);
+
+function extractNsisMacroBody(source, macroName) {
+  const lines = source.split('\n');
+  const startPattern = new RegExp(`^\\s*!macro\\s+${macroName}(?:\\s|$)`, 'i');
</code_context>
<issue_to_address>
**issue (complexity):** 建议重构这两个 NSIS 辅助函数,让每个函数都只使用一个有良好文档说明的正则,而不是采用多步扫描和多个模式。

你可以保留当前全部行为,同时通过让每个辅助函数只使用一个明确、有注释的正则,来简化实现,并避免“双索引 / 双正则”两次遍历。

### 1. 简化 `extractNsisMacroBody`

你不需要手动拆分并搜索两次;对于这些测试,一个非贪婪的宏体捕获就足够了:

```js
function extractNsisMacroBody(source, macroName) {
  const macroPattern = new RegExp(
    String.raw`\b!macro\s+${macroName}\b([\s\S]*?)^\s*!macroend\b`,
    'im'
  );

  const match = source.match(macroPattern);
  assert.ok(match, `Expected NSIS macro ${macroName} to exist`);

  return match[1]
    .split('\n')
    .map((line) => line.trim())
    .filter((line) => line.length > 0); // keep if you want to ignore blank lines
}
```

这样可以保留:
- 通过 `i` 实现对 `!macro` / `!macroend` 的大小写不敏感匹配。
- 通过 `[\s\S]*?``m` 支持多行宏体。
- “宏必须存在”的断言。

### 2. 简化 `getNsisDefineValue`

你可以把原来的两个模式合并成一个,既负责找到对应的 define,又同时保证其值是“简单字面量”;然后根据是否捕获到值来决定是否抛出异常:

```js
function getNsisDefineValue(source, defineName) {
  const definePattern = new RegExp(
    String.raw`^\s*!define\s+${defineName}` +
      String.raw`\s*(?:"([^"\s]+)"|'([^'\s]+)'|([^"' \t\r\n]+))?\s*$`,
    'i'
  );

  for (const line of source.split('\n')) {
    const trimmed = line.trim();
    const match = trimmed.match(definePattern);
    if (!match) continue;

    const value = match[1] ?? match[2] ?? match[3];
    if (!value) {
      throw new Error(
        `Expected NSIS define ${defineName} to have a simple literal value`
      );
    }
    return value;
  }

  return undefined;
}
```

这样可以保留:

- 每个辅助函数只使用 **一个** 正则。
- 对目标 define 的检测(大小写不敏感)。
- 支持双引号、单引号或不带引号的字面量。
- 当匹配到的 `!define` 不具有简单字面量值(例如有额外标记)时,清晰的报错路径。
</issue_to_address>

Hi @zouyonghe! 👋

感谢你通过评论 @sourcery-ai review 来试用 Sourcery!🚀

安装 sourcery-ai bot 以在每个 Pull Request 上自动获得代码审查 ✨

帮我变得更有用!请在每条评论上点击 👍 或 👎,我会根据你的反馈改进后续的审查。
Original comment in English

Hey - I've found 1 issue

Prompt for AI Agents
Please address the comments from this code review:

## Individual Comments

### Comment 1
<location path="scripts/ci/windows-installer-cleanup-script.test.mjs" line_range="8" />
<code_context>
 const scriptPath = new URL('../../src-tauri/windows/kill-backend-processes.ps1', import.meta.url);
+const hookPath = new URL('../../src-tauri/windows/nsis-installer-hooks.nsh', import.meta.url);
+
+function extractNsisMacroBody(source, macroName) {
+  const lines = source.split('\n');
+  const startPattern = new RegExp(`^\\s*!macro\\s+${macroName}(?:\\s|$)`, 'i');
</code_context>
<issue_to_address>
**issue (complexity):** Consider refactoring both NSIS helper functions to use a single, well-documented regex each instead of multi-step scanning and multiple patterns.

You can keep all current behavior while simplifying both helpers to use a single, clearly documented regex each and avoid the double‑index / double‑regex passes.

### 1. Simplify `extractNsisMacroBody`

You don’t need to manually split and search twice; a single non‑greedy macro‑body capture is enough for these tests:

```js
function extractNsisMacroBody(source, macroName) {
  const macroPattern = new RegExp(
    String.raw`\b!macro\s+${macroName}\b([\s\S]*?)^\s*!macroend\b`,
    'im'
  );

  const match = source.match(macroPattern);
  assert.ok(match, `Expected NSIS macro ${macroName} to exist`);

  return match[1]
    .split('\n')
    .map((line) => line.trim())
    .filter((line) => line.length > 0); // keep if you want to ignore blank lines
}
```

This preserves:
- Case‑insensitive `!macro` / `!macroend` via `i`.
- Multi‑line bodies via `[\s\S]*?` and `m`.
- The “macro must exist” assertion.

### 2. Simplify `getNsisDefineValue`

You can collapse the two patterns into one that both finds the define and enforces the “simple literal value” constraint, then use the presence/absence of a captured value to decide whether to throw:

```js
function getNsisDefineValue(source, defineName) {
  const definePattern = new RegExp(
    String.raw`^\s*!define\s+${defineName}` +
      String.raw`\s*(?:"([^"\s]+)"|'([^'\s]+)'|([^"' \t\r\n]+))?\s*$`,
    'i'
  );

  for (const line of source.split('\n')) {
    const trimmed = line.trim();
    const match = trimmed.match(definePattern);
    if (!match) continue;

    const value = match[1] ?? match[2] ?? match[3];
    if (!value) {
      throw new Error(
        `Expected NSIS define ${defineName} to have a simple literal value`
      );
    }
    return value;
  }

  return undefined;
}
```

This keeps:

- Only a **single** regex per helper.
- Detection of the target define (case‑insensitive).
- Support for double‑quoted, single‑quoted, or bare literals.
- The clear error path when a matching `!define` doesn’t have a simple literal value (e.g. extra tokens).
</issue_to_address>

Hi @zouyonghe! 👋

Thanks for trying out Sourcery by commenting with @sourcery-ai review! 🚀

Install the sourcery-ai bot to get automatic code reviews on every pull request ✨

Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

const scriptPath = new URL('../../src-tauri/windows/kill-backend-processes.ps1', import.meta.url);
const hookPath = new URL('../../src-tauri/windows/nsis-installer-hooks.nsh', import.meta.url);

function extractNsisMacroBody(source, macroName) {
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

issue (complexity): 建议重构这两个 NSIS 辅助函数,让每个函数都只使用一个有良好文档说明的正则,而不是采用多步扫描和多个模式。

你可以保留当前全部行为,同时通过让每个辅助函数只使用一个明确、有注释的正则,来简化实现,并避免“双索引 / 双正则”两次遍历。

1. 简化 extractNsisMacroBody

你不需要手动拆分并搜索两次;对于这些测试,一个非贪婪的宏体捕获就足够了:

function extractNsisMacroBody(source, macroName) {
  const macroPattern = new RegExp(
    String.raw`\b!macro\s+${macroName}\b([\s\S]*?)^\s*!macroend\b`,
    'im'
  );

  const match = source.match(macroPattern);
  assert.ok(match, `Expected NSIS macro ${macroName} to exist`);

  return match[1]
    .split('\n')
    .map((line) => line.trim())
    .filter((line) => line.length > 0); // keep if you want to ignore blank lines
}

这样可以保留:

  • 通过 i 实现对 !macro / !macroend 的大小写不敏感匹配。
  • 通过 [\s\S]*?m 支持多行宏体。
  • “宏必须存在”的断言。

2. 简化 getNsisDefineValue

你可以把原来的两个模式合并成一个,既负责找到对应的 define,又同时保证其值是“简单字面量”;然后根据是否捕获到值来决定是否抛出异常:

function getNsisDefineValue(source, defineName) {
  const definePattern = new RegExp(
    String.raw`^\s*!define\s+${defineName}` +
      String.raw`\s*(?:"([^"\s]+)"|'([^'\s]+)'|([^"' \t\r\n]+))?\s*$`,
    'i'
  );

  for (const line of source.split('\n')) {
    const trimmed = line.trim();
    const match = trimmed.match(definePattern);
    if (!match) continue;

    const value = match[1] ?? match[2] ?? match[3];
    if (!value) {
      throw new Error(
        `Expected NSIS define ${defineName} to have a simple literal value`
      );
    }
    return value;
  }

  return undefined;
}

这样可以保留:

  • 每个辅助函数只使用 一个 正则。
  • 对目标 define 的检测(大小写不敏感)。
  • 支持双引号、单引号或不带引号的字面量。
  • 当匹配到的 !define 不具有简单字面量值(例如有额外标记)时,清晰的报错路径。
Original comment in English

issue (complexity): Consider refactoring both NSIS helper functions to use a single, well-documented regex each instead of multi-step scanning and multiple patterns.

You can keep all current behavior while simplifying both helpers to use a single, clearly documented regex each and avoid the double‑index / double‑regex passes.

1. Simplify extractNsisMacroBody

You don’t need to manually split and search twice; a single non‑greedy macro‑body capture is enough for these tests:

function extractNsisMacroBody(source, macroName) {
  const macroPattern = new RegExp(
    String.raw`\b!macro\s+${macroName}\b([\s\S]*?)^\s*!macroend\b`,
    'im'
  );

  const match = source.match(macroPattern);
  assert.ok(match, `Expected NSIS macro ${macroName} to exist`);

  return match[1]
    .split('\n')
    .map((line) => line.trim())
    .filter((line) => line.length > 0); // keep if you want to ignore blank lines
}

This preserves:

  • Case‑insensitive !macro / !macroend via i.
  • Multi‑line bodies via [\s\S]*? and m.
  • The “macro must exist” assertion.

2. Simplify getNsisDefineValue

You can collapse the two patterns into one that both finds the define and enforces the “simple literal value” constraint, then use the presence/absence of a captured value to decide whether to throw:

function getNsisDefineValue(source, defineName) {
  const definePattern = new RegExp(
    String.raw`^\s*!define\s+${defineName}` +
      String.raw`\s*(?:"([^"\s]+)"|'([^'\s]+)'|([^"' \t\r\n]+))?\s*$`,
    'i'
  );

  for (const line of source.split('\n')) {
    const trimmed = line.trim();
    const match = trimmed.match(definePattern);
    if (!match) continue;

    const value = match[1] ?? match[2] ?? match[3];
    if (!value) {
      throw new Error(
        `Expected NSIS define ${defineName} to have a simple literal value`
      );
    }
    return value;
  }

  return undefined;
}

This keeps:

  • Only a single regex per helper.
  • Detection of the target define (case‑insensitive).
  • Support for double‑quoted, single‑quoted, or bare literals.
  • The clear error path when a matching !define doesn’t have a simple literal value (e.g. extra tokens).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants