# =================================================================== # SCRIPT DE INSTALACIÓN MICROSIP - DISTRIBUIDO VÍA CLOUDFLARE # =================================================================== # --- AUTO-ELEVACIÓN Y BYPASS DE POLÍTICA --- $currentPrincipal = New-Object Security.Principal.WindowsPrincipal([Security.Principal.WindowsIdentity]::GetCurrent()) if (-not $currentPrincipal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) { Write-Host "Solicitando permisos de administrador..." -ForegroundColor Cyan Start-Process powershell.exe "-NoProfile -ExecutionPolicy Bypass -Command & {IEX (New-Object Net.WebClient).DownloadString('$request.url')}" -Verb RunAs exit } # --- CONFIGURACIÓN DE RUTAS Y CREDENCIALES --- $rutaMicrosip = "C:\Program Files (x86)\Microsip" $IPServidor = "192.168.0.5" $UsuarioServidor = "act" $ContraseñaServidor = "Abc987-*/" $rutaOrigenArchivos = "\\$IPServidor\ADC" $rutaBaseTrabajo = Join-Path -Path $env:LOCALAPPDATA -ChildPath "it++" $rutaBaseRespaldo = Join-Path -Path $rutaBaseTrabajo -ChildPath "Backups" # --- PASO 1: RESPALDO --- Write-Host "--- PASO 1: Verificando instalación existente ---" -ForegroundColor Cyan if (Test-Path $rutaMicrosip) { $timestamp = Get-Date -Format "yyyy-MM-dd_HH-mm-ss" $rutaDestinoFinal = Join-Path -Path $rutaBaseRespaldo -ChildPath "Respaldo_$timestamp" New-Item -Path $rutaDestinoFinal -ItemType Directory -Force | Out-Null Write-Host "Respaldando en: $rutaDestinoFinal" -ForegroundColor Yellow Copy-Item -Path "$rutaMicrosip\*" -Destination $rutaDestinoFinal -Recurse -Force -ErrorAction SilentlyContinue } else { New-Item -Path $rutaMicrosip -ItemType Directory -Force | Out-Null } # --- PASO 2: SINCRONIZACIÓN --- Write-Host "--- PASO 2: Sincronizando con el servidor ---" -ForegroundColor Cyan try { $letras = "L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z" $letraAsignada = $null foreach ($l in $letras) { if (-not (Test-Path "$($l):")) { $letraAsignada = $l; break } } if (-not $letraAsignada) { throw "No hay letras de unidad disponibles." } net use "$($letraAsignada):" $rutaOrigenArchivos /user:$UsuarioServidor $ContraseñaServidor $unidad = "$($letraAsignada):\" $version = (Get-ChildItem -Path $unidad -Directory)[0].Name Write-Host "Sincronizando Versión: $version" -ForegroundColor Green Robocopy $unidad $rutaMicrosip /mir /v /njh /njs } catch { Write-Host "❌ ERROR: $($_.Exception.Message)" -ForegroundColor Red Read-Host "Presiona Enter para salir." exit } finally { if ($letraAsignada) { net use "$($letraAsignada):" /delete /y | Out-Null } } # --- PASO 3: ACCESO DIRECTO --- Write-Host "--- PASO 3: Creando acceso directo ---" -ForegroundColor Cyan try { $exe = Join-Path -Path $rutaMicrosip -ChildPath "$version\microsip.exe" if (-not (Test-Path $exe)) { $exe = Join-Path -Path $rutaMicrosip -ChildPath "microsip.exe" } $wshell = New-Object -ComObject WScript.Shell $s = $wshell.CreateShortcut("$([Environment]::GetFolderPath('Desktop'))\Microsip.lnk") $s.TargetPath = $exe $s.WorkingDirectory = Split-Path $exe -Parent $s.Save() Write-Host "✅ ¡Proceso finalizado!" -ForegroundColor Green } catch { Write-Host "⚠️ Error al crear acceso directo." } Read-Host "Presiona Enter para cerrar."