Um instalador é um programa que configura seu software no computador do usuário. Ele copia arquivos, cria atalhos e registra o aplicativo no sistema. Primeiramente, instaladores são essenciais para usuários finais não técnicos. Eles não precisam saber sobre Python, pip ou dependências. Além disso, instaladores podem adicionar entradas no menu iniciar ou na área de trabalho. A voz passiva é usada aqui: “o registro do Windows é modificado automaticamente”. Quando utilizar instaladores? Em aplicações desktop profissionais. Por exemplo, um sistema de vendas, um jogo ou uma ferramenta interna. Ferramentas como Inno Setup, NSIS e cx_Freeze com bdist_msi são populares. Neste guia, focaremos no Inno Setup (Windows) e no pkgbuild (macOS). Para Linux, usamos pacotes .deb ou .rpm (gerenciadores nativos). Vamos explorar cada cenário com exemplos práticos.
Inno setup: instalador profissional para windows
Inno Setup é gratuito, maduro e suporta muitos recursos.
Ele cria um único arquivo .exe que instala seu programa.
Primeiro, gere um executável Python com PyInstaller (veja post anterior).
Depois, escreva um script .iss para o Inno Setup.
Esse script define onde copiar os arquivos e quais atalhos criar.
A compilação gera o instalador final.
Foi observado que o Inno Setup permite scripts Pascal personalizados.
Isso é útil para validar dependências ou ler o registro do Windows.
Um exemplo mínimo de script .iss:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
; script_exemplo.iss - Inno Setup Script [Setup] AppName=MeuApp AppVersion=1.0 DefaultDirName={pf}\MeuApp DefaultGroupName=MeuApp UninstallDisplayIcon={app}\meuapp.exe Compression=lzma2 SolidCompression=yes OutputDir=installer_output [Files] Source: "dist\meuapp\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs [Icons] Name: "{group}\MeuApp"; Filename: "{app}\meuapp.exe" Name: "{commondesktop}\MeuApp"; Filename: "{app}\meuapp.exe" [Run] Filename: "{app}\meuapp.exe"; Description: "Executar aplicativo"; Flags: postinstall nowait |
Para compilar, use o compilador do Inno Setup (Compil32.exe). O resultado é um instalador profissional e assinável digitalmente. A voz passiva é aplicada: “os atalhos são criados automaticamente”.
Instaladores no macOS e linux
No macOS, usamos o pkgbuild ou productbuild (linha de comando).
Primeiro, crie uma estrutura de diretórios com seu aplicativo.
Coloque o executável em MyApp.app/Contents/MacOS/.
Depois, execute pkgbuild --root MyApp.app --identifier com.empresa.meuapp --version 1.0 MeuApp.pkg.
Isso gera um instalador .pkg que o usuário pode clicar e instalar.
Para Linux, o padrão são pacotes .deb (Debian/Ubuntu).
Use a ferramenta dpkg-deb ou o fpm (gerador universal).
Um pacote .deb requer uma pasta DEBIAN/control com metadados.
Exemplo mínimo de estrutura:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
meuapp_deb/ ├── DEBIAN/ │ └── control └── usr/ └── local/ └── bin/ └── meuapp # Conteúdo do arquivo control: Package: meuapp Version: 1.0 Section: utils Priority: optional Architecture: amd64 Maintainer: Seu Nome <email@exemplo.com> Description: Meu aplicativo Python |
Depois, execute: dpkg-deb --build meuapp_deb.
Isso cria meuapp_deb.deb para instalação com sudo dpkg -i.
Quando usar cada formato? No macOS, .pkg para distribuição externa.
No Linux, .deb (Debian/Ubuntu) ou .rpm (Fedora/RHEL).
Ferramentas universais e boas práticas
O fpm (Effing Package Management) cria instaladores para vários sistemas.
Instale com gem install fpm (requer Ruby).
Exemplo: fpm -s dir -t deb -n meuapp -v 1.0 --prefix /usr/local/bin meuapp.
Isso gera um .deb sem esforço.
Outra opção é o NSIS (Nullsoft Scriptable Install System).
Ele é mais leve que o Inno Setup e também muito popular.
A escolha depende da sua familiaridade e dos recursos necessários.
Nunca distribua apenas uma pasta .exe sem instalador para leigos.
Eles esperam um processo guiado com próximos e confirmar.
A fórmula da taxa de adoção: \(A = \frac{I_{\text{instalador}}}{I_{\text{zip}}} \approx 2.5\).
Usuários instalam 2,5 vezes mais com um instalador do que com um ZIP.
Portanto, invista tempo nessa etapa final.
Teste seu instalador em uma máquina limpa (máquina virtual).
Verifique se todas as dependências (VC++ Runtime, etc.) são incluídas.
Por fim, ofereça desinstalação fácil via painel de controle.
Isso demonstra profissionalismo e respeito ao usuário.
Com essas ferramentas, seu software estará pronto para o mundo real.