Este documento registra las características que ya han sido implementadas en el proyecto PHP Switcher en su versión C#.
- 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.
- 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.
- 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
AdminUtilspara verificar los privilegios actuales. - Si se detectan privilegios insuficientes, utiliza
RestartAsAdminpara reiniciar la aplicación con elevación. - Muestra información detallada sobre el estado de elevación y privilegios de usuario.
- Utiliza
- 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.
- 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.
- 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.
- 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.
- 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.
- 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:\phpque 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 -vy mostrando el resultado. - Maneja directorio
C:\phpexistente (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.
- Crea un enlace simbólico en
- 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.
- 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.
- 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
-co--show-consolepara 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.
- Estado: ✅ Completado
- Descripción: Modo especial para desarrolladores con características adicionales y registro detallado.
- Detalles técnicos:
- La aplicación acepta parámetro
-do--devpara 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.
- La aplicación acepta parámetro
- 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.
- 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.
PHP Switcher incluye características completas para su distribución y despliegue:
-
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
-
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
-
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.