fix(deploy): 看门狗改由用户会话任务启动 Docker Desktop
以 SYSTEM 身份直接 Start-Process Docker Desktop.exe 会命中 WSL_E_LOCAL_SYSTEM_NOT_SUPPORTED,把 docker-desktop 发行版搞成僵死状态(VHD 已挂载无法终止),导致登录用户自己也起不来。改为触发以登录用户身份运行的 FruitShorts-DockerDesktop 计划任务(先停再起,规避 IgnoreNew)。
This commit is contained in:
1 parent
aa5954ef6a
commit
26102332ac
1 file changed
+18
-4
+18
-4
@@ -101,11 +101,25 @@ if (-not $FeishuWebhook) {
|
||||
}
|
||||
|
||||
# Docker Desktop 登录后偶尔尚未就绪,先等待并尝试拉起。
|
||||
# 注意:本脚本以 SYSTEM 身份运行,绝不能直接 Start-Process Docker Desktop.exe。
|
||||
# WSL 不支持本地系统账户运行(WSL_E_LOCAL_SYSTEM_NOT_SUPPORTED),
|
||||
# 以 SYSTEM 启动会把 docker-desktop 发行版搞成僵死状态(VHD 已挂载无法终止),
|
||||
# 结果是登录用户会话里的 Docker Desktop 也永远起不来。
|
||||
# 因此改为触发以登录用户身份运行的 FruitShorts-DockerDesktop 计划任务。
|
||||
if (-not (Test-Docker)) {
|
||||
Write-Log "Docker 未就绪,尝试启动 Docker Desktop"
|
||||
$dockerExe = "C:\Program Files\Docker\Docker\Docker Desktop.exe"
|
||||
if (Test-Path $dockerExe) {
|
||||
Start-Process -FilePath $dockerExe
|
||||
Write-Log "Docker 未就绪,尝试通过用户会话启动 Docker Desktop"
|
||||
$desktopTask = "FruitShorts-DockerDesktop"
|
||||
try {
|
||||
# Docker Desktop.exe 是任务进程树的一部分,GUI 活着时任务一直是 Running,
|
||||
# 直接 Start-ScheduledTask 会被 IgnoreNew 忽略,所以先结束旧实例再拉起。
|
||||
$t = Get-ScheduledTask -TaskName $desktopTask -ErrorAction Stop
|
||||
if ($t.State -eq "Running") {
|
||||
Stop-ScheduledTask -TaskName $desktopTask -ErrorAction SilentlyContinue
|
||||
Start-Sleep -Seconds 5
|
||||
}
|
||||
Start-ScheduledTask -TaskName $desktopTask -ErrorAction Stop
|
||||
} catch {
|
||||
Write-Log "触发 Docker Desktop 启动任务失败: $_"
|
||||
}
|
||||
|
||||
for ($i = 0; $i -lt 18; $i++) {
|
||||
|
||||
Reference in new issue
Block a user