Update path-installer.ps1
This commit is contained in:
@@ -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"
|
||||
}
|
||||
|
||||
# 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."
|
||||
Reference in New Issue
Block a user