Pregunta

Solo soy un programador aficionado más o menos y he crecido en codificación en el mundo de .NET ClickOnce.

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

También: Algunas pequeñas aplicaciones / herramientas simplemente 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 amp; ¿contras? ¿Es la instalación generalmente necesaria o más como una práctica estándar?

Disculpas por las preguntas adicionales. Solo espero una explicación más o menos simple de los factores clave.

¿Fue útil?

Solución

Realmente estás viendo muchas razones heredadas, todo incluido en lo que se ha convertido en una práctica estándar en el mundo de Windows.

Primero, algo de contraste, porque no siempre es así. Una " solicitud " en Mac OS X es simplemente un directorio con una cierta estructura dentro de él, nombrado 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 desinstalarla implica arrastrarla a la papelera. Eso es todo, no es necesario (generalmente) un instalador sofisticado.

En Windows, las aplicaciones generalmente se crean a partir de componentes independientes que deben estar "registrados". Esto implica que el programa instalador escriba algunos fragmentos en el registro de Windows, para indicarle 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ú Inicio y / o escritorio
  • escribe más cosas en el registro para indicarle a Windows que agregue el programa a "Agregar y quitar programas"

Otros consejos

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

  • Modificación de claves arbitrarias en el registro hasta que se vuelva lento y lleno de entradas rotas
  • Reemplazar DLL por la versión antigua única que su software puede usar
  • Distribuir tantos archivos en tantos lugares como sea posible
  • Crear una secuencia de comandos de desinstalación para mantener la ilusión de que el usuario puede deshacerse del software sin reinstalar el sistema operativo. En el caso poco probable de que el usuario intente ejecutar este script, puede educarlo para que no vuelva a hacerlo con preguntas como "El archivo ... podría ser utilizado por otras aplicaciones". ¿Realmente quieres eliminarlo? Sí / No / Quizás / Cualquier respuesta / Todas las respuestas son correctas "
  • Instalar ganchos en lugares oscuros para que su software se ejecute cuando la computadora se inicia. 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 instalación está preparando la instalación " hace 15 minutos?)
  • Comprobando si hay suficiente espacio en el disco pero usa enteros de 32 bits para asegurarse de que no se pueda instalar en discos de 1TB.
  • Una tarea importante es fallar con la instalación e imprimir el error: " Falló la instalación. Esto puede deberse a que hay un software antivirus instalado. Desactívelo e intente nuevamente. Esto asegurará que los usuarios comenzarán a desconfiar de su antivirus (especialmente cuando la instalación se realiza correctamente durante la segunda ejecución, ya que no se activaron los errores oscuros en el instalador) y muchos de ellos olvidarán habilitar el escáner de virus nuevamente 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 Vea cómo puede manejar espacios \ 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, ¿verdad?

Nota: Si se toma en serio este texto, busque ayuda profesional.

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

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

El " estándar " la opción en la mayoría de las instalaciones será "todos los bits que generalmente se desean, en una ubicación estándar, como Archivos de programa" instalar sin personalización, posiblemente sin algunas funciones de nivel experto habilitadas.

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 accesos directos

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

Depende del programa que esté instalando. Una " Instalación " puede ir desde simplemente copiar el ejecutable (relativamente pequeño) a un directorio, hasta configurar bibliotecas compartidas, hacer revisiones de nivel de parche (estoy diseñado para ejecutarse en SP2 o superior, ¿tengo SP2 o superior?) y cambiar la configuración del sistema, 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 desinstalar fácilmente en un momento posterior.

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

Esta interfaz de usuario puede ser gráfica o estar basada en texto que se emite en una línea de comando como el shell de Unix (por ejemplo, bash). En el caso de los instaladores gráficos, la mayoría de las veces se utiliza el llamado bootstrapper de instalación, en este último caso, los scripts de instalación que pueden ser bash-scripts, scripts por lotes de Microsoft u otro lenguaje de scripts que se ejecuta 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, no se necesitará ningún instalador.

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

Muchos instaladores en Windows proporcionan una bandera / e o / extract . p.ej. setup.exe / e para permitir la extracción del contenido del archivo sin que el instalador ejecute su script de instalación. Recientemente necesitaba hacer eso .

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 expertos en informática y el deseo de migrar las aplicaciones de un escritorio a otro, el software portátil , a menudo entregado 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 está en el orden de los días).

Las tareas que el instalador puede manejar son:

  • desempaquetado (a menudo utilizando archivadores exóticos de alta compresión)
  • garantizar los requisitos de hardware del sistema
  • garantizar suficiente espacio en el disco duro
  • garantizar los requisitos de tiempo de ejecución de la plataforma de software (por ejemplo, 'redistribuibles')
  • buscando actualizaciones de software más nuevas
  • descargando el software desde un repositorio remoto
  • crear y / o actualizar archivos y carpetas de programas
  • crear archivos de configuración, entradas de registro o variables de entorno
  • instale controladores de software, monte o desmonte dispositivos
  • aumentar la accesibilidad para los usuarios cotidianos, explicando los pasos de instalación, creando enlaces, accesos directos
  • promueve el propio software a través de marcadores, etc. ...
  • crea un incentivo para que el usuario inicie realmente el software, presentando los puntos clave del software durante la instalación, diapositiva por diapositiva
  • crear ingresos adicionales, a través de la agrupación de software
  • configurar módulos de kernel y componentes que se ejecutan automáticamente (por ejemplo, demonios, servicios de Windows)
  • parcheo automático del software
  • configuración de carpeta, archivo y permisos de usuario
  • crear referencias de UUID para acoplar el software a una instancia de instalación y evitar la portabilidad

PD: Si puedes pensar en otros puntos, avísame y los incorporaré.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top