Cómo hice Mole for Windows en un Mac
Desde que salió Mole for Mac, mucha gente me preguntaba cuándo llegaría una versión para Windows, y mi respuesta siempre era que primero la app para Mac tenía que estar en buena forma. Mole for Windows salió por fin el 14 de octubre. Antes pasó por más de 20 versiones con un grupo pequeño de usuarios y después por varios días de pruebas con los primeros seguidores de Mole, que enviaron muchísimas sugerencias. Gracias a todos. Desarrollarla resultó muy divertido, así que aquí cuento cómo hice una app para Windows en un Mac.
Empezar casi desde cero
Para una mejor experiencia y mejor rendimiento, esta versión está escrita en C# con WinUI 3, nativa para Windows, sin Electron. Windows y macOS también son distintos en cómo funciona el sistema y en lo que hay que limpiar, así que, aparte del diseño y los textos, casi nada de las más de 100.000 líneas de Swift de la app para Mac se pudo reutilizar. Entre idas y vueltas llevó cerca de un mes, con unas 78.000 líneas de código y más de 4.000 pruebas.
Un Mac, una máquina virtual y un ThinkPad
Desarrollar y depurar fue mucho más difícil que en el Mac que conozco bien, y una interfaz WinUI no se compila en un Mac. Por eso el código y todo el contexto de la IA se quedan en un solo Mac. En él, Parallels Desktop ejecuta una máquina virtual de Windows para depurar, y un ThinkPad X1 está encendido día y noche para mostrar lo que una máquina virtual no muestra. Así es mi escritorio hoy: el Mac en el centro, el ThinkPad X1 a la izquierda y Mole abierto en cada pantalla.
Lo que funcionó bien
Algunas costumbres de este mes desarrollando software para Windows en un Mac resultaron útiles, por si necesitas hacer lo mismo:
- Dividir el código en capas. La lógica principal, como la limpieza y la desinstalación, y el estado de la interfaz viven en proyectos .NET que no dependen de Windows. La capa que llama a las API del sistema activa
EnableWindowsTargeting, así que también compila en un Mac. La mayoría de las más de 4.000 pruebas se ejecutan en el Mac, y solo la capa de WinUI tiene que compilarse en Windows. - Montar el repositorio en la máquina virtual como carpeta compartida de Parallels. Se edita en el Mac y se compila y ejecuta enseguida en la VM, sin copiar nada de un lado a otro. Guarda la salida de compilación de cada lado en su propia carpeta, o las rutas absolutas que se registran en
objse sobrescriben entre sí. - Manejar la máquina virtual con scripts.
prlctl execejecuta comandos dentro, y los botones se pulsan y las ventanas se capturan por su nombre de accesibilidad con UI Automation, así la IA acierta con el control correcto sin coordenadas, aunque el diseño se mueva un poco. - Llegar al ThinkPad con UU Remote y ssh. El hardware x64 real, el escalado con DPI alto, la batería, SmartScreen y Defender se comprueban ahí, y cada versión se instala y se recorre en él antes de publicarse.
- Donde no llega ninguna línea de comandos, hago que Claude llame al computer use de Codex a través de lcu. Sinceramente, el computer use de Codex es muy bueno, pero no puede pulsar un aviso de UAC, así que esa parte sigue siendo cosa mía.
La mayor parte del tiempo hay de 7 a 10 pestañas de agentes trabajando a la vez en Kaku.
Los certificados de desarrollador de Windows dan guerra
En Windows, un instalador sin firmar se detiene nada más abrirlo con «Windows protegió su PC», y el Control inteligente de aplicaciones de Windows 11 directamente no lo deja ejecutarse, así que antes de publicar tuve que comprar un certificado de firma de código. Al informarme descubrí que un certificado EV ya no da ninguna ventaja en SmartScreen: un programa recién firmado sigue apareciendo como no reconocido hasta que lo instala suficiente gente. Azure Artifact Signing, el servicio de Microsoft por menos de 10 dólares al mes, habría sido lo más sencillo, pero para particulares solo está disponible en Estados Unidos y Canadá, así que no me servía, y el certificado barato de Certum para código abierto no permite uso comercial.
Al final compré el certificado OV en la nube de Certum, por entre cien y doscientos dólares al año. La clave vive en su HSM en la nube, cada firma pide un código de un solo uso de la app SimplySign del móvil, y el nombre del certificado es el nombre legal verificado, bajo el que también se acumula la reputación de SmartScreen. Varias veces la sesión de SimplySign se cortó tras unas horas de inactividad y la firma falló a mitad del empaquetado, así que ahora firmo un archivo de prueba antes de cada compilación.
Probar apps fue lo que más tiempo llevó
Lo peor que puede hacer un limpiador es borrar lo que no debe, y en Windows cada instalador y desinstalador tiene sus propias costumbres, así que no queda otra que instalarlas una por una. Hice una lista de apps que los ingenieros usan a menudo, en China y fuera de ella: editores, IDE, navegadores, chat, almacenamiento en la nube, bases de datos y herramientas de IA. Cada una se instala y se abre, y luego compruebo si la desinstalación, las actualizaciones, la limpieza de restos y la lista de inicio de Mole la reconocen. Hasta ahora se han probado 372 apps, y en 72 apareció un problema, que en cada caso se corrigió en la misma ronda, se cubrió con una prueba y se volvió a probar. Algunos problemas venían de mi propio entorno: en su primera prueba, a VS Code se le atribuyó un acceso directo con el mismo nombre que Parallels había creado para la copia de Mac de VS Code, y estuvo a punto de eliminarse por error.
Las funciones coinciden en gran parte con la app para Mac: las cinco páginas Limpiar, Apps (desinstalación y actualizaciones), Optimizar, Analizar y Estado, además del panel de la bandeja, Pantalla encendida y Limpiar pantalla. Es compatible con Windows 10 22H2 y Windows 11, con instaladores nativos para x64 y ARM64.
También hay una versión de línea de comandos
Además de la app de escritorio, la versión para Windows de la CLI de Mole empezó a principios de año. La primera petición vino de un desarrollador de la India, que de paso me envió un PR, gracias. En nueve meses y medio ha tenido nueve versiones, y este último mes la he mejorado mucho, así que sus comandos y su uso ya se parecen mucho a los de la CLI para Mac. Es gratuita y de código abierto: si te gusta la línea de comandos, puedes usarla directamente desde GitHub. Este artículo explica en qué se diferencia de la app de escritorio.
La descarga y el precio de la app de escritorio están en mole.fit/windows, y cada función se puede usar gratis dos veces antes de decidir. Si tienes un PC con Windows, pruébala.