¿Cuál instalador para Windows es mejor?
He estado actualizando Saeta un programa que permite distribuir archivos a una lista de correos. El mismo se encuentra disponible en mi sitio de productos y servicios macronosis.com.
Algo que nunca le había agregado es un instalador, actualmente solamente se puede descargar un .zip. El instalador tiene la ventaja de que permite instalar el programa siguiendo las mejores prácticas para Windows, ofrece la instalación en la carpeta de programas, la opción para desinstalar, soporte multilenguage en el instalador, etc.
Yo tenía un instalador hace décadas que venía con Borland (el compilador de C/C++) pero ni se me ocurrió buscarlo porque seguramente está desactualizado.
Así que me fuí a google e hice mi primera pregunta: “which windows installer is the best?”. Eso no arrojó buenos resultados, la mitad era propaganda y el único resultado de stackoverflow era una respuesta “cerrada” que no tenía buenas respuestas, según mi parecer.
Al final de leer un poco me pareció que las opciones eran las siguientes:
NSIS, ofrece todo lo que se necesita para generar un .exe. El problema es que luego de 30 minutos descubres que estás aprendiendo un nuevo lenguaje (algunos dicen que es casi assembler), y comienzan a aparecer muchas preguntas: ¿cómo manejo el tema de las versiones? ¿dónde se definen ese poco de variables? ¿$INSTDIR? ¿pero acabo de definir arriba InstallDir?
wix es una solución empresarial, produce instaladores tipo .msi que es lo más cercano a Microsoft que se puede estar. Todo el mundo dice que la curva de aprendizaje es algo fuerte. Paso.
InnoSetup, es del estilo NSIS, pero el lenguaje de definición es más parecido a un .ini file. Si quieres customizar más tu paquete de instalación puedes hacerlo con un lenguaje parecido a Pascal, pero la buena noticia es que para un instalador sencillito no necesitas codificar ni aprender gran cosa. Varios puntos a favor aquí.
Otro detalle con InnoSetup es el primer ejemplo que aparece en la sección de ejemplos:
[Setup]
AppName=My Program
AppVersion=1.5
Listo ahí está cómo se manejan las versiones, no hay variables indefinidas, no tengo que leer el manual (me estoy ahorrando tiempo y confusión). Además, cuando regresé a google porque en el manual de NSIS aparece una sección de preguntas de stackoverflow sobre instaladores, encontré esta respuesta que es sencillamente genial (se parece a la que yo encontré en google, pero esta es mejor, ¿por qué google no la muestra?)
Entre las respuestas está este comentario que es magistral:
Si quieres hacerlo antes del almuerzo, usa InnoSetup … en su lugar – de esta manera no necesitas usar un lenguaje de programación tipo ensamblador que es el que usa NSIS. – Roman Starkov
Eso es exactamente lo que quiero hacer, yo no quiero pasar mi tiempo buscando en un manual cómo se definen variables, o cómo se manejan las versiones, quiero un instalador sencillito que instale mi programa y que los usuarios lo puedan usar.
Así que mi voto es por InnoSetup.
Nota: puntos negativos para google, últimamente se está volviendo una ciencia arcana buscar cosas ahí. Es increíble: prueba varias combinaciones de “best windows installers stackoverflow” y la respuesta perfecta no sale en ninguna. Quizás lo de NSIS vs Wix lo echa a perder, pero, está raro. Sabemos que el algoritmo de google debe tomar en cuenta que cuando un usuario está buscando un tema y deja de buscar probablemente la última busqueda le dió el resultado correcto. Se supone. No sé, creo yo.
Nota 2: se puede crear una instalador con cero conocimientos de InnoSetup en cuestión de 45 minutos, incluyendo cosas básicas como instalar en una carpeta específica (por defecto guarda el instalador en la carpeta de documentos).