Files

44 lines
2.9 KiB
PowerShell
Raw Permalink Normal View History

2026-10-20 08:34:12 +08:00
[CmdletBinding()]
param([switch]$RestartRunningServices)
$ErrorActionPreference='Stop'
if(-not $RestartRunningServices){throw '此步骤会短暂停止PXHJ采集并刷新融合总控。需明确确认后使用 -RestartRunningServices。'}
$projectRoot=[IO.Path]::GetFullPath((Join-Path $PSScriptRoot '..'))
$pxhjRoot='E:\pxhj'
$coordinatorRoot=Join-Path $projectRoot 'runtime/coordinator'
$sourcePxhj=Join-Path $projectRoot 'runtime/console-pxhj-build/pxhj-server-0.1.0.jar'
$targetPxhj=Join-Path $pxhjRoot 'backend/target/pxhj-server-0.1.0.jar'
$sourceXtrh=Join-Path $projectRoot 'target/xtrh-services-1.0.0.jar'
foreach($file in @($sourcePxhj,$sourceXtrh)){if(-not(Test-Path -LiteralPath $file)){throw '缺少已验证构建产物。'}}
$listeners=@(Get-NetTCPConnection -State Listen -LocalPort 8088 -ErrorAction SilentlyContinue)
$backendPid=0
$backendTicks=0
if($listeners.Count){
$backendPid=[int]$listeners[0].OwningProcess
$process=Get-Process -Id $backendPid
$backendTicks=$process.StartTime.ToUniversalTime().Ticks
$command=Get-CimInstance Win32_Process -Filter ('ProcessId='+$backendPid)
$jar=[regex]::Match([string]$command.CommandLine,'(?i)-jar\s+(?:"(?<p>[^"]+)"|(?<p>\S+))').Groups['p'].Value
if([IO.Path]::GetFullPath($jar) -ne [IO.Path]::GetFullPath($targetPxhj)){throw '8088不是目标PXHJ进程,未停止任何程序。'}
}
$backup=Join-Path $projectRoot ('runtime/console-activation-backup-'+(Get-Date -Format 'yyyyMMdd-HHmmss'))
New-Item -ItemType Directory -Force -Path $backup | Out-Null
Copy-Item -LiteralPath $targetPxhj -Destination (Join-Path $backup 'pxhj-server.jar')
Copy-Item -LiteralPath (Join-Path $coordinatorRoot 'xtrh-services.jar') -Destination (Join-Path $backup 'xtrh-services.jar')
if($backendPid){
$current=Get-Process -Id $backendPid -ErrorAction Stop
if($current.StartTime.ToUniversalTime().Ticks -ne $backendTicks){throw 'PXHJ进程身份已变化,未停止。'}
Stop-Process -Id $backendPid
Wait-Process -Id $backendPid -Timeout 15 -ErrorAction SilentlyContinue
}
& (Join-Path $projectRoot 'scripts/Stop-Xtrh.ps1') -InstallRoot $coordinatorRoot
Copy-Item -LiteralPath $sourcePxhj -Destination $targetPxhj
Copy-Item -LiteralPath $sourceXtrh -Destination (Join-Path $coordinatorRoot 'xtrh-services.jar')
foreach($pair in @(@{source=$sourcePxhj;target=$targetPxhj},@{source=$sourceXtrh;target=(Join-Path $coordinatorRoot 'xtrh-services.jar')})){
if((Get-FileHash -LiteralPath $pair.source).Hash -ne (Get-FileHash -LiteralPath $pair.target).Hash){throw '加载前JAR校验失败。'}
}
$env:JAVA_HOME='C:\Program Files\Java\jdk-25.0.2'
$env:PATH=$env:JAVA_HOME+'\bin;'+$env:PATH
& (Join-Path $projectRoot 'scripts/Start-Xtrh.ps1') -InstallRoot $coordinatorRoot -JavaHome $env:JAVA_HOME
& (Join-Path $pxhjRoot 'scripts/start-dev.ps1') -SkipBuild -BackendOnly
Write-Output ('新页面和真实采集桥接已加载;原包备份:'+$backup)