Initial commit: proyecto ContabilidadSaPolar completo
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Sa Polar - Crear accesos directos
|
||||
.DESCRIPTION
|
||||
Crea accesos directos en Inicio y Escritorio.
|
||||
Se ejecuta durante la instalación MSI.
|
||||
#>
|
||||
|
||||
param(
|
||||
[string]$InstallDir = "$env:ProgramFiles\SaPolar",
|
||||
[switch]$Desktop
|
||||
)
|
||||
|
||||
$startMenuPath = "$([Environment]::GetFolderPath('Programs'))\Sa Polar"
|
||||
$desktopPath = [Environment]::GetFolderPath('Desktop')
|
||||
$psExe = "$env:SystemRoot\System32\WindowsPowerShell\v1.0\powershell.exe"
|
||||
$manageServices = Join-Path $InstallDir "scripts\manage-services.ps1"
|
||||
|
||||
# Crear directorio Start Menu
|
||||
if (-not (Test-Path $startMenuPath)) {
|
||||
New-Item -ItemType Directory -Path $startMenuPath -Force | Out-Null
|
||||
}
|
||||
|
||||
# Acceso directo: Panel web
|
||||
$wshell = New-Object -ComObject WScript.Shell
|
||||
$shortcut = $wshell.CreateShortcut("$startMenuPath\Sa Polar - Panel.lnk")
|
||||
$shortcut.TargetPath = "$env:SystemRoot\System32\cmd.exe"
|
||||
$shortcut.Arguments = "/c start http://localhost:3000"
|
||||
$shortcut.Description = "Abrir panel de administración de Sa Polar"
|
||||
$shortcut.WorkingDirectory = $InstallDir
|
||||
$shortcut.Save()
|
||||
|
||||
# Acceso directo: Gestor de servicios
|
||||
$shortcut = $wshell.CreateShortcut("$startMenuPath\Sa Polar - Gestor de Servicios.lnk")
|
||||
$shortcut.TargetPath = $psExe
|
||||
$shortcut.Arguments = "-NoExit -ExecutionPolicy Bypass -File `"$manageServices`" -Action status"
|
||||
$shortcut.Description = "Gestionar servicios Docker de Sa Polar"
|
||||
$shortcut.WorkingDirectory = $InstallDir
|
||||
$shortcut.Save()
|
||||
|
||||
# Acceso directo: Desinstalar
|
||||
$shortcut = $wshell.CreateShortcut("$startMenuPath\Sa Polar - Desinstalar.lnk")
|
||||
$shortcut.TargetPath = $psExe
|
||||
$shortcut.Arguments = "-ExecutionPolicy Bypass -File `"$manageServices`""
|
||||
$shortcut.Description = "Desinstalar Sa Polar"
|
||||
$shortcut.WorkingDirectory = $InstallDir
|
||||
$shortcut.Save()
|
||||
|
||||
# Acceso directo escritorio
|
||||
if ($Desktop) {
|
||||
$shortcut = $wshell.CreateShortcut("$desktopPath\Sa Polar.lnk")
|
||||
$shortcut.TargetPath = "$env:SystemRoot\System32\cmd.exe"
|
||||
$shortcut.Arguments = "/c start http://localhost:3000"
|
||||
$shortcut.Description = "Abrir panel de administración de Sa Polar"
|
||||
$shortcut.WorkingDirectory = $InstallDir
|
||||
$shortcut.Save()
|
||||
}
|
||||
|
||||
Write-Host "Accesos directos creados correctamente."
|
||||
@@ -0,0 +1,42 @@
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Instalador de Sa Polar - Script de post-instalación MSI
|
||||
.DESCRIPTION
|
||||
Configura el entorno después de la instalación de archivos:
|
||||
- Crea .env desde .env.example si no existe
|
||||
- Inicia contenedores Docker
|
||||
- Crea accesos directos (fallback)
|
||||
.NOTES
|
||||
Ejecutado por el MSI como acción personalizada
|
||||
#>
|
||||
|
||||
param(
|
||||
[string]$InstallDir = "$env:ProgramFiles\SaPolar"
|
||||
)
|
||||
|
||||
$COMPOSE_DIR = $InstallDir
|
||||
|
||||
# 1. Crear .env si no existe
|
||||
$envFile = Join-Path $COMPOSE_DIR ".env"
|
||||
$envExample = Join-Path $COMPOSE_DIR ".env.example"
|
||||
if ((Test-Path $envExample) -and -not (Test-Path $envFile)) {
|
||||
Copy-Item -Path $envExample -Destination $envFile
|
||||
Write-Host ".env creado desde .env.example"
|
||||
} elseif (Test-Path $envFile) {
|
||||
Write-Host ".env ya existe, se conserva"
|
||||
} else {
|
||||
Write-Host "ADVERTENCIA: No se encontró .env.example"
|
||||
}
|
||||
|
||||
# 2. Iniciar contenedores Docker
|
||||
Set-Location -LiteralPath $COMPOSE_DIR
|
||||
Write-Host "Iniciando contenedores Docker..."
|
||||
$result = docker compose up -d --remove-orphans 2>&1
|
||||
if ($LASTEXITCODE -eq 0) {
|
||||
Write-Host "Contenedores iniciados correctamente"
|
||||
} else {
|
||||
Write-Host "ADVERTENCIA: Error al iniciar contenedores."
|
||||
Write-Host "Puedes hacerlo manualmente con: manage-services.ps1 -Action start"
|
||||
}
|
||||
|
||||
exit 0
|
||||
@@ -0,0 +1,66 @@
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Sa Polar - Gestor de Servicios
|
||||
.DESCRIPTION
|
||||
Permite gestionar los servicios Docker de Sa Polar:
|
||||
start, stop, restart, status, logs, rebuild
|
||||
.PARAMETER Action
|
||||
Acción a realizar: start, stop, restart, status, logs, rebuild
|
||||
.PARAMETER Service
|
||||
Servicio específico (opcional): mysql, backend, frontend
|
||||
#>
|
||||
|
||||
param(
|
||||
[Parameter(Mandatory = $true)]
|
||||
[ValidateSet("start", "stop", "restart", "status", "logs", "rebuild")]
|
||||
[string]$Action,
|
||||
[string]$Service = ""
|
||||
)
|
||||
|
||||
$COMPOSE_DIR = Split-Path -Parent $PSScriptRoot
|
||||
$COMPOSE_FILE = Join-Path $COMPOSE_DIR "docker-compose.yml"
|
||||
|
||||
if (-not (Test-Path $COMPOSE_FILE)) {
|
||||
Write-Error "docker-compose.yml no encontrado en $COMPOSE_DIR"
|
||||
exit 1
|
||||
}
|
||||
|
||||
Set-Location -LiteralPath $COMPOSE_DIR
|
||||
|
||||
switch ($Action) {
|
||||
"start" {
|
||||
Write-Host "Iniciando servicios..."
|
||||
if ($Service) { docker compose up -d $Service }
|
||||
else { docker compose up -d }
|
||||
}
|
||||
"stop" {
|
||||
Write-Host "Deteniendo servicios..."
|
||||
if ($Service) { docker compose stop $Service }
|
||||
else { docker compose down }
|
||||
}
|
||||
"restart" {
|
||||
Write-Host "Reiniciando servicios..."
|
||||
if ($Service) { docker compose restart $Service }
|
||||
else { docker compose restart }
|
||||
}
|
||||
"status" {
|
||||
docker compose ps
|
||||
}
|
||||
"logs" {
|
||||
if ($Service) { docker compose logs -f $Service }
|
||||
else { docker compose logs -f }
|
||||
}
|
||||
"rebuild" {
|
||||
Write-Warning "Reconstruyendo imágenes... Esto puede tomar varios minutos."
|
||||
$confirm = Read-Host "Continuar? (s/N)"
|
||||
if ($confirm -ne "s" -and $confirm -ne "S") { exit 0 }
|
||||
docker compose build --no-cache
|
||||
docker compose up -d
|
||||
}
|
||||
}
|
||||
|
||||
if ($LASTEXITCODE -eq 0) {
|
||||
Write-Host "Operación completada."
|
||||
} else {
|
||||
Write-Error "Error durante la operación."
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Sa Polar - Desinstalador (post-MSI)
|
||||
.DESCRIPTION
|
||||
Limpieza adicional después de la desinstalación MSI:
|
||||
- Detiene y elimina contenedores Docker
|
||||
- Elimina volúmenes Docker
|
||||
- Elimina tareas programadas
|
||||
.NOTES
|
||||
También se ejecuta como acción personalizada del MSI
|
||||
#>
|
||||
|
||||
param(
|
||||
[string]$InstallDir = "$env:ProgramFiles\SaPolar"
|
||||
)
|
||||
|
||||
Write-Host "=== Sa Polar - Desinstalación ==="
|
||||
Write-Host ""
|
||||
|
||||
# 1. Detener contenedores
|
||||
if (Test-Path $InstallDir) {
|
||||
Set-Location -LiteralPath $InstallDir
|
||||
Write-Host "Deteniendo contenedores Docker..."
|
||||
docker compose down -v 2>$null
|
||||
Write-Host "Contenedores detenidos y volúmenes eliminados."
|
||||
} else {
|
||||
Write-Host "Directorio de instalación no encontrado."
|
||||
}
|
||||
|
||||
# 2. Eliminar tarea programada
|
||||
$taskName = "Sa Polar Starter"
|
||||
$task = Get-ScheduledTask -TaskName $taskName -ErrorAction SilentlyContinue
|
||||
if ($task) {
|
||||
Unregister-ScheduledTask -TaskName $taskName -Confirm:$false
|
||||
Write-Host "Tarea programada eliminada."
|
||||
}
|
||||
|
||||
Write-Host ""
|
||||
Write-Host "Sa Polar ha sido desinstalado."
|
||||
exit 0
|
||||
Reference in New Issue
Block a user