El servicio de Windows pasa a administrarse con NSSM (decisión del usuario: WinSW no se consideró lo bastante estable). - instalar-servicio.ps1: recibe -Nssm (ruta de nssm.exe) y configura el servicio con `nssm install` / `nssm set` (arranque automático, reinicio a los 10 s, logs a logs\ rotados a los 10 MB). Nueva opción -SoloMostrar que imprime los comandos sin ejecutarlos ni exigir administrador. Si un ajuste falla, quita el servicio a medio configurar. - desinstalar-servicio.ps1: usa `nssm stop` y `nssm remove`. - Se elimina la plantilla XML de WinSW. - DEPLOY.md: pasos con NSSM, sección para administrar el servicio, aviso de usar la compilación 2.24-101 en Windows 10/11 y Server 2019/2022 (la 2.24 estable puede no arrancar), y limpieza de logs rotados (NSSM no limita cuántos conserva). Ya no se requiere .NET Framework. - CLAUDE.md y README de la API actualizados. Sin probar aún en Windows: solo se comprobó la sintaxis y los comandos generados (-SoloMostrar). Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
30 lines
1.2 KiB
PowerShell
30 lines
1.2 KiB
PowerShell
<#
|
|
.SYNOPSIS
|
|
Detiene y elimina el servicio de Windows. No borra los archivos ni los logs.
|
|
#>
|
|
[CmdletBinding()]
|
|
param([string]$NombreServicio = 'DevolucionProveedores')
|
|
|
|
$ErrorActionPreference = 'Stop'
|
|
|
|
$esAdmin = ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
|
|
if (-not $esAdmin) { Write-Host 'ERROR: Ejecute este script en una consola de PowerShell como administrador.' -ForegroundColor Red; exit 1 }
|
|
|
|
if (-not (Get-Service -Name $NombreServicio -ErrorAction SilentlyContinue)) {
|
|
Write-Host "El servicio '$NombreServicio' no existe."
|
|
exit 0
|
|
}
|
|
|
|
$nssm = Join-Path $PSScriptRoot 'servicio\nssm.exe'
|
|
if (Test-Path $nssm) {
|
|
& $nssm stop $NombreServicio | Out-Null # si ya estaba detenido, no es un error
|
|
& $nssm remove $NombreServicio confirm | Out-Null
|
|
} else {
|
|
Write-Host "No se encontró $nssm; se usa sc.exe."
|
|
& sc.exe stop $NombreServicio | Out-Null
|
|
& sc.exe delete $NombreServicio | Out-Null
|
|
}
|
|
if ($LASTEXITCODE -ne 0) { Write-Host "ERROR: no se pudo eliminar el servicio '$NombreServicio'." -ForegroundColor Red; exit 1 }
|
|
|
|
Write-Host "Servicio '$NombreServicio' eliminado. Los archivos y los logs siguen en $PSScriptRoot."
|