Caso de estudio
Proyecto propio · App para Windows
AutoDark: cambio de tema en Windows, publicado en Microsoft Store.
Cambio automático entre los modos claro y oscuro de Windows 11 al amanecer y al atardecer. Una utilidad con un simple interruptor ON/OFF, desarrollada por Danilo Stoletovic y publicada en Microsoft Store.
La aplicación
El problema
Llevaba años queriendo que Windows se adaptara a la luz del día. Las alternativas que probé añadían más complejidad y actividad en segundo plano de la que quería. Una función sencilla de Windows no debería necesitar software complicado. Quería un interruptor, no otra afición.
La solución
Desarrollé una app nativa para Windows en .NET con una interfaz mínima de ON/OFF. AutoDark calcula el amanecer y el atardecer a partir de la ubicación de Windows o de coordenadas introducidas manualmente, usa el modo claro de día y el oscuro de noche, y delega las ejecuciones programadas en Windows Task Scheduler. Al cerrar la ventana, la app se cierra; al poner la automatización en OFF, se elimina la tarea y se restaura la configuración del tema guardada.
Hacer poco, y hacerlo bien
Una funcionalidad bien delimitada y un bajo consumo de recursos en segundo plano fueron requisitos de diseño. No hay icono en la bandeja del sistema ni servicio residente: Windows inicia ejecuciones breves cuando hacen falta. Sin cuenta, sin telemetría, sin un laberinto de ajustes. Son decisiones de arquitectura, no resultados de pruebas de rendimiento.
Empaquetar cambia las reglas
La integración con los temas de Windows tuvo que tener en cuenta el comportamiento de MSIX. La app sin empaquetar realiza cambios puntuales en el registro; la implementación empaquetada actual aplica una copia de un tema mediante Windows Theme Manager, cambiando los modos claro y oscuro sin aplicar el fondo de pantalla, los cursores, los iconos ni los sonidos. Esa interfaz no está documentada, así que la compatibilidad hay que probarla, no darla por hecha. La app empaquetada programada usa un alias de ejecución independiente de la versión en lugar de una ruta de instalación vinculada a una versión.
El entorno aislado dijo que no
Enviar la app a la tienda también implicó lidiar con restricciones de capacidades. Se eliminó la capacidad unvirtualizedResources tras su rechazo. En un experimento aparte con AppContainer, se logró ejecutar el programa de prueba e inicializar Theme Manager, pero se denegó la aplicación de un tema incluido en el paquete y accesible para lectura, y falló el acceso a Task Scheduler. Fue una investigación, no una función en entorno aislado incluida en la versión publicada. El manifiesto de producción actual conserva runFullTrust para ejecutarse con los permisos habituales de un usuario de escritorio; no solicita elevación a administrador. Estos experimentos locales no demuestran el comportamiento en todas las compilaciones de Windows ni identifican la versión exacta del paquete que figura actualmente en la tienda.
Publicar también es ingeniería
Preparé el empaquetado y la validación de MSIX en torno a la identidad del paquete de la aplicación, su versión, sus recursos y su alias de ejecución, con un paquete listo para enviarlo manualmente a Partner Center. Los detalles de la ficha, las declaraciones de privacidad y capacidades, las restricciones de permisos y las comprobaciones de compatibilidad también forman parte de la entrega. Que compile sin errores no basta para poner una app en manos de alguien.
El resultado
AutoDark es una aplicación funcional disponible públicamente en Microsoft Store, bajo el nombre de editor Danilo Stoletovic. Ese es el hito: una utilidad real que cualquiera puede instalar a través de un canal de distribución público. Publicarla en la tienda es una vía de distribución, no un respaldo de Microsoft.
El botón era la parte fácil
Una interfaz pequeña puede ocultar mucho trabajo de plataforma. El empaquetado cambia el comportamiento de ejecución. Los modelos de permisos pueden bloquear la función principal. La distribución tiene sus propios requisitos. La lección: entregar software incluye comprobar la compatibilidad, empaquetarlo y hacerlo llegar a los usuarios, no solo escribir el código.
Compruébalo tú mismo
Servicio relacionado: Aplicaciones web e integraciones de IA
Mi stack
Aprendiz de todo. Maestro de nada.
Pero aun así saco adelante todo el puto proyecto