Pular para o conteúdo

Criar um instalador do Windows no Mac ou no Linux

Suas opções para gerar um Setup.exe quando você desenvolve no macOS ou no Linux, da compilação cruzada com NSIS a um build feito só no navegador, e como testar o resultado sem ter um PC com Windows.

Atualizado em 31 de outubro de 2026 · 3 min de leitura

Muitos aplicativos para Windows são desenvolvidos em Macs: apps Electron e Tauri, ferramentas em Python, jogos, binários Go e Rust compilados de forma cruzada. O app compila sem problemas; é no instalador que as pessoas travam, porque as ferramentas clássicas de instalador pressupõem uma máquina Windows. Aqui estão as formas de contornar isso, e como testar o instalador quando você não tem Windows à mão.

Opção 1: gerar o instalador no navegador

O ExeTup compila o Setup.exe na nuvem. A partir de um Mac ou de um desktop Linux:

  1. Gere o build para Windows do seu app, de modo que uma única pasta contenha MyApp.exe e seus arquivos. Electron Packager, PyInstaller (executado no Windows ou em uma VM Windows, já que o PyInstaller não faz compilação cruzada), GOOS=windows go build, cargo build --target x86_64-pc-windows-gnu e similares produzem exatamente isso.
  2. Compacte a pasta em .zip e envie.
  3. Preencha nome, versão, editor, escopo de instalação, atalhos e idiomas. Adicione um .ico.
  4. Gere o build e baixe o Setup.exe.

Nada é instalado na sua máquina e não há script nenhum. Veja como criar um Setup.exe para as opções em detalhe.

Opção 2: compilar o NSIS localmente

O compilador do NSIS roda no macOS e no Linux:

brew install makensis        # macOS
sudo apt install nsis        # Debian, Ubuntu
makensis installer.nsi

O script .nsi é escrito por você (veja instalador NSIS online para saber o que isso envolve). O instalador produzido é idêntico ao compilado no Windows. É a escolha certa quando você quer o build totalmente dentro da sua própria CI e não se importa em manter o script.

Opção 3: Inno Setup no Wine

O Inno Setup só existe para Windows, mas seu compilador roda no Wine. Instale o Wine, execute o instalador do Inno Setup dentro dele e depois chame o ISCC.exe pelo Wine a partir do seu script de build. Funciona e alguns projetos são distribuídos assim; espere um pouco de atrito com caminhos e fontes. Veja alternativa ao Inno Setup para uma comparação.

Opção 4: um build Windows na CI

GitHub Actions, GitLab e Azure Pipelines oferecem runners Windows. Compile o app e o instalador lá, com o NSIS ou o Inno Setup instalado por uma etapa de preparação, e baixe o artefato. Bom para equipes com um pipeline de release; pesado para um desenvolvedor solo que distribui uma ferramenta pequena.

Criando o .ico no Mac

Os ícones do Windows são arquivos .ico que contêm vários tamanhos. A partir de um PNG de 256×256:

brew install imagemagick
magick icon.png -define icon:auto-resize=256,128,64,48,32,16 icon.ico

Use o mesmo arquivo para o binário do app (--icon do Electron Packager, --icon do PyInstaller) e para o instalador.

Testando sem um PC com Windows

Você deve executar o instalador pelo menos uma vez antes de distribuí-lo. As opções, mais ou menos em ordem de esforço:

  • Uma máquina virtual Windows. Em Apple silicon, o UTM ou o Parallels com Windows 11 ARM executam apps x64 por emulação bem o bastante para testar instalações. VirtualBox e VMware funcionam em Macs Intel e no Linux. A licença da Microsoft permite instalações de avaliação para testes.
  • Um desktop Windows na nuvem. Windows 365, Azure Virtual Desktop ou a VM Windows de qualquer provedor, cobrada por hora.
  • A máquina de um colega ou de um cliente, para uma verificação final: execute o instalador, abra o app pelo menu Iniciar, desinstale pelas Configurações do Windows.

O Wine no macOS consegue rodar alguns apps Windows, mas não é uma forma confiável de avaliar um instalador.

Perguntas frequentes

Posso compilar o próprio app Windows em um Mac?

Muitas vezes, sim. Electron, Tauri, Go, Rust e .NET conseguem gerar builds para Windows a partir do macOS. O PyInstaller não faz compilação cruzada, então congele apps Python no Windows ou em uma VM Windows e depois gere o instalador a partir da pasta produzida.

Preciso do Wine ou de uma VM para usar o ExeTup?

Não. O build roda na nuvem e o resultado é baixado no seu navegador. Uma VM só é útil para testar o instalador depois.

Um instalador compilado no Mac vai se comportar de forma diferente no Windows?

Não. Um instalador NSIS compilado pelo makensis no macOS é equivalente byte a byte a um compilado no Windows, e o build na nuvem do ExeTup usa o mesmo compilador.

Como assino o instalador a partir de um Mac?

A assinatura de código com o signtool exige Windows, mas o osslsigncode assina executáveis Windows no macOS e no Linux com o mesmo certificado. Veja o guia sobre o SmartScreen para entender por que assinar importa.

Guias relacionados