terça-feira, outubro 14, 2008

NSIS - Parte 1

Um dos aspectos mais negligenciados do desenvolvimento de software é a preparação de um instalador. Não é incomum esta tarefa ser feita "nos descontos", usando uma ferramenta incompleta que veio junto com o ambiente de desenvolvimento na base do NNF (Next-Next-Finish).

Nesta série de posts vamos ver uma ferramenta livre (grátis e de fonte aberto) para preparação de instaladores. Não é uma ferramenta automática (ao invés do NNF é preciso preparar um script) mas é altamente versátil e capaz de gerar instaladores bonitos e inteligentes. Existem alguns utilitários para auxiliar na criação do script, mas o nosso foco vai ser a escrita manual. Muitos softwares livres e vários softwares comerciais usam esta ferramenta.

A ferramenta que estou falando é o NSIS - Nullsoft Scriptable Install System e foi desenvolvido pelos criadores do Winamp. A Wikipedia tem uma página a respeito, mas a principal referência é a página oficial. Para acompanhar os meus exemplos, baixe a versão mais recente (no momento a 2.40). O download é um instalador, obviamente feito com o próprio NSIS.

Em linhas gerais, o NSIS compila o script, gerando um arquivo executável que contém a lógica de instalação e todos os arquivos necessários (compactados).

Vamos encerrar esta introdução com um pequeno exemplo. Tomei como "cobaia" a calculadora do Windows, mas você pode usar qualquer outro programa que se resuma a um arquivo executável.

1) Instale o NSIS

2) Execute o seu editor de texto ou programas predileto (no meu caso o SciTE, que até reconhece scripts do NSIS), digite o script abaixo e salve com o nome Ex1.nsi.
#
# Primeiro exemplo de uso do NSIS
#

LoadLanguageFile "${NSISDIR}\Contrib\Language files\PortugueseBR.nlf"

Name "Calculadora"
OutFile "InstCalc.exe"
InstallDir "$PROGRAMFILES\Calc"

Page directory
Page instfiles

Section "-Obrigatoria"
SetOutPath $INSTDIR
File "c:\windows\system32\calc.exe"
SectionEnd
  • As linhas que começam com '#' são comentarios.
  • LoadLanguageFile define a lingua a ser usada nas telas (no caso português do Brasil).
  • Name é o nome do instalador, OutFile o nome do arquivo a ser gerado pelo NSIS e InstallDir o diretório padrão de instalação ($PROGRAMFILES é o diretório de programas do Windows onde o instalador está executando - "Arquivos de Programas", "Program Files", etc).
  • Os comandos Page indicam quais telas são usados no instalador (no caso a de escolha de diretório e de acompanhamento da instalação dos arquivos).
  • Uma Section é uma parte da instalação, veremos no próximo post como usar isto para permitir ao usuário selecionar o que vai ser instalado. Por enquanto temos uma única section, o '-' no início do nome indica que ela é de instalação obrigatória.
  • SetOutPath indica onde os arquivos seguintes serão gravados na instalação (no caso $INSTDIR, que é o diretório escolhido pelo usuário).
  • Por último, File referência um arquivo no micro onde o script será compilado. No caso vamos pegar o CALC.EXE que está Windows\System32.
3) No Windows Explorer, clique com o botão direito em Ex1.nsi. No menu apresentado, selecione compile NSIS script. Se você não fez nenhum erro, no final a janela do NSIS vai estar com o botão "Test Installer" habilitado. Você pode também executar diretamente o InstCalc.exe para testar o instalador. São apenas duas telas (por enquanto a aparência não é esplendorosa, veremos mais para frente como deixá-la mais moderna).



Nos próximos posts veremos passo a passo como sofisticar este nosso instalador.

3 comentários:

Breno Augusto disse...

Muito interessante o Post, acredito que vai ajudar muito desenvolvedor que queira deixar o trabalho mais profissional...

Parabéns

Abraço

T+

Tiago "PacMan" Peczenyj disse...

Me ajudou muito esta série de posts!

Daniel Quadros disse...

Tiago,

Fico feliz que tenha ajudado, acabei não completando a série pois não estava contente com os posts. Eu estava tentando apresentar os recursos em uma ordem lógica, mas achei que estava me perdendo.