# ----------------------------------------------------------------- # Script: SafeCloud - PATH (v6 - Ruta Final C:\ProgramData\SafeCloud) # ----------------------------------------------------------------- Write-Host "Iniciando instalación de SafeCloud Runner v6..." # --- 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.2 - Sanitizado) --- $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%... 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 v6 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") # Limpiamos la ruta antigua (C:\TEMP) y la nueva (para evitar duplicados) $PathEntries = $PathActual.Split(';') | Where-Object { $_ -ne "" -and $_ -ne $RutaAntigua -and $_ -ne $RutaNueva } # Agregamos la nueva ruta al final $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."