Skip to content

Latest commit

 

History

History
216 lines (191 loc) · 12.9 KB

File metadata and controls

216 lines (191 loc) · 12.9 KB

Características Implementadas en PHP Switcher C#

Este documento registra las características que ya han sido implementadas en el proyecto PHP Switcher en su versión C#.

Ventanas de la Aplicación

Ventana de Carga (SplashForm)

  • Estado: ✅ Completado
  • Descripción: Ventana de carga gráfica integrada que se muestra mientras se realizan tareas de inicialización.
  • Detalles técnicos:
    • Utiliza Windows Forms para crear una interfaz gráfica de usuario.
    • Muestra un título "PHP Switcher" y subtítulo "PHP Version Manager for Windows".
    • Muestra una barra de progreso que refleja el progreso real de las tareas de inicialización.
    • Muestra mensajes de estado que reflejan la operación actual que se está realizando.
    • Utiliza un temporizador para iniciar la inicialización después de que se muestre el formulario.
    • Proporciona retroalimentación visual al usuario durante el inicio de la aplicación.
    • Muestra información de versión (v1.0.1).
    • Maneja adecuadamente la transición de cargador a aplicación principal.
    • Muestra el logo PHP en una posición optimizada para evitar solapamiento con el título.
    • Aplica el icono de la aplicación para una visualización consistente en la barra de tareas.

Ventana Principal (MainForm)

  • Estado: ✅ Completado
  • Descripción: La ventana principal de la aplicación proporciona una interfaz con pestañas para gestionar versiones de PHP.
  • Detalles técnicos:
    • Contiene una interfaz limpia y moderna con pestañas para diferentes funciones.
    • Diseño de tamaño fijo (no redimensionable) para una experiencia de usuario consistente.
    • Incluye una barra de estado optimizada con información en tiempo real.
    • Proporciona controles intuitivos para gestionar versiones de PHP.
    • Aplica el icono de la aplicación para una visualización consistente en la barra de tareas y en la ventana.

Características Actuales

1. Ejecución con Privilegios Administrativos

  • Estado: ✅ Completado
  • Descripción: La aplicación verifica si se está ejecutando con privilegios de administrador. Si no, se reinicia automáticamente solicitando elevación de privilegios.
  • Detalles técnicos:
    • Utiliza AdminUtils para verificar los privilegios actuales.
    • Si se detectan privilegios insuficientes, utiliza RestartAsAdmin para reiniciar la aplicación con elevación.
    • Muestra información detallada sobre el estado de elevación y privilegios de usuario.

2. Configuración de Primera Ejecución

  • Estado: ✅ Completado
  • Descripción: En la primera ejecución, solicita al usuario configurar el directorio de versiones PHP.
  • Detalles técnicos:
    • Detecta si la aplicación se está ejecutando por primera vez.
    • Utiliza el directorio predeterminado o permite al usuario elegir uno personalizado.
    • Crea el directorio seleccionado si no existe.
    • Guarda la configuración para uso futuro.
    • Proporciona una interfaz amigable para la configuración inicial.

3. Detección de Versiones PHP

  • Estado: ✅ Completado
  • Descripción: Obtiene automáticamente las versiones PHP disponibles desde el sitio web oficial.
  • Detalles técnicos:
    • Se conecta exclusivamente a "https://windows.php.net/downloads/releases/archives/" para obtener todas las versiones disponibles, incluyendo las más recientes.
    • Utiliza una expresión regular mejorada para capturar correctamente todos los formatos de nombres de archivo, incluyendo:
      • Versiones NTS y TS
      • Todos los formatos de compilador (VC6, VC9, VC11, VC14, VC15, vs16, vs17, etc.)
      • Arquitecturas x64 y x86
      • Todas las versiones de PHP (5.x, 7.x, 8.x)
    • Extrae preferentemente versiones x64, con fallback a x86 cuando no hay versiones x64 disponibles.
    • Identifica la última versión de parche para cada versión menor con una propiedad "last-patch".
    • Filtra para mostrar solo la última versión de parche para cada versión menor.
    • Ordena las versiones por número con las más recientes primero.
    • Guarda la información de versión para uso sin conexión.
    • Proporciona registro detallado del proceso de obtención.
    • Maneja entradas duplicadas en los resultados.
    • Implementa manejo adecuado de errores para intentos de obtención fallidos.

4. Ventana de Aplicación Principal con Interfaz de Pestañas

  • Estado: ✅ Completado
  • Descripción: Una interfaz gráfica de usuario para la aplicación principal que aparece después de que el cargador completa.
  • Detalles técnicos:
    • Utiliza Windows Forms para crear una interfaz limpia y moderna.
    • Implementa una interfaz de pestañas para mejor organización:
      • Pestaña Available Versions: Lista versiones PHP disponibles para descarga.
      • Pestaña Installed Versions: Muestra versiones PHP instaladas.
      • Pestaña Settings: Permite configuración de ajustes de aplicación.
    • Muestra información detallada sobre versiones PHP disponibles.
    • Proporciona controles para actualizar la lista de versiones disponibles con experiencia de usuario mejorada.
    • Permite cambiar el directorio de versiones PHP.
    • Incluye un botón de salida que permite al usuario cerrar la aplicación.
    • Maneja adecuadamente el cierre de la aplicación cuando se cierra la ventana.
    • Muestra el estado de instalación para cada versión PHP en la pestaña Available Versions.

5. Gestión de Configuración

  • Estado: ✅ Completado
  • Descripción: Almacenamiento persistente de la configuración de la aplicación.
  • Detalles técnicos:
    • Almacena la configuración en un archivo JSON en el directorio AppData del usuario.
    • Guarda y carga la configuración automáticamente.
    • Maneja escenarios de primera ejecución con valores predeterminados.
    • Proporciona funciones para actualizar ajustes de configuración.
    • Implementa manejo de errores para operaciones de configuración.

6. Descarga e Instalación de Versiones PHP

  • Estado: ✅ Completado
  • Descripción: Funcionalidad para descargar e instalar versiones PHP seleccionadas desde la pestaña Available Versions.
  • Detalles técnicos:
    • Soporta selección múltiple de versiones PHP para instalación por lotes.
    • Proporciona retroalimentación visual inmediata al iniciar descargas.
    • Muestra progreso de descarga con velocidad en la barra de estado.
    • Verifica la integridad de los archivos descargados.
    • Extrae archivos PHP a carpetas específicas de versión.
    • Preserva el archivo php.ini original del paquete ZIP.
    • Maneja instalaciones duplicadas con confirmación del usuario.
    • Actualiza la lista de versiones instaladas después de descarga exitosa.
    • Marca versiones instaladas en la pestaña Available Versions.
    • Implementa manejo robusto de errores para operaciones de descarga.

7. Activación de Versiones PHP

  • Estado: ✅ Completado
  • Descripción: Funcionalidad para activar una versión PHP específica para uso en todo el sistema.
  • Detalles técnicos:
    • Crea un enlace simbólico en C:\php que apunta al directorio de la versión PHP seleccionada.
    • Verifica y actualiza la variable de entorno PATH del sistema para incluir C:\php.
    • Ofrece opción de activación después de completar la instalación.
    • Para instalaciones multi-versión, permite seleccionar qué versión activar.
    • Verifica éxito de activación ejecutando php -v y mostrando el resultado.
    • Maneja directorio C:\php existente (si no es un enlace simbólico).
    • Actualiza la configuración para rastrear la versión PHP actualmente activa.
    • Muestra la versión PHP activa en la barra de estado.
    • Implementa manejo robusto de errores para creación y verificación de enlaces simbólicos.

8. Gestión de Versiones Instaladas

  • Estado: ✅ Completado
  • Descripción: Funcionalidad para gestionar versiones PHP instaladas.
  • Detalles técnicos:
    • Muestra todas las versiones PHP instaladas con detalles (versión, tipo, ruta de instalación, fecha).
    • Resalta la versión actualmente activa.
    • Proporciona botón "Activate" para cambiar entre versiones instaladas.
    • Permite eliminar versiones PHP instaladas.
    • Incluye un botón de actualización para escanear versiones instaladas manualmente.
    • Actualiza la pestaña Available Versions para reflejar cambios.

9. Barra de Estado

  • Estado: ✅ Completado
  • Descripción: Una barra de estado en la parte inferior de la ventana principal que proporciona información en tiempo real.
  • Detalles técnicos:
    • Muestra el estado de operación actual.
    • Incluye una barra de progreso permanente alineada a la izquierda con tamaño fijo.
    • Muestra mensajes de estado inmediatamente después de la barra de progreso.
    • Indica la versión PHP actualmente activa alineada a la derecha.
    • Proporciona retroalimentación visual durante operaciones de descarga/instalación.
    • Diseño optimizado para mejor legibilidad y experiencia de usuario.

Características Adicionales

10. Modo Consola Oculta

  • Estado: ✅ Completado
  • Descripción: Funcionalidad para ocultar la ventana de consola durante operación normal.
  • Detalles técnicos:
    • Ventana de consola oculta por defecto para una experiencia de usuario más limpia.
    • La aplicación acepta parámetro -c o --show-console para depuración.
    • Pestaña Settings incluye botón "Restart in Debug Mode".
    • Modo debug muestra registros detallados en la ventana de consola.
    • Preserva toda la salida de consola para solución de problemas.

11. Modo Desarrollo

  • Estado: ✅ Completado
  • Descripción: Modo especial para desarrolladores con características adicionales y registro detallado.
  • Detalles técnicos:
    • La aplicación acepta parámetro -d o --dev para modo desarrollo.
    • Pestaña Settings incluye botón "Restart in Development Mode".
    • Indicador visual en la UI cuando se ejecuta en modo desarrollo.
    • Registro mejorado con información adicional específica de desarrollo.
    • Ventana de consola siempre visible en modo desarrollo.
    • Activación automática de modo debug cuando está en modo desarrollo.

12. Mejoras de Sincronización UI

  • Estado: ✅ Completado
  • Descripción: Sincronización mejorada entre elementos UI al realizar operaciones.
  • Detalles técnicos:
    • Lista de versiones PHP instaladas se actualiza automáticamente después de descargar una nueva versión.
    • Lista de versiones PHP instaladas se actualiza automáticamente después de activar una versión.
    • Lista de versiones PHP instaladas se actualiza automáticamente después de eliminar una versión.
    • Estado UI consistente en todas las pestañas al realizar operaciones.
    • Necesidad reducida de actualización manual después de operaciones.
    • Mejor experiencia de usuario con retroalimentación visual inmediata.

13. Sincronización Automática de Versiones Instaladas

  • Estado: ✅ Completado
  • Descripción: Sincronización automática entre las versiones PHP instaladas en el sistema de archivos y la configuración.
  • Detalles técnicos:
    • Escaneo automático del directorio de versiones PHP durante el inicio de la aplicación.
    • Detección de versiones PHP instaladas basada en la presencia de php.exe.
    • Extracción de información de versión desde el nombre del directorio.
    • Detección automática de la versión PHP activa basada en el enlace simbólico.
    • Actualización de la configuración para reflejar las versiones instaladas.
    • Eliminación de versiones de la configuración que ya no existen en el sistema de archivos.
    • Registro detallado del proceso de sincronización para facilitar la depuración.
    • Manejo robusto de errores durante el proceso de sincronización.

Distribución y Despliegue

PHP Switcher incluye características completas para su distribución y despliegue:

  1. Ejecutable Independiente (Self-Contained)

    • Generación de un único archivo ejecutable que incluye todas las dependencias
    • No requiere instalación de .NET en el sistema del usuario
    • Incluye todos los recursos necesarios (iconos, imágenes)
    • Optimizado para rendimiento en producción
  2. Instalador MSI para Windows

    • Instalador profesional creado con WiX Toolset
    • Instalación y desinstalación sencilla a través del Panel de Control de Windows
    • Creación automática de accesos directos en el menú de inicio
    • Configuración de iconos y asociaciones de archivos
  3. Solicitud Automática de Privilegios de Administrador

    • Detección de privilegios al iniciar la aplicación
    • Solicitud automática de elevación si es necesario
    • Reinicio con privilegios elevados sin intervención del usuario

El desarrollo de PHP Switcher se ha completado satisfactoriamente. Todas las características planeadas han sido implementadas y el proyecto se considera finalizado en su estado actual. La aplicación está lista para ser distribuida a los usuarios finales mediante el instalador MSI o el ejecutable independiente. Para una lista completa de todas las tareas completadas, consulte el archivo task_pending.md.