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


17

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

Eso me lleva a mi punto principal ... ¿cuál es el propósito del proceso de instalación? Me refiero además de quizás el Registro de Windows . Sin embargo, para fines prácticos y de uso, es posible tener un programa único, independiente y autónomo que se pueda ejecutar, almacenar en un almacenamiento no volátil y acceder a través del sistema de archivos de cualquier dispositivo en el que se encuentre y que se ejecute en el sistema operativo. Entonces, ¿cuál es el problema con todo este "instalar este" negocio 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 sistemas de configuración de metadatos / acceso, ¿cuál es la verdadera diferencia aquí si este último (un ejecutable instalado) funciona y funciona de la misma manera que un sistema independiente?

¿Hay alguna diferencia aquí que desconozco con un programa no instalado versus uno instalado?

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

Respuestas:


16

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

Problemas de tamaño de archivo

  • Los programas con muchas dependencias grandes pueden agrupar instaladores basados ​​en la 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 en su sistema que depende de DirectX simplemente incluye todo el tiempo de ejecución de DirectX, consumiría una buena cantidad de espacio. Puede parecer que esto no importa en la edad de los discos duros de 4 TB, pero tenga en cuenta que las unidades SSD tienen una capacidad bastante menor y se están volviendo de uso común en las ultrabooks, algunas con tan solo 64 GB de almacenamiento. Y, por supuesto, hay muchas otras bibliotecas compartidas aparte 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 de inicio o actualización que busca actualizaciones en Internet y, si existe alguna actualización, solo descargue los cambios necesarios. Si todos los programas grandes se envían como un solo ejecutable monolítico, es muy probable que el proceso de revisión requiera volver a descargar todo el ejecutable, ya que es casi imposible parchear el archivo ejecutable en ejecución en el disco debido a bloqueos de archivos. Además, debido a que el actualizador necesita saber dónde están sus archivos, a menudo almacena esa ruta de directorio en una ubicación conocida en el registro.

Preocupaciones de conveniencia del usuario

  • Los instaladores para 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 "hinchazón" en la máquina del usuario, menos accesos directos del menú de inicio / escritorio, menos programas de inicio, etc.

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

  • Los instaladores pueden solicitar al usuario la información requerida, como las claves de licencia, que solo deben ingresarse una vez. Esto puede simplificar el diseño del programa en sí mismo y reducir la cantidad de cosas que tiene que hacer y verificar cuándo se inicia. Esto también da como resultado que el usuario tenga confianza en que, una vez que el programa se haya instalado con éxito, debería "simplemente funcionar": no hay más "problemas" dentro del programa que puedan retrasar su uso.

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, a menudo es útil verificar primero el sistema para ver si hay instalado un programa incompatible. El usuario puede ser alertado si es así. Por ejemplo, existe un potencial de incompatibilidad muy peligroso en las versiones anteriores de VMware y VirtualBox, que resultó en una pantalla azul de la muerte, porque un programa intentaría usar una instrucción especial del procesador de virtualización después de que el otro producto ya lo 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 en cada inicio 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 generalmente se debe ejecutar un instalador.

Privilegios elevados y servicios especiales.

  • Algunos programas dependen de los cambios en el sistema operativo para su funcionalidad, y estos cambios no pueden implementarse 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 núcleo, como Wireshark, no pueden simplementeejecute, porque absolutamente tiene que enviar los componentes del modo kernel en archivos separados. En el mejor de los casos, todavía tendría que hacer que el usuario descomprima manualmente un archivo comprimido 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 instalar. El software instalador es particularmente bueno para obtener derechos de administrador de una manera elegante, sin requerir que el programa principal mismo 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 cuales los instaladores son útiles, aquí hay algunas observaciones del otro lado:

  • Muchos programas, incluso aquellos que solo están disponibles para descargar como un instalador que requiere privilegios de administrador, se pueden "desempaquetar" a la fuerza de sus instaladores y ejecutarlos directamente sin instalarlos. PortableApps vuelve a empaquetar otros programas, especialmente los de código abierto, en ejecutables autónomos . Es de destacar que algunos programas, cuando se desempaquetan de su instalador, tendrán una funcionalidad reducida, exhibirán errores u otros problemas.

  • En sistemas operativos que no sean Windows, casi siempre es posible 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 ejecutarlo en su directorio de inicio sin instalarlo en todo el sistema utilizando el administrador de paquetes. Windows es un caso especial, ya que la mayoría de los programas de escritorio en Windows tienen un instalador y, por lo general, no se pueden instalar de otra manera.

  • Incluso en plataformas que no son de Windows, los programas que necesitan la capacidad de cargar un módulo del núcleo vienen con algún tipo de instalador, que compila el módulo del núcleo y lo instala en el directorio correcto. También puede esperar ver un instalador en caso de que el programa sea un demonio que se iniciará utilizando un script de servicio del sistema, por ejemplo, en /etc/init.d. Este tipo de "binario encogido" 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ía del software en forma de paquetes instalables, cada uno de los cuales requiere acceso root (acceso de administrador) para instalar.


Conclusiones

Usted preguntó por qué necesitamos instaladores. La respuesta corta es que no lo hacemos , no estrictamente hablando, de todos modos. Hay infinitamente algunos ejemplos de aplicaciones que no pueden , en principio, ser agrupados en un ejecutable autocontenido sin recursos sola, sin instalador, etc. Incluso algo tan complicado como VMware Workstation podría obtener automáticamente los privilegios de administrador, escriba el hipervisor Kernel module cabo a un archivo en el disco, e instálelo dinámicamente al iniciar el programa, y ​​envíe todos sus recursos (imágenes, sonidos, etc.) agrupados dentro de la sección de datos del ejecutable.

Usar un instalador o no es una elección que los productores de software tienen que hacer. Hay ventajas y desventajas de usar un instalador. Muchos proveedores eligen para distribuir su software tanto como instalador, y como un binario independiente, o al menos como un archivo ZIP que puede ser simplemente descomprimido y correr. Para el software que no requiere absolutamente un instalador, este es un camino muy pragmático y hace felices a todos. Por lo general, el software que no se envía de ninguna otra forma que no sea un instalador es un 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, encuentro instaladores muy molestos en mi trabajo diario, porque a veces quiero ejecutar un programa cuando no tengo derechos administrativos en la computadora que estoy usando. Tengo bastante experiencia desempacando manualmente los instaladores para extraer los archivos del programa y luego hacer que esos archivos se ejecuten correctamente. Sin embargo, en mi PC personal en casa, donde siempre tengo acceso administrativo, los instaladores me parecen beneficiosos y convenientes, porque la mayoría de los instaladores me dan opciones útiles, como crear un acceso directo de escritorio, que habría tenido que hacer manualmente sin él.


Gran respuesta, pero su apertura con DirectX y tiempo de ejecución no tiene sentido. En primer lugar, el único tiempo de ejecución de DirectX está dentro del lenguaje en el que está escrito, que es C.

@TomTurkey Um ... ¿qué? ¿Por qué importa en qué idioma está escrito? Claro, podría vincular estáticamente cualquier componente de DirectX que necesite directamente en su ejecutable, pero como dije, eso presenta un problema de tamaño de archivo si muchos programas comienzan a hacerlo con bibliotecas grandes (Qt 4.x, por ejemplo, ejecuta aproximadamente 40 MB ) El código tiene que estar en algún lugar, y no puede simplemente asumir que la versión de DirectX que necesita ya está instalada en el sistema, o recibirá un error cuando alguien abra su programa en Windows XP SP2 que no ha sido parcheado siglos.
allquixotic

44
Oh, creo que me entendiste mal: en mi respuesta, no estaba hablando de instalar DirectX en sí ; Estaba hablando de instalar un programa que depende de DirectX. Para satisfacer esa dependencia, puede compilar DirectX directamente en su aplicación, lo que aumenta el consumo de espacio en disco desperdiciado, o puede agrupar una pequeña aplicación en su instalador que verifique si tiene instalados los tiempos de ejecución de DirectX apropiados, y si no, los descarga y los coloca en una ubicación centralizada del sistema. Este último es mucho más eficiente en términos de espacio en disco y tamaño de descarga.
allquixotic

3
@allquixotic También, licencias. A veces, una biblioteca puede no tener licencia para reditrigación independiente de su instalador. DirectX puede caer en la categoría, no estoy seguro. El .NET framework lo hace, creo. No es una restricción técnica, sino legal. (Sin embargo, el marco .NET tiene restricciones técnicas adicionales. Está bastante bien integrado en el sistema operativo.)
Bob

1
boop . El sonido de un comentario votado. En mi cabeza.
allquixotic

3

El proceso de instalación considera estos elementos:

  1. si ha requerido la instalación de la biblioteca (api), como la versión de .NET Framework o Direct X.

  2. Instale algunos archivos DLL del sistema adicionales en la carpeta del sistema. Si la carpeta del sistema ya contiene estos archivos (misma versión), ignore este paso. De esta manera, no necesita 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. Este paso se puede hacer realmente cuando la aplicación se ejecuta por primera vez en esta computadora, por lo que no es muy importante.

  5. muy importante: si 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 olvides eso, si estás usando software libre.

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


3

El programa independiente no tiene dependencias externas.

No tiene que ser solo un archivo .exe, puede tener bibliotecas y archivos de datos que lo acompañan: desempaquete el archivo en una carpeta y ejecute el archivo ejecutable. Si solo desempaqueta un archivo, no se agrega ningún acceso directo al menú Inicio, por lo tanto, deberá navegar a la carpeta donde se encuentra la aplicación desempaquetada e iniciarla desde allí, o crear manualmente un acceso directo para ella en el menú Inicio. Muchos usuarios de computadoras lo encuentran 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. Recoge la carpeta de instalación, generalmente en Program Files, copia los archivos, crea accesos directos en el menú Inicio. Ya ha terminado: 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 con el shell. Para que pueda hacer clic en el archivo para abrirlo.

Acuerdo de licencia

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

Dependencias

A veces no es suficiente simplemente copiar los archivos ejecutables. Las aplicaciones a menudo usan componentes compartidos o bibliotecas de tiempo de ejecución especiales. Por ejemplo, .Net framework runtime tiene que estar instalado para ejecutar la aplicación escrita para .Net; incluso el tiempo de ejecución de Visual C ++, si no está estáticamente vinculado, debe instalarse. El instalador se encarga de garantizar que todas las dependencias estén satisfechas.

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

Los términos de licencia de una biblioteca pueden no permitir la vinculación estática.

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 archivos ejecutables y las bibliotecas están vinculados estáticamente, el proveedor de la aplicación tiene que volver a compilar la aplicación y lanzar la versión actualizada. Por lo tanto, el uso del tiempo de ejecución compartido reduce el costo de mantenimiento de la aplicación para desarrolladores y proveedores.

La instalación Program Filestambién proporciona un entorno más seguro: los archivos no pueden modificarse o eliminarse sin privilegios de administrador.

Registro

Muchas aplicaciones de Windows se basan en entradas en el registro. Si la aplicación usa COM, todos los objetos deben registrarse, de lo contrario la aplicación no podrá crear el objeto necesario y no se iniciará.


1
+1 para actualizaciones de seguridad de componentes compartidos: no pensé en escribir eso en mi respuesta.
allquixotic

0

Breve respuesta: un exe autónomo no requiere la instalación de bibliotecas en la computadora y no requiere entradas de registro u otros componentes.

Un archivo instalado puede ser independiente en un paquete de instalación, pero generalmente depende de una variedad de componentes y bibliotecas instalados junto a él.

En muchos casos, a través de Universal Extractor (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 desempaquetar con lessmsi .

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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.