Como eu fiz o Mole for Windows em um Mac
Desde que o Mole for Mac saiu, muita gente me perguntava quando viria uma versão para Windows, e minha resposta era sempre que antes o app para Mac precisava estar redondo. O Mole for Windows finalmente saiu em 14 de outubro. Antes disso, ele passou por mais de 20 versões com um grupo pequeno de usuários e depois por vários dias de testes com os primeiros apoiadores do Mole, que mandaram muitas sugestões. Obrigado a todos. Desenvolver foi bem divertido, então aqui vai como eu fiz um app para Windows em um Mac.
Começar quase do zero
Para uma experiência melhor e mais desempenho, esta versão foi escrita em C# com WinUI 3, nativa para Windows, sem Electron. Windows e macOS também são diferentes no jeito como o sistema funciona e no que há para limpar, então, tirando o design e os textos, quase nada das mais de 100 mil linhas de Swift do app para Mac pôde ser reaproveitado. Entre idas e vindas, levou cerca de um mês, com umas 78 mil linhas de código e mais de 4.000 testes.
Um Mac, uma máquina virtual, um ThinkPad
Desenvolver e depurar foi bem mais difícil do que no Mac que eu conheço, e uma interface WinUI não compila no Mac. Por isso, o código e todo o contexto da IA ficam em um único Mac. Nele, o Parallels Desktop roda uma máquina virtual Windows para depuração, e um ThinkPad X1 fica ligado o tempo todo para mostrar o que uma máquina virtual não mostra. Esta é a minha mesa hoje: o Mac no meio, o ThinkPad X1 à esquerda e o Mole aberto em todas as telas.
O que funcionou bem
Alguns hábitos deste mês desenvolvendo software para Windows em um Mac funcionaram bem, caso você precise fazer o mesmo:
- Dividir o código em camadas. A lógica principal, como limpeza e desinstalação, e o estado da interface ficam em projetos .NET que não dependem do Windows. A camada que chama as APIs do sistema ativa
EnableWindowsTargeting, então também compila no Mac. A maior parte dos mais de 4.000 testes roda no Mac, e só a camada WinUI precisa ser compilada no Windows. - Montar o repositório na máquina virtual como pasta compartilhada do Parallels. Você edita no Mac e já compila e executa na VM, sem copiar nada de um lado para o outro. Deixe a saída de compilação de cada lado em uma pasta própria, senão os caminhos absolutos gravados em
objficam se sobrescrevendo. - Controlar a máquina virtual por scripts. O
prlctl execexecuta comandos lá dentro, e os botões são clicados e as janelas capturadas pelo nome de acessibilidade via UI Automation, então a IA acerta o controle certo sem coordenadas, mesmo quando o layout muda um pouco. - Acessar o ThinkPad por UU Remote e ssh. Hardware x64 de verdade, escala em DPI alto, bateria, SmartScreen e Defender são conferidos ali, e cada versão é instalada e testada nele antes de sair.
- Onde nenhuma linha de comando chega, peço ao Claude que chame o computer use do Codex pelo lcu. Sinceramente, o computer use do Codex é muito bom, mas não consegue clicar em um aviso do UAC, então essa parte ainda fica comigo.
Na maior parte do tempo, de 7 a 10 abas de agentes estão rodando tarefas ao mesmo tempo no Kaku.
Certificado de desenvolvedor Windows dá trabalho
No Windows, um instalador sem assinatura é barrado assim que abre com “O Windows protegeu o computador”, e o Controle Inteligente de Aplicativos do Windows 11 nem deixa ele rodar, então antes de lançar eu precisei comprar um certificado de assinatura de código. Pesquisando, descobri que um certificado EV não dá mais nenhuma vantagem no SmartScreen: um programa recém-assinado continua aparecendo como não reconhecido até que gente suficiente o instale. O Azure Artifact Signing, da própria Microsoft, por menos de 10 dólares por mês, seria o mais fácil, mas para pessoas físicas só está disponível nos Estados Unidos e no Canadá, então não deu para mim, e o certificado barato da Certum para código aberto não permite uso comercial.
No fim comprei o certificado OV na nuvem da Certum, por cem a duzentos dólares por ano. A chave fica no HSM em nuvem deles, cada assinatura pede um código de uso único do app SimplySign no celular, e o nome no certificado é o nome legal verificado, que é também onde a reputação do SmartScreen vai se acumulando. Algumas vezes a sessão do SimplySign caiu depois de umas horas parada e a assinatura falhou no meio do empacotamento, então agora assino um arquivo de teste antes de cada build.
Testar apps foi o que mais tomou tempo
O pior que um limpador pode fazer é apagar o que não devia, e no Windows cada instalador e desinstalador tem seu próprio jeito, então o único caminho é instalar um por um. Montei uma lista de apps que engenheiros usam muito, na China e fora dela: editores, IDEs, navegadores, chat, armazenamento em nuvem, bancos de dados e ferramentas de IA. Cada um é instalado e aberto, e então confiro se a desinstalação, as atualizações, a limpeza de restos e a lista de inicialização do Mole o reconhecem. Até agora, 372 apps foram testados, e 72 mostraram algum problema, sempre corrigido na mesma rodada, coberto por um teste e testado de novo. Alguns problemas vieram do meu próprio ambiente: no primeiro teste, o VS Code recebeu um atalho de mesmo nome que o Parallels tinha criado para a cópia do VS Code no Mac, e ele quase foi removido por engano.
Os recursos são praticamente os mesmos do app para Mac: as cinco páginas Limpar, Apps (desinstalação e atualizações), Otimizar, Analisar e Status, além do painel da bandeja, Manter tela ligada e Limpar tela. Ele funciona no Windows 10 22H2 e no Windows 11, com instaladores nativos para x64 e ARM64.
Também existe uma versão de linha de comando
Além do app de desktop, a versão para Windows da CLI do Mole começou no início do ano. O primeiro pedido veio de um desenvolvedor da Índia, que de quebra me mandou um PR, obrigado. Em nove meses e meio foram nove versões, e neste último mês trabalhei bastante nela, então os comandos e o jeito de usar agora estão quase iguais aos da CLI para Mac. Ela é gratuita e de código aberto: se você gosta da linha de comando, pode usar direto do GitHub. Este artigo explica como ela difere do app de desktop.
O download e o preço do app de desktop estão em mole.fit/windows, e cada recurso pode ser usado de graça duas vezes antes de você decidir. Se você tem um PC com Windows, experimente.