# instalar-windows.ps1 — Espejo Fidel Drive en un PC/servidor Windows.
# Correr en PowerShell COMO ADMINISTRADOR desde la carpeta descomprimida:
#   powershell -ExecutionPolicy Bypass -File .\instalacion\instalar-windows.ps1
# Instala en %ProgramData%\FidelEspejo, corre el asistente de conexión y
# registra una TAREA PROGRAMADA que arranca el espejo con el sistema
# (sin sesión iniciada: corre como SYSTEM).
$ErrorActionPreference = "Stop"

$esAdmin = ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()
  ).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
if (-not $esAdmin) { Write-Error "Correr como administrador."; exit 1 }

$origen = Split-Path -Parent (Split-Path -Parent $MyInvocation.MyCommand.Path)
$destino = Join-Path $env:ProgramData "FidelEspejo"
$exe = Join-Path $destino "FidelEspejo.exe"

Write-Host "== Instalando Espejo Fidel Drive en $destino =="
New-Item -ItemType Directory -Force -Path $destino | Out-Null
Copy-Item (Join-Path $origen "*") $destino -Recurse -Force -Exclude "instalacion"

# La tarea corre como SYSTEM: el config debe vivir en una ruta fija que
# SYSTEM también lea (no en el perfil del usuario que instala).
$config = Join-Path $destino "config.json"

Write-Host "== Conexión (los datos se piden una sola vez) =="
& $exe conectar --config $config
if ($LASTEXITCODE -ne 0) { Write-Error "La conexión no se completó."; exit 1 }

$nombreTarea = "Espejo Fidel Drive"
Unregister-ScheduledTask -TaskName $nombreTarea -Confirm:$false -ErrorAction SilentlyContinue
$accion = New-ScheduledTaskAction -Execute $exe -Argument "ejecutar --config `"$config`""
$disparo = New-ScheduledTaskTrigger -AtStartup
$principal = New-ScheduledTaskPrincipal -UserId "SYSTEM" -LogonType ServiceAccount -RunLevel Highest
$opciones = New-ScheduledTaskSettingsSet -RestartCount 999 -RestartInterval (New-TimeSpan -Minutes 5) `
  -ExecutionTimeLimit (New-TimeSpan -Days 0) -StartWhenAvailable
Register-ScheduledTask -TaskName $nombreTarea -Action $accion -Trigger $disparo `
  -Principal $principal -Settings $opciones | Out-Null
Start-ScheduledTask -TaskName $nombreTarea

Write-Host ""
Write-Host "== Listo. El espejo corre como tarea programada '$nombreTarea' =="
Write-Host "   Estado del respaldo:  & '$exe' estado --config '$config'"
Write-Host "   El log legible vive en '<carpeta destino>\_Espejo Fidel Drive\espejo.log'"
