92 lines
2.6 KiB
PowerShell
92 lines
2.6 KiB
PowerShell
param(
|
|
[switch]$StartMaui = $false,
|
|
[switch]$Force = $false
|
|
)
|
|
|
|
$ErrorActionPreference = "Stop"
|
|
|
|
Write-Host "====================================" -ForegroundColor Cyan
|
|
Write-Host " TodoList 服务重启脚本" -ForegroundColor Cyan
|
|
Write-Host "====================================" -ForegroundColor Cyan
|
|
Write-Host ""
|
|
|
|
Write-Host "[1/3] 停止现有服务..." -ForegroundColor Yellow
|
|
|
|
$stopScriptPath = Join-Path $PSScriptRoot "stop-service.ps1"
|
|
|
|
if (!(Test-Path $stopScriptPath)) {
|
|
Write-Host "❌ 停止脚本不存在: $stopScriptPath" -ForegroundColor Red
|
|
exit 1
|
|
}
|
|
|
|
try {
|
|
if ($Force) {
|
|
& $stopScriptPath -Force
|
|
} else {
|
|
& $stopScriptPath
|
|
}
|
|
Write-Host "✅ 服务已停止" -ForegroundColor Green
|
|
} catch {
|
|
Write-Host "❌ 停止服务失败: $_" -ForegroundColor Red
|
|
exit 1
|
|
}
|
|
|
|
Write-Host ""
|
|
Write-Host "[2/3] 等待进程完全关闭..." -ForegroundColor Yellow
|
|
|
|
$timeout = 10
|
|
$elapsed = 0
|
|
|
|
while ($elapsed -lt $timeout) {
|
|
$apiRunning = Get-Process -Name "dotnet" -ErrorAction SilentlyContinue | Where-Object { $_.MainWindowTitle -like "*TodoList.Api*" }
|
|
$mauiRunning = Get-Process -Name "TodoList.Maui" -ErrorAction SilentlyContinue
|
|
|
|
if (-not $apiRunning -and -not $mauiRunning) {
|
|
Write-Host "✅ 所有进程已关闭" -ForegroundColor Green
|
|
break
|
|
}
|
|
|
|
Start-Sleep -Seconds 1
|
|
$elapsed++
|
|
|
|
if ($elapsed -lt $timeout) {
|
|
Write-Host " 等待中... ($elapsed/$timeout 秒)" -ForegroundColor Gray
|
|
}
|
|
}
|
|
|
|
if ($elapsed -ge $timeout) {
|
|
Write-Host "⚠️ 等待超时,继续启动..." -ForegroundColor Yellow
|
|
}
|
|
|
|
Write-Host ""
|
|
Write-Host "[3/3] 启动服务..." -ForegroundColor Yellow
|
|
|
|
$startScriptPath = Join-Path $PSScriptRoot "start-service.ps1"
|
|
|
|
if (!(Test-Path $startScriptPath)) {
|
|
Write-Host "❌ 启动脚本不存在: $startScriptPath" -ForegroundColor Red
|
|
exit 1
|
|
}
|
|
|
|
try {
|
|
if ($StartMaui) {
|
|
& $startScriptPath -StartMaui
|
|
} else {
|
|
& $startScriptPath
|
|
}
|
|
Write-Host "✅ 服务已启动" -ForegroundColor Green
|
|
} catch {
|
|
Write-Host "❌ 启动服务失败: $_" -ForegroundColor Red
|
|
exit 1
|
|
}
|
|
|
|
Write-Host ""
|
|
Write-Host "====================================" -ForegroundColor Cyan
|
|
Write-Host " 重启完成" -ForegroundColor Green
|
|
Write-Host "====================================" -ForegroundColor Cyan
|
|
Write-Host ""
|
|
Write-Host "💡 提示:" -ForegroundColor Yellow
|
|
Write-Host " - 按 Ctrl+C 可以停止服务" -ForegroundColor Gray
|
|
Write-Host " - 运行 stop-service.bat 可以关闭服务" -ForegroundColor Gray
|
|
Write-Host " - 运行 restart-service.bat 可以重启服务" -ForegroundColor Gray
|
|
Write-Host "" |