From f4cdc00567d1b90e011f4f8a8d4cb7f01d516d38 Mon Sep 17 00:00:00 2001 From: Eduardo Mosqueda Date: Tue, 4 Nov 2025 07:58:01 -0600 Subject: [PATCH] Update path-installer.ps1 --- path-installer.ps1 | 87 ++++++++++++++++++++++++++++------------------ 1 file changed, 54 insertions(+), 33 deletions(-) diff --git a/path-installer.ps1 b/path-installer.ps1 index cf6fe25..8e809ea 100644 --- a/path-installer.ps1 +++ b/path-installer.ps1 @@ -1,34 +1,34 @@ -$RutaBase = "C:\TEMP" -$ComandoNombre = "safecloud-run.cmd" -$URLGiteaBase = "https://recursos.safecloud.mx/support/scripts/raw/branch/main/" -$RutaCompleta = Join-Path $RutaBase $ComandoNombre +# ----------------------------------------------------------------- +# Script: SafeCloud - PATH (v6 - Ruta Final C:\ProgramData\SafeCloud) +# ----------------------------------------------------------------- -# Contenido de safecloud-run.cmd (Versión 2.0 - Soporta .ps1) +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" - -:: 1. Validar si se paso un argumento if "%1"=="" ( goto :eof ) set "SCRIPT_NAME=%1" set "SCRIPT_EXTENSION=%~x1" set "FULL_URL=%BASE_URL%%SCRIPT_NAME%" -set "TEMP_FILE=%TEMP%\safecloud_temp_%RANDOM%_%SCRIPT_NAME%" - -:: 2. Descargar el script -curl -sL "%FULL_URL%" > "%TEMP_FILE%" +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 ) - -:: 3. Logica de Ejecucion (NUEVO) echo [SafeCloud] Ejecutando %SCRIPT_NAME%... - -:: Si la extension es .ps1, ejecutar con PowerShell if /I "%SCRIPT_EXTENSION%"==".ps1" ( powershell.exe -ExecutionPolicy Bypass -File "%TEMP_FILE%" goto :CLEANUP ) - -:: Si la extension es .cmd o .bat (o desconocida), ejecutar con CALL if /I "%SCRIPT_EXTENSION%"==".cmd" ( call "%TEMP_FILE%" goto :CLEANUP @@ -37,27 +37,48 @@ if /I "%SCRIPT_EXTENSION%"==".bat" ( call "%TEMP_FILE%" goto :CLEANUP ) - -:: Fallback por si la extension no es ninguna de las anteriores echo [Error] Extension de archivo no soportada: %SCRIPT_EXTENSION% - :CLEANUP del "%TEMP_FILE%" 2>nul goto :eof "@ -# --- Logica de Instalacion (Sin cambios) --- +# --- 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 +} -# 1. Creacion de la carpeta y el archivo CMD (C:\TEMP) -New-Item -Path $RutaBase -ItemType Directory -Force | Out-Null -Set-Content -Path $RutaCompleta -Value $ScriptContent -Force | Out-Null - -# 2. Modificacion del PATH del Sistema +# --- 4. Actualización del PATH del Sistema (con limpieza) --- +Write-Host "Actualizando PATH del Sistema..." $PathActual = [Environment]::GetEnvironmentVariable("Path", "Machine") -if ($PathActual -notlike "*$RutaBase*") { - $NuevoPath = "$PathActual;$RutaBase" - [Environment]::SetEnvironmentVariable("Path", $NuevoPath, "Machine") - - # Uso de SETX para forzar la actualizacion del PATH - cmd /c "setx Path ""$NuevoPath"" /M >nul" -} \ No newline at end of file + +# 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." \ No newline at end of file