quinta-feira, outubro 16, 2008

NSIS - Parte 2

Na parte 1 apresentei o NSIS com um exemplo bem tosco. Neste segundo post vamos ver como deixar parte da instalação opcional, como criar shortcuts e como criar um desinstalador.

Para ter trechos opcionais na instalação, basta incluir a página components e definir várias seções:

#
# Segundo exemplo de uso do NSIS
#

LoadLanguageFile "${NSISDIR}\Contrib\Language files\PortugueseBR.nlf"
Name "Calculadora"
OutFile "InstCalc.exe"
InstallDir "$PROGRAMFILES\Calc"

Page directory
Page components
Page instfiles

Section "-Obrigatoria"
SetOutPath $INSTDIR
File "c:\windows\system32\calc.exe"
SectionEnd

Section "Atalho no Menu Iniciar"
CreateShortCut "$SMPROGRAMS\Calculadora.lnk" "$INSTDIR\calc.exe"
SectionEnd

Section "Atalho no Desktop"
CreateShortCut "$DESKTOP\Calculadora.lnk" "$INSTDIR\calc.exe" "" "$INSTDIR\calc.exe" 0
SectionEnd
O resultado é a inclusão de uma nova página após a seleção do diretório:


Neste exemplo, podemos ver também o comando CreateShortCut. Este comando tem a seguinte sintaxe básica:

CreateShortCut arq-lnk destino parametros arquivo-com-icone indice-do-icone

Por exemplo, para criar o atalho no desktop criamos um link chamado Calculadora.lnk no diretório $Desktop apontando para o arquivo Calc.exe no diretório de instalação. O ícone para o atalho é o de índice 0 no arquivo Calc.exe.

Para fechar a "lição" de hoje, vamos ver como acrescentar um desinstalador. O desinstalador no NSIS corresponde a uma SECTION de nome Uninstall. Ele pode ter algumas páginas, definidas por UninstPage. O desinstalador é gerado no momento da instalação, pois precisa se referir ao diretório que o usuário escolheu para a instalação. Isto é feito pelo comando WriteUninstaller. Para desinstalar são úteis os comandos RMDir e Delete.
#
# Terceiro exemplo de uso do NSIS
#

LoadLanguageFile "${NSISDIR}\Contrib\Language files\PortugueseBR.nlf"
Name "Calculadora"
OutFile "InstCalc.exe"
InstallDir "$PROGRAMFILES\Calc"
InstallDirRegKey HKLM "Software\NSIS_Exemplo3" "Install_Dir"

;--------------------------------
; Instalador

Page directory
Page components
Page instfiles

Section "-Obrigatoria"
SetOutPath $INSTDIR
File "c:\windows\system32\calc.exe"
WriteRegStr HKLM SOFTWARE\NSIS_Exemplo3 "Install_Dir" "$INSTDIR"
WriteUninstaller "uninstall.exe"
SectionEnd

Section "Atalhos no Menu Iniciar"
CreateDirectory "$SMPROGRAMS\Exemplo 3"
CreateShortCut "$SMPROGRAMS\Exemplo 3\Calculadora.lnk" "$INSTDIR\calc.exe"
CreateShortCut "$SMPROGRAMS\Exemplo 3\Remove.lnk" "$INSTDIR\uninstall.exe"
SectionEnd

Section "Atalho no Desktop"
CreateShortCut "$DESKTOP\Calculadora.lnk" "$INSTDIR\calc.exe" "" "$INSTDIR\calc.exe" 0
SectionEnd

;--------------------------------
; Desinstalador

UninstPage uninstConfirm
UninstPage instfiles

Section "Uninstall"
Delete "$INSTDIR\*.*"
RMDir "$INSTDIR"
Delete "$SMPROGRAMS\Exemplo 3\*.*"
RMDir "$SMPROGRAMS\Exemplo 3"
Delete "$DESKTOP\Calculadora.lnk"
DeleteRegKey HKLM SOFTWARE\NSIS_Exemplo3
SectionEnd

Neste exemplo, estamos montando uma estrutura mais sofisticada no Menu Iniciar. Além do atalho para executar a calculadore, temos um atalho para executar o desinstalador e ambos ficam dentro de uma pasta. O desinstalador cuida de apagar tudo isto.


Aproveitei para colocar também dois comandos de manipulação do registry: WriteRegStr e DeleteRegKey.

O Windows possui uma série de convenções para anotar no registry o desinstalador, para que ele seja apresentado no Painel de Controle, em Add/Remove Programs. Veremos mais detalhes sobre isto no próximo post.

3 comentários:

Anônimo disse...

Você sabe o comando pra executa automatiamente.

Posta ai mano.

Daniel Quadros disse...

Supondo que o desejado seja colocar o programa no folder Startup do Start Menu, basta fazer algo como

Section "Início Automático"

CreateShortCut "$SMSTARTUP\Calculadora.lnk" "$INSTDIR\Calc.exe" "" "$INSTDIR\Calc.exe" 0

Section End

Anônimo disse...

eu abaixei o jogo devil may cry 3 rip e eu queria que vcs me ensinasem a cria a instalapara ir nesse local C:\Arquivos de programas\Capcom , e tambem que le ja adicionasse um atlho do jogo na area de trabalho tem como vcs me ajudaem