Isto é muito simples: basta o instalador gravar as informações corretos no Registry, sob a chave HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall, e desinstalador apagá-las. É necessário alguns cuidados, para não acontecerem algumas coisas inesperadas ou incorretas.
Infelizmente, não consegui encontrar a documentação destas chaves do Registry (o link em um dos artigos mencionados acima está quebrado). O mais próximo que encontrei foi uma descrição no contexto do Windows Installer. De qualquer forma, aqui vai um resumo incompleto:
- você precisa criar uma chave com nome único debaixo do HLM\...\Uninstall. Você pode usar o nome do seu programa, um GUID ou um misto dos dois.
- Dentro desta chave você vai criar alguns valores; DisplayName e UninstallPath são obrigatórios.
- DisplayName é o nome da aplicação apresentado no Add Remove Programs.
- UninstallPath é o caminho para o programa de desinstalação.
- DisplayIcon informa onde obter o ícone
- DisplayVersion informa a versão do programa
- Publisher é que publica o programa
- UrlInfoAbout indica o site do publisher
#
# Quarto 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"
Var ChaveUninstall
;--------------------------------
; Instalador
Page directory
Page components
Page instfiles
Section "-Obrigatoria"
StrCpy $ChaveUninstall "Software\Microsoft\Windows\CurrentVersion\Uninstall\DQSoft_Calc"
SetOutPath $INSTDIR
File "c:\windows\system32\calc.exe"
WriteRegStr HKLM SOFTWARE\NSIS_Exemplo3 "Install_Dir" "$INSTDIR"
WriteUninstaller "uninstall.exe"
WriteRegStr HKLM $ChaveUninstall "DisplayName" "Calculadora (remoção)"
WriteRegStr HKLM $ChaveUninstall "UninstallString" '"$INSTDIR\uninstall.exe"'
WriteRegStr HKLM $ChaveUninstall "DisplayIcon" '"$INSTDIR\calc.exe"'
WriteRegStr HKLM $ChaveUninstall "DisplayVersion" "1.0.0"
WriteRegStr HKLM $ChaveUninstall "Publisher" "DQSoft"
WriteRegStr HKLM $ChaveUninstall "UrlInfoAbout" "http://dqsoft.blogspot.com"
SectionEnd
Section "Atalhos no Menu Iniciar"
CreateDirectory "$SMPROGRAMS\Exemplo 4"
CreateShortCut "$SMPROGRAMS\Exemplo 4\Calculadora.lnk" "$INSTDIR\calc.exe"
CreateShortCut "$SMPROGRAMS\Exemplo 4\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"
StrCpy $ChaveUninstall "Software\Microsoft\Windows\CurrentVersion\Uninstall\DQSoft_Calc"
Delete "$INSTDIR\*.*"
RMDir "$INSTDIR"
Delete "$SMPROGRAMS\Exemplo 4\*.*"
RMDir "$SMPROGRAMS\Exemplo 4"
Delete "$DESKTOP\Calculadora.lnk"
DeleteRegKey HKLM SOFTWARE\NSIS_Exemplo3
DeleteRegKey HKLM $ChaveUninstall
SectionEnd
Para não ter que ficar repetindo o monstrengo do nome da chave, usei uma variável (ChaveInstall); de resto são comandos que já vimos na parte anterior. A operação do instalador continua a mesma, porém seus efeitos são um pouco diferentes.
Se olharmos no Registry, veremos as chaves de remoção (clique para ampliar):
O nosso programa passa a aparecer no Add Remove Programs (clique para ampliar):
ese clicarmos no link "click here for support information":
Após a desinstalação tudo isto some.
No próximo post vamos deixar para traz a aparência antiquada do nosso instaldor e ver a Moderm User Interface. Até lá!
Nenhum comentário:
Postar um comentário