Vamos a programar #23 - Haciendo un instalador en NSIS #2 - Datos utiles.

Hola de nuevo a todos, el día de hoy vamos a continuar con el tema de los instaladores, en el post anterior vimos lo básico de como escribir el código en NSIS. Hoy veremos unas cuantas cosas que nos ayudaran a hacer un instalador más detallado.

Tip #1 - El Desintalador.

Cuando escribimos el instalador, lo primero que nos debemos de preguntar, es si el usuario no va a cambiar de opinión, si en algun momento decide ya no usar la aplicación, querrá borrarla de su computadora. Y para esto, recurrirá al des-instalador. La manera más sencilla de hacerlo, es mediante el panel de control.
Si observamos bien, vemos que hay una entrada a nuestro des-instalador, pero no sabemos nada más.
Para poder identificar de manera más precisa cual es nuestro programa debemos de incluir información que se encargue de esa tarea.
Este es un ejeplo de un programa que muestra información que puede ser de ayuda para el usuario.
Entre los detalles más importantes que debemos de incluir, están los siguiente:
  • Nombre que identifique al des-instalador.
  • Ruta en la que se encuentra.
  • Nombre del publicador.
  • Icono.
  • Tamaño de la instalación.
  • Versión del programa.
  • Vinculo a la página del creador del programa.
  • Vinculo de ayuda del programa.
Para poder hacerlo, necesitamos agregar algunas entradas al registro. Windows tiene una seccion dedicada a los instaladores, y ademas a definido una serie de entradas por default. si incluimos la informacion de estás, windows la mostrará, si no lo hacemos, el instalador aparecerá cómo en la primer imagen; sin información.
Sabiendo lo anterior, en NSIS podemos escribir claves en el registro durante el proceso de instalación. Para agregar la información que requerimos podemos agregar código como el siguiente:

WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Vencoder" "DisplayName" "Vencoder 2.0"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\VEncoder" "UninstallString" '"$INSTDIR\uninstall.exe"'
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\VEncoder" "Publisher" "MDev 2015"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\VEncoder" "DisplayIcon" "$INSTDIR\Main.ico"
${GetSize} "$INSTDIR" "/M=*.* /S=0K " $0 $1 $2
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\VEncoder" "EstimatedSize" "$0"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\VEncoder" "DisplayVersion" "2.1" 
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\VEncoder" "URLInfoAbout" "http://xworkforall.blogspot.com"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\VEncoder" "HelpLink" "http://xworkforall.blogspot.com/2016/07/el-video-correcto-2.html"
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\VEncoder" "NoModify" 1
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\VEncoder" "NoRepair" 1


Las lineas de código scriben entradas en el registro de Windows la instruccion "WriteRegStr" escribe un valor de cadena (texto por lo general), la instruccion WriteRegDWORD, escribe un valor DWORD.
En orden de aparicion, las lineas del código anterior se usan para representar la siguiente información:

  1. Nombre que se mostrara en la entrada al des-instalador.
  2. Ruta en la que se encuentra el des-instalador, siempre debe de ir entre comillas.
  3. Información del publicador (empresa).
  4. Icono que se usara para mostrarse en la lista de programas.
  5. ${GetSize} Es una función de NSIS que se usa para obtener el tamaño de un folder o archivo. Está la veremos con mayor detalle un poco más adelante, pero en este caso se usa para obtener el tamaño de la instalación. Para que funcione es importante que previamente ya se hayan copiado todos los archivos a la carpeta de instalación.
  6. Cuando ya obtuvimos el tamaño de la instalación; está función escribe esa información. Para que funcione, el tamaño debe de estar en KiloBytes.
  7. Muestra la versión del programa.
  8. Vinculo a una dirección de internet "Acerca de".
  9. Vinculo a una dirección con ayuda para el programa.
  10. Cuando NO se tiene la opcion de modificar los componente ya instalados.
  11. Cuando NO se tiene la opcion de reparar la instalacion.
Para que des-instalador funcione, minimamente se deben de escribir las entradas "DisplayName" y "UninstallString", de ahí en fuera las otras son totalmente opcionales, pero siempre es recomendable incluir al menos todas las anteriores para tener el mínimo de información necesaria.

Al escribir todas las entradas anteriores, cuando vayamos a la seccion de des-instalar programas, nuestra aplicación tendrá el siguiente aspecto:

Y bien, es todo por hoy, en el siguiente post veremos cómo asociar una extensión con nuestro programa, recuerda que el código de este post lo puedes bajar de mi dropbox, viene con un ejemplo de un instalador para VEncoder 2.

P.D Hay que adaptar el código de VEncoder para funcionar desde "Program Files", ya que cuando se usa desde está ruta, requiere  de algunos cambios.

Los leo luego.

No hay comentarios.