Files
scripts/action1/sc-path-installation.ps1
Eduardo Mosqueda 0722d8dc27 Update action1/sc-path-installation.ps1
Se agrega la compatibilidad de ejecución para archivos con extensión ".reg"
2025-11-04 08:34:51 -06:00

87 lines
3.1 KiB
PowerShell

# -----------------------------------------------------------------
# Script: SafeCloud - PATH (v7 - Añade soporte para .REG)
# -----------------------------------------------------------------
Write-Host "Iniciando instalación de SafeCloud Runner v7..."
# --- 1. Definición de Variables ---
$RutaNueva = "C:\ProgramData\SafeCloud"
$RutaAntigua = "C:\TEMP"
$ComandoNombre = "safecloud-run.cmd"
$RutaCompletaCmd = Join-Path -Path $RutaNueva -ChildPath $ComandoNombre
$URLGiteaBase = "https://recursos.safecloud.mx/support/scripts/raw/branch/main/"
# --- 2. Contenido del lanzador (v2.3 - Soporta .REG) ---
$ScriptContent = @"
@echo off
set "BASE_URL=$URLGiteaBase"
if "%1"=="" ( goto :eof )
set "SCRIPT_NAME=%1"
set "SCRIPT_EXTENSION=%~x1"
set "FULL_URL=%BASE_URL%%SCRIPT_NAME%"
set "SAFE_SCRIPT_NAME=%SCRIPT_NAME:/=-%"
set "SAFE_SCRIPT_NAME=%SAFE_SCRIPT_NAME:\=-%"
set "TEMP_FILE=%TEMP%\safecloud_temp_%RANDOM%_%SAFE_SCRIPT_NAME%"
powershell.exe -NoProfile -ExecutionPolicy Bypass -Command "Invoke-WebRequest -Uri '%FULL_URL%' -OutFile '%TEMP_FILE%' -ErrorAction Stop"
if not exist "%TEMP_FILE%" ( goto :CLEANUP )
echo [SafeCloud] Ejecutando %SCRIPT_NAME%...
:: --- (NUEVA LÓGICA PARA .REG) ---
if /I "%SCRIPT_EXTENSION%"==".reg" (
echo [SafeCloud] Importando archivo de registro...
reg.exe import "%TEMP_FILE%"
goto :CLEANUP
)
:: --- (FIN DE LA NUEVA LÓGICA) ---
if /I "%SCRIPT_EXTENSION%"==".ps1" (
powershell.exe -ExecutionPolicy Bypass -File "%TEMP_FILE%"
goto :CLEANUP
)
if /I "%SCRIPT_EXTENSION%"==".cmd" (
call "%TEMP_FILE%"
goto :CLEANUP
)
if /I "%SCRIPT_EXTENSION%"==".bat" (
call "%TEMP_FILE%"
goto :CLEANUP
)
echo [Error] Extension de archivo no soportada: %SCRIPT_EXTENSION%
:CLEANUP
del "%TEMP_FILE%" 2>nul
goto :eof
"@
# --- 3. EJECUCIÓN (Instalación/Actualización) ---
Write-Host "Verificando carpeta $RutaNueva..."
if (-not (Test-Path $RutaNueva)) {
New-Item -Path $RutaNueva -ItemType Directory -Force | Out-Null
}
if (Test-Path $RutaCompletaCmd) {
Write-Host "Eliminando $RutaCompletaCmd anterior..."
Remove-Item -Path $RutaCompletaCmd -Force
}
Write-Host "Creando lanzador v7 en $RutaCompletaCmd..."
try {
Set-Content -Path $RutaCompletaCmd -Value $ScriptContent -Force -ErrorAction Stop
} catch {
Write-Error "ERROR FATAL al escribir en $RutaCompletaCmd. Detalles: $_"
exit 1
}
# --- 4. Actualización del PATH del Sistema (con limpieza) ---
Write-Host "Actualizando PATH del Sistema..."
$PathActual = [Environment]::GetEnvironmentVariable("Path", "Machine")
$PathEntries = $PathActual.Split(';') | Where-Object { $_ -ne "" -and $_ -ne $RutaAntigua -and $_ -ne $RutaNueva }
$PathFinal = ($PathEntries + $RutaNueva) -join ';'
if ($PathFinal -ne $PathActual) {
Write-Host "Actualizando PATH a: $PathFinal"
[Environment]::SetEnvironmentVariable("Path", $PathFinal, "Machine")
cmd /c "setx Path ""$PathFinal"" /M >nul"
} else {
Write-Host "El PATH ya está configurado correctamente."
}
Write-Host "Ocultando archivo $RutaCompletaCmd..."
(Get-Item $RutaCompletaCmd).Attributes += 'Hidden'
Write-Host "Proceso de instalación de SafeCloud-Runner completado."