Fix : Deploy bug 2
This commit is contained in:
@@ -7,8 +7,10 @@
|
||||
non comme service Windows : un service tourne en session 0 et ne verrait ni la
|
||||
fenêtre du navigateur, ni OBS.
|
||||
|
||||
Réexécuter le script met à jour le binaire sans toucher à l'identité d'un agent
|
||||
déjà enrôlé.
|
||||
Réexécuter le script met à jour le binaire et applique les options fournies.
|
||||
L'identité de l'agent (jeton permanent, agentId) est préservée : sans cela il
|
||||
réapparaîtrait en double dans le dashboard. Utiliser -ResetIdentity pour forcer
|
||||
un réenrôlement.
|
||||
|
||||
.EXAMPLE
|
||||
& ([scriptblock]::Create((irm 'https://git.jeanbonapp.com/api/packages/jeanbon/generic/stream-control-agent/latest/install-agent.ps1'))) `
|
||||
@@ -31,7 +33,11 @@ param(
|
||||
[string] $ObsPassword = '',
|
||||
[string] $InstallDir = 'C:\stream-control-agent',
|
||||
[string] $RunAsUser = "$env:USERDOMAIN\$env:USERNAME",
|
||||
[string] $TaskName = 'StreamControlAgent'
|
||||
[string] $TaskName = 'StreamControlAgent',
|
||||
# Réenrôle avec le -Token fourni : efface l'identité existante, ce qui crée un
|
||||
# nouvel agent dans le dashboard. Sans ce commutateur, -Token est ignoré sur
|
||||
# une mise à jour.
|
||||
[switch] $ResetIdentity
|
||||
)
|
||||
|
||||
$ErrorActionPreference = 'Stop'
|
||||
@@ -112,9 +118,37 @@ Move-Item -Force $tmp (Join-Path $InstallDir 'agent.cjs')
|
||||
|
||||
# --- Configuration ----------------------------------------------------------
|
||||
if ($isUpgrade) {
|
||||
# Un agent déjà enrôlé détient un jeton permanent : l'écraser le ferait
|
||||
# réapparaître comme un second agent dans le dashboard.
|
||||
Info 'Configuration existante conservée (identité de l''agent préservée)'
|
||||
# Fusion, et non conservation en bloc : l'identité (jeton, agentId) est
|
||||
# préservée — l'écraser ferait réapparaître l'agent en double dans le
|
||||
# dashboard — mais toute option explicitement passée doit s'appliquer.
|
||||
# $PSBoundParameters distingue « fourni » de « laissé au défaut ».
|
||||
$raw = (Get-Content $configFile -Raw) -replace "^\uFEFF", ''
|
||||
$current = $raw | ConvertFrom-Json
|
||||
if (-not $current.obs) {
|
||||
$current | Add-Member -NotePropertyName obs -NotePropertyValue ([pscustomobject]@{}) -Force
|
||||
}
|
||||
$applied = @()
|
||||
|
||||
if ($PSBoundParameters.ContainsKey('Server')) { $current.serverUrl = $Server; $applied += 'serverUrl' }
|
||||
if ($PSBoundParameters.ContainsKey('Name')) { $current.name = $Name; $applied += 'name' }
|
||||
if ($PSBoundParameters.ContainsKey('ObsHost')) { $current.obs.host = $ObsHost; $applied += 'obs.host' }
|
||||
if ($PSBoundParameters.ContainsKey('ObsPort')) { $current.obs.port = $ObsPort; $applied += 'obs.port' }
|
||||
if ($PSBoundParameters.ContainsKey('ObsPassword')) { $current.obs.password = $ObsPassword; $applied += 'obs.password' }
|
||||
|
||||
if ($ResetIdentity -and $Token) {
|
||||
$current.token = $Token
|
||||
$current.PSObject.Properties.Remove('agentId')
|
||||
$applied += 'identité réinitialisée'
|
||||
} elseif ($Token -and $Token -ne $current.token) {
|
||||
Write-Host ' (-Token ignoré : identité conservée. Utilise -ResetIdentity pour forcer.)'
|
||||
}
|
||||
|
||||
$json = $current | ConvertTo-Json -Depth 5
|
||||
[System.IO.File]::WriteAllText($configFile, $json, (New-Object System.Text.UTF8Encoding($false)))
|
||||
|
||||
Write-Host $(if ($applied.Count) { " champs mis à jour : $($applied -join ', ')" }
|
||||
else { ' aucun changement demandé' })
|
||||
Info 'Configuration mise à jour, identité de l''agent préservée'
|
||||
} else {
|
||||
$config = [ordered]@{
|
||||
serverUrl = $Server
|
||||
|
||||
Reference in New Issue
Block a user