i4j asistente deployment package installation platform

deployment - asistente - download izpack



¿Qué hace realmente una "instalación" estándar? (6)

Soy solo un programador aficionado, más o menos, y he crecido en cuanto a codificación en el mundo .NET ClickOnce.

Cuando uno "instala" un programa, ¿qué sucede realmente?

También: Algunas aplicaciones / herramientas pequeñas solo se ejecutan desde el exe. ¿Por qué la mayoría de los programas necesitan un proceso de instalación sofisticado? ¿Cuáles son las ventajas, desventajas, pros y contras? ¿La instalación es usualmente necesaria o más como una práctica estándar?

Disculpas por las preguntas adicionales. Solo espero una explicación más o menos sencilla de los factores clave por parte de un lego simple en inglés.


Depende del programa que estés instalando. Una "instalación" puede abarcar desde copiar simplemente el ejecutable (relativamente pequeño) a un directorio, hasta configurar bibliotecas compartidas, realizar comprobaciones de nivel de parches (estoy diseñado para ejecutarse en SP2 o superior, ¿tengo SP2 o superior?) Y cambiar la Configuración de sistemas, ya sea para el usuario actual o para todos los usuarios. La mayoría de ellos también registran la instalación con un administrador de paquetes para que pueda desinstalarlos fácilmente en un momento posterior.


El programa intenta modificar la computadora de tal manera que funcione y todos los productos de la competencia fallen. En Windows, esto significa:

  • Modificación de claves arbitrarias en el registro hasta que se vuelva lento y lleno de entradas rotas
  • Reemplazo de DLL con la única versión antigua que su software puede usar
  • Difundiendo tantos archivos en tantos lugares como sea posible
  • Creando un script de desinstalación para mantener la ilusión de que el usuario puede deshacerse del software sin volver a instalar el sistema operativo. En el improbable caso de que el usuario intente ejecutar este script, puede educarlo para que no vuelva a hacer esto nuevamente con preguntas como "El archivo ... podría ser usado por otras aplicaciones. ¿Realmente desea eliminarlo? Sí / No / Tal vez / Cualquier respuesta / Todas las respuestas son correctas "
  • Instalar ganchos en lugares oscuros para que su software se ejecute cuando la computadora arranca. Eso puede ralentizar el proceso de arranque, pero su software se iniciará en un instante, por lo que es un pequeño precio a pagar ... por usted.
  • Hacer cosas oscuras que llevan mucho tiempo pero nadie puede decir lo que haces (¿qué hace "la configuración está preparando la instalación" durante 15 minutos?)
  • Verifique si hay suficiente espacio en el disco pero use enteros de 32 bits para asegurarse de que no se pueda instalar en discos de 1 TB.
  • Una tarea importante es fallar con la instalación e imprimir el error: "Falló la instalación. Esto podría deberse a que hay un software antivirus instalado. Desactívelo e inténtelo de nuevo". Esto asegurará que los usuarios comiencen a desconfiar de su antivirus (especialmente cuando la instalación se realice correctamente durante la segunda ejecución, ya que no se activaron los errores ocultos en el instalador) y muchos de ellos se olvidarán de habilitar nuevamente el escáner de virus o Incluso desinstalar la maldita cosa.

    ¡Los autores de virus en todo el mundo también son personas! El spam compensa la mayor parte del tráfico en Internet, lo que debe significar que es importante y ¿quién no querría ser parte de la comunidad más grande del mundo? Además de eso, puedes ganar mucho dinero de esta manera. Todo lo que necesitas es una conciencia débil y / o algo de energía criminal.

  • Una parte muy importante de su instalador es aumentar la clave de registro HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Installer/UserData/S-7-9-23-64738-1349283462-3754093625-4491/IsYourWindowWideEnough/NotGivenUpYetHuh/GoAway/ImportantSystemInformation/Let See How You Can Handle Spaces/DamnIGottaStopSincePathsCanHaveOnl/ReinstalCtr

    Este importante contador del sistema ayudará a crear la ilusión de inestabilidad para el usuario hasta que sienta una fuerte necesidad de reinstalar todo el sistema. Esto ayudará a la industria de TI profesional a vender horas de soporte, vender nuevas computadoras, más RAM, discos duros más grandes o nuevas versiones de Windows ( deben ser mejores, ¿no?).

Nota: Si tomas este texto en serio, busca ayuda profesional.


Las razones para usar un proceso de instalación "elegante"

  1. para registrar el proceso de instalación para que se pueda reproducir (reparar) o deshacer (desinstalar)
  2. para realizar acciones más allá de la copia simple de archivos (crear claves de registro, registrar componentes, realizar otras acciones arbitrarias)

La opción "estándar" en la mayoría de las instalaciones será "todos los bits que normalmente se desean, en una ubicación estándar, como la instalación de Archivos de programa sin personalización, posiblemente sin algunas funciones habilitadas para expertos.


Realmente estás viendo un montón de razones heredadas que se han convertido en una práctica estándar en el mundo de Windows.

Primero, un poco de contraste, porque no siempre es así. Una "aplicación" en Mac OS X es simplemente un directorio con una cierta estructura dentro de ella, nombrada con una extensión .app . Instalar una aplicación es tan simple como arrastrarla (solo el ícono de la aplicación) a su carpeta de aplicaciones, y la desinstalación implica arrastrarla a la papelera. Eso es todo, ningún instalador sofisticado es (generalmente) necesario.

En Windows, las aplicaciones normalmente se crean a partir de componentes independientes que deben estar "registrados". Esto implica que el programa de instalación escriba algunos bits y piezas en el registro de Windows para indicar a Windows dónde encontrar los componentes. Sí, la aplicación probablemente debería saber dónde encontrarlos (ya que todos están instalados en el mismo lugar), pero años de legado y diferentes formas de conectar componentes nos han llevado a donde estamos hoy.

Normalmente, un programa de instalación en Windows:

  • copia archivos
  • registra componentes
  • establece permisos de seguridad (si corresponde)
  • agrega iconos al menú de Inicio y / o al escritorio
  • escribe más cosas en el registro para decirle a Windows que agregue el programa a "Agregar y quitar programas"

Un instalador abstrae el proceso de implementación de piezas complejas de infraestructura de software , que generalmente está contenida dentro de un archivo, a través de una interfaz de usuario conveniente y autosuficiente .

Esta IU puede ser gráfica o basada en el texto que se genera en una línea de comandos como el shell de Unix (por ejemplo, bash). En el caso de instaladores gráficos, la mayoría de las veces se utiliza un llamado bootstrapper de instalación, en este último caso, scripts de instalación que pueden ser bash-scripts, scripts de lotes de Microsoft u otro lenguaje de scripts que se ejecute en una línea de comandos.

En el caso más simple, una aplicación es simplemente un archivo ejecutable, con el sistema operativo que sabe qué hacer con el archivo para ejecutarlo. El archivo de la aplicación puede residir en una carpeta con subcarpetas y otros archivos auxiliares, empaquetados en un archivo . En este caso ningún instalador puede ser necesario.

Para software complejo , plataformas de software completas y una estrecha integración con la infraestructura del sistema operativo subyacente pueden ser deseables, por ejemplo, para hacer cumplir los derechos de autor de un producto de software.

Muchos instaladores en Windows proporcionan una /e /extract . por ejemplo, setup.exe /e para permitir la extracción del contenido del archivo comprimido sin que el instalador ejecute su script de instalación. Hace poco necesité hacer that .

Cambios en la mentalidad

Los instaladores casi se han convertido en una norma para entregar software profesional, sin importar cuán simples sean los activos de software subyacentes. Con un número cada vez mayor de usuarios informáticos y el deseo de migrar las aplicaciones de una computadora de escritorio a la siguiente, el software portátil , que a menudo se entrega en un archivo simple, se está volviendo cada vez más popular.

(No sé cuánto tiempo en total he dedicado a los instaladores, pero definitivamente es del orden de días).

Las tareas que el instalador puede manejar son:

  • Desembalaje
  • asegurando los requisitos de hardware del sistema
  • asegurando suficiente espacio en el disco duro
  • Asegurar los requisitos de tiempo de ejecución de la plataforma de software (por ejemplo, ''redistribuibles'')
  • buscando nuevas actualizaciones de software
  • descargando el software desde un repositorio remoto
  • Creación y / o actualización de archivos y carpetas de programas.
  • Crea archivos de configuración, entradas de registro o variables de entorno.
  • Instalar controladores de software, montar o desmontar dispositivos
  • aumente la accesibilidad para los usuarios cotidianos, explicando los pasos de instalación, creando enlaces, accesos directos
  • Promover el propio software a través de marcadores, etc ...
  • cree un incentivo para que el usuario inicie realmente el software, presentando los puntos clave del software durante la instalación, diapositiva a diapositiva
  • crear ingresos adicionales, a través de paquetes de software
  • configure los módulos del kernel y ejecute automáticamente los componentes (por ejemplo, demonios, servicios de Windows)
  • parcheo automático del software
  • Configuración de permisos de carpeta, archivo y usuario.
  • crear referencias de UUID para unir el software a una instancia de instalación y evitar la portabilidad

PD: Si puedes pensar en otros puntos, házmelo saber y los incorporaré.


Wikipedia nos dice que un instalador típico crea o modifica lo siguiente:

  • Archivos de programa compartidos y no compartidos
  • Carpetas / directorios
  • Entradas de registro de Windows (solo Windows)
  • Entradas del archivo de configuración
  • Variables de entorno
  • Enlaces o atajos

Entonces, si su programa necesita una o más de estas modificaciones, debe crear un instalador que haga ese trabajo.