¿Diferencia entre un archivo ejecutable independiente y un ejecutable instalado?

¿Diferencia entre un archivo ejecutable independiente y un ejecutable instalado?

He notado que en Windows, al menos, puedes descargar un archivo ejecutable directo vinculado estáticamente y ejecutarlo directamente, o escribir tu propio programa y ejecutarlo (incluso dinámicamente) sin tener que instalarlo.

Eso me lleva al punto principal... ¿cuál es el propósito del proceso de instalación? Quiero decir además tal vez elRegistro de Windows. Sin embargo, por motivos prácticos y de uso, es posible tener un programa único, independiente y autónomo que pueda ejecutarse, almacenarse en un almacenamiento no volátil y acceder a través del sistema de archivos de cualquier dispositivo en el que se encuentre, y ejecutarse en el sistema operativo. Entonces, ¿cuál es el problema con todo este asunto de "instalar esto" si muchos programas excelentes de prácticamente cualquier magnitud pueden funcionar perfectamente sin pasar por una configuración de instalación? Me desconcierta un poco, y aparte de una base de datos u otros metadatos/sistemas de configuración de acceso, ¿cuál es la diferencia real aquí si este último (un ejecutable instalado) funciona y funciona de la misma manera que uno independiente?

¿Existe alguna diferencia que desconozco entre un programa no instalado y uno instalado?

PD: Esto no sólo tiene que aplicarse a los sistemas operativos Windows, sino a cualquiera que implemente una función similar.

Respuesta1

Hay varias razones por las que los programas vienen como instaladores en lugar de ejecutables independientes:

Preocupaciones sobre el tamaño del archivo

  • Los programas con muchas dependencias grandes pueden agrupar instaladores basados ​​en web que descargan las dependencias y las colocan en una ubicación común, para que puedan ser compartidas por múltiples programas. Por ejemplo, DirectX es una biblioteca muy grande. Si cada programa de su sistema que depende de DirectX simplemente incluyera todo el tiempo de ejecución de DirectX, consumiría una buena cantidad de espacio. Puede que esto no parezca importar en la era de los discos duros de 4 TB, pero considere que los SSD tienen una capacidad mucho menor y se están volviendo de uso común en los ultrabooks, algunos con tan solo 64 GB de almacenamiento. Y, por supuesto, existen muchas otras bibliotecas compartidas además de DirectX.

  • Los programas que son muy grandes y se actualizan continuamente se distribuyen mejor como una colección de muchos archivos pequeños, junto con un programa iniciador o actualizador que busca actualizaciones en Internet y, si existe alguna, solo descarga los cambios necesarios. Si todos los programas grandes se enviaran como un único ejecutable monolítico, es muy probable que el proceso de parche requiera volver a descargar el ejecutable completo, ya que parchear el archivo ejecutable en ejecución en el disco es casi imposible debido a los bloqueos de archivos. Además, debido a que el actualizador necesita saber dónde están sus archivos, a menudo almacena la ruta del directorio en una ubicación conocida del registro.

Preocupaciones por la conveniencia del usuario

  • Los instaladores de programas muy grandes, como Visual Studio y Microsoft Office, permiten al usuario anular la selección de la instalación de ciertas funciones, si sabe que nunca las necesitará. Esto tiene 3 beneficios potenciales: reduce el consumo de espacio en disco; puede reducir el tiempo de descarga y el consumo de ancho de banda si el instalador es un descargador web; y puede reducir el "desorden" y la "saturación" en la máquina del usuario, menos accesos directos al menú de inicio/escritorio, menos programas de inicio, etc.

  • Los instaladores de programas complicados a menudo vienen con opciones de configuración que el usuario puede configurar mediante una interfaz gráfica fácil de usar como parte del instalador. Vea, por ejemplo, los instaladores de MySQL o SQL Server, que pueden guiarlo a través de todo el proceso para poner en funcionamiento su servidor de base de datos incluso antes de hacer clic en "Finalizar" en el instalador.

  • Los instaladores pueden solicitar al usuario la información requerida, como claves de licencia, que solo deben ingresarse una vez. Esto puede simplificar el diseño del programa en sí y reducir la cantidad de cosas que tiene que hacer y verificar cuando se inicia. Esto también da como resultado que el usuario tenga confianza en que,una vezSi el programa se instala correctamente, debería "simplemente funcionar"; no hay más "errores" dentro del programa que puedan impedir que lo utilicen.

Preocupaciones de compatibilidad

  • Algunos programas entran en conflicto con otros programas. Este es un hecho simple y desafortunado de la ingeniería de software. Antes de instalar un programa que tiene conflictos conocidos con otros programas, suele ser útil comprobar primero el sistema para ver si hay instalado un programa incompatible. De ser así, se puede alertar al usuario. Por ejemplo, existe una incompatibilidad potencial muy peligrosa en versiones anteriores de VMware y VirtualBox, que provocaba una pantalla azul de la muerte, porque un programa intentaba utilizar una instrucción especial del procesador de virtualización después de que el otro producto ya la hubiera reservado para el usuario. . Si simplemente proporcionara el producto final al usuario sin un instalador, tendría que verificar la presencia de productos incompatibles encadainicio de su programa, lo que podría ralentizar el inicio del programa.

  • Los programas pueden tener dependencias de otros componentes del sistema que solo se pueden instalar a nivel de todo el sistema, no a nivel de usuario. Para instalar estos componentes especiales del sistema, generalmente se requieren privilegios administrativos y, por lo general, es necesario ejecutar un instalador.

Privilegios elevados y servicios especiales.

  • Algunos programas dependen de cambios en el sistema operativo para su funcionalidad, y estos cambios no se pueden implementar fácilmente sin algún tipo de instalador que se encargue de ellos con privilegios administrativos. Por ejemplo, los programas que instalan controladores o módulos del kernel, como Wireshark, no puedensimplementeejecutarse, porque es absolutamente necesario enviar los componentes en modo kernel en archivos separados. En el mejor de los casos, aún tendría que pedirle al usuario que descomprima manualmente un archivo y luego ejecute algún tipo de instalador para el controlador del dispositivo. Los servicios son otro ejemplo de algo que requiere privilegios administrativos para su instalación. El software de instalación es particularmente bueno para obtener derechos de administrador de una manera elegante, sin necesidad de que el programa principal solicite derechos de administrador cada vez que se ejecuta (esto sería una exposición de seguridad innecesaria en muchos casos).

Habiendo dado todas estas razones por las que los instaladores son útiles, aquí hay algunas observaciones desde el otro lado:

  • Muchos programas, incluso aquellos que sólo están disponibles para descargar como instalador que requiere privilegios de administrador, pueden "desempaquetarse" a la fuerza desde sus instaladores y ejecutarse directamente sin instalarlos. Otros programas, especialmente los de código abierto, se vuelven a empaquetar en ejecutables autónomos medianteAplicaciones portátiles. Es de destacar quealgunoLos programas, cuando se descomprimen de su instalador, tendrán una funcionalidad reducida, mostrarán errores u otros problemas.

  • En sistemas operativos distintos de Windows, casi siempre es posible simplemente descargar (o compilar) programas y ejecutarlos como un usuario normal, sin obtener root. Hay algunas excepciones con respecto a los paquetes que son una parte central del sistema operativo, pero para la mayoría de las aplicaciones de usuario, puede ejecutarlas en su directorio de inicio sin instalarlas en todo el sistema usando el administrador de paquetes. Windows es un caso un poco especial en el sentido de que la mayoría de los programas de escritorio de Windows tienen un instalador y, por lo general, no se pueden instalar de ninguna otra manera.

  • Incluso en plataformas que no son Windows, los programas que necesitan la capacidad de cargar un módulo del kernel vienen con algún tipo de instalador, que compila el módulo del kernel y lo instala en el directorio correcto. También puede esperar ver un instalador en caso de que el programa sea undemonioque se iniciará utilizando un script de servicio del sistema, por ejemplo, en /etc/init.d. Este tipo de "binario comprimido" es un método de distribución menos común en GNU/Linux, pero la mayoría de las distribuciones de Linux aún proporcionan la mayor parte del software en forma de paquetes instalables, cada uno de los cuales requiere acceso de root (acceso de administrador) para su instalación.


Conclusiones

Preguntaste por qué necesitamos instaladores. La respuesta corta es quenosotros no- no estrictamente hablando, al menos. Hay muy pocos ejemplos de aplicaciones queno puedo, en principio, incluirse en un único ejecutable autónomo sin recursos, sin instalador, etc. Incluso algo tan complicado como VMware Workstation podría obtener automáticamente privilegios de administrador, escribir el módulo del kernel del hipervisor en un archivo en el disco e instalarlo. dinámicamente al iniciar el programa y enviar todos sus recursos (imágenes, sonidos, etc.) incluidos dentro de la sección de datos del ejecutable.

Usar un instalador o no es unelecciónque los productores de software tienen que hacer. Existen ventajas y desventajas al utilizar un instalador. Muchos proveedores optan por distribuir su softwareamboscomo instalador,ycomo un binario independiente, o al menos como un archivo ZIP que simplemente se puede descomprimir y ejecutar. Para el software que no requiere absolutamente un instalador, esta es una forma muy pragmática de hacerlo y hace felices a todos. Por lo general, el software que no se envía de otra forma que no sea con un instalador es software que requiere privilegios administrativos para instalar algún componente de sí mismo, ya que el instalador es la forma más elegante de obtener los privilegios necesarios.

Personalmente, los instaladores los encuentro muy molestos en mi día a día, porque a veces quiero ejecutar un programa cuando no tengo derechos administrativos en la computadora que estoy usando. Tengo bastante experiencia descomprimiendo instaladores manualmente para extraer los archivos de programa que contienen y luego hacer que esos archivos se ejecuten correctamente. Sin embargo, en mi PC personal en casa, donde siempre tengo acceso administrativo, encuentro que los instaladores son beneficiosos y convenientes, porque la mayoría de los instaladores me brindan opciones útiles, como crear un acceso directo en el escritorio, que habría tenido que hacer manualmente sin él.

Respuesta2

El proceso de instalación considera estos elementos:

  1. si tiene instalada la biblioteca requerida (api), como la versión .net framework o direct X.

  2. Instale algunos archivos DLL adicionales del sistema en la carpeta del sistema. Si la carpeta del sistema ya contiene estos archivos (misma versión), ignore este paso. De esta manera no necesitarás varias copias de los mismos archivos DLL.

  3. Instale accesos directos en su menú Inicio o Escritorio para ayudarlo a iniciar la aplicación rápidamente.

  4. Como dijiste, modificación del registro. En realidad, este paso se puede realizar cuando la aplicación se ejecuta por primera vez en esta computadora, por lo que no es muy importante.

  5. muy importante: si desea incluir un software (como la barra de escritorio de Google o la barra de Yahoo! en su IE). Esta es la forma en que una gran cantidad de software independiente genera ingresos para el desarrollador. No lo olvides si estás utilizando software gratuito.

Debido a que estamos considerando una aplicación "ejecutable", no necesitamos discutir los pasos que pueden instalar un complemento de IE o cosas relacionadas.

Respuesta3

El programa independiente no tiene dependencias externas.

No tiene que ser solo un archivo .exe, puede tener bibliotecas y archivos de datos adjuntos: descomprima el archivo en una carpeta y ejecute el ejecutable. Si simplemente descomprime un archivo, no se agrega ningún acceso directo al menú Inicio, por lo que tendrá que navegar a la carpeta donde se encuentra la aplicación descomprimida e iniciarla desde allí, o crear manualmente un acceso directo en el menú Inicio. A muchos usuarios de ordenadores les resulta difícil.

Más fácil de usar

Un instalador guía a los usuarios a través del proceso de instalación. Descarga el instalador, .exe o .msi (el primero es preferible para usuarios no avanzados) y lo ejecuta. Selecciona la carpeta de instalación, generalmente en Program Files, copia los archivos y crea un acceso directo en el menú Inicio. Ya está: en la mayoría de los casos simplemente haga clic en Siguiente varias veces.

Luego vaya al menú Inicio y ejecute la aplicación. Algunos instaladores ofrecen una opción para iniciar la aplicación cuando se completa la instalación.

Si la aplicación abre archivos o documentos de cierto tipo, el instalador lo registra en el shell. Para que pueda hacer clic en el archivo para abrirlo.

Acuerdo de licencia

Muchas aplicaciones, tanto comerciales como gratuitas, requieren que usted acepte el acuerdo de licencia antes de poder utilizar su aplicación. La instalación no continúa hasta que usted reconozca que acepta los términos de la licencia. Incluso si no leyó la licencia, la aceptó.

Dependencias

A veces no basta con copiar los archivos ejecutables. Las aplicaciones suelen utilizar componentes compartidos o bibliotecas de tiempo de ejecución especiales. Por ejemplo, se debe instalar .Net framework runtime para ejecutar la aplicación escrita para .Net; incluso se debe instalar el tiempo de ejecución de Visual C++, si no está vinculado estáticamente. El instalador se encarga de garantizar que se cumplan todas las dependencias.

Si una aplicación consta de varios archivos .exe y/o .dll, el enlace dinámico al tiempo de ejecución de Visual C++ reduce el espacio en disco. Si .exe y .dll están vinculados estáticamente, entonces el tiempo de ejecución se duplica en todos y cada uno de los archivos.

Es posible que los términos de licencia de una biblioteca no permitan enlaces estáticos.

Seguridad

Si se encuentra una vulnerabilidad en el tiempo de ejecución, se puede actualizar por separado de la aplicación. Las actualizaciones de .Net y Visual C++ runtime se instalan automáticamente a través de Windows Update.

Si los ejecutables y las bibliotecas están vinculados estáticamente, entonces el proveedor de la aplicación debe volver a compilar la aplicación y publicar la versión actualizada. Por lo tanto, el uso de tiempo de ejecución compartido reduce el costo de mantenimiento de aplicaciones para desarrolladores y proveedores.

La instalación Program Filestambién proporciona un entorno más seguro: los archivos allí no se pueden modificar ni eliminar sin privilegios de administrador.

Registro

Muchas aplicaciones de Windows dependen de entradas del registro. Si la aplicación utiliza COM, todos los objetos deben registrarse; de ​​lo contrario, la aplicación no podrá crear el objeto necesario y no se iniciará.

Respuesta4

Respuesta breve: un archivo ejecutable independiente no requiere que se instalen bibliotecas en la computadora para ejecutarse y no requiere entradas de registro ni otros componentes.

Un archivo instaladopoderPuede ser independiente en un paquete de instalación, pero generalmente depende de una variedad de componentes y bibliotecas instaladas junto con él.

En muchos casos, a través deextractores universales(actualización no oficial:aquí), puede extraer el contenido de un instalador y ejecutar un programa sin privilegios administrativos en Windows. Los instaladores MSI se pueden descomprimir conmenosmsi.

En la mayoría de los demás sistemas operativos, todos los programas se pueden ejecutar sin privilegios de root/administrador, a través de directorios 'bin', 'lib' y otros directorios específicos del usuario en el directorio de inicio. Personalmente, desprecio a los instaladores la mayor parte del tiempo, porque me dificultan el uso de programas sin privilegios administrativos cuando no los tengo. Pero las grandes empresas los empaquetan de esa manera para simplificar el proceso para el usuario final promedio.

información relacionada