Cuando está instalando un programa, ¿realmente lo está compilando?

La mayoría de las veces no lo eres. Si está “instalando” un programa, está ejecutando un programa llamado instalador (Instalación (programas de computadora)), que básicamente tiene un script que contiene un montón de operaciones de configuración que permiten que el programa se ejecute en su computadora.

En casos muy raros, y aún más raramente en entornos de escritorio, ciertos tipos de instaladores pueden ejecutar un compilador de lenguaje de programación como parte de un proceso de instalación, pero esto es muy raro.

La gran mayoría de las veces, los instaladores hacen algo como esto:

  • Configurar carpetas / directorios utilizados por el programa.
  • Actualice algún tipo de “registro” central que le indique al entorno operativo que el programa existe.
  • Copie los archivos ejecutables del programa (ya compilados) y otros archivos misceláneos que utiliza para las carpetas / directorios apropiados en su computadora.
  • Configure un procedimiento de “desinstalación” si es necesario.
  • Realice varias otras tareas (es decir, buscar una instalación previa y buscar archivos, etc.).
  • Un montón de cosas misceláneas que son específicas del programa real que se está instalando. Por lo general, se especifican en “scripts de instalación” que ejecuta el programa instalador.

Configurar instaladores es en sí mismo un proceso bastante elaborado. Una herramienta común para configurar instaladores en Windows es InstallShield. Una herramienta común para administrar este tipo de cosas en Linux es el Administrador de paquetes RPM (y varios otros).

Tenga en cuenta que hay ocasiones en entornos Unix o Linux en los que realmente _ hace_ ejecutar un compilador en el código fuente del programa distribuido como parte de una instalación (script de configuración), pero generalmente esto lo hacen personas experimentadas que lo ejecutan como administrador en Unix o sistema Linux.

No es para sistemas operativos comerciales. El software se entrega como módulos de objeto que se conectan a varias bibliotecas en el sistema operativo. De eso se trata el proceso de instalación. Procesos como Windows Installer, yum (Yellowdog Updater, Modified) y apt (Advanced Packaging Tool) son instaladores, no compiladores.

Para situaciones en las que la presencia de módulos de objeto es menos predecible, la compilación puede ser parte del proceso de instalación. Por ejemplo, el sistema de puertos de FreeBSD distribuye todo el software solo como código fuente y requiere una compilación como parte del proceso de instalación.

Usted instala promedio
Por lo general, si usted es un usuario final front-end estándar, sus programas ya están compilados para su arquitectura y sistema operativo / kernel. Hace clic en un archivo ejecutable y se ejecuta. Significa que su promedio “install.exe” o “setup.exe” tiende a producir un ejecutable binario en el directorio de instalación (esto puede o no venir con un montón de subcarpetas, archivos de recursos, archivos de configuración, tal vez otros archivos de código de bytes y guiones, etc. también).

La barra de progreso está haciendo algo …
Con los instaladores, aunque la barra de progreso de la instalación y los mensajes que los acompañan parecen estar generando un montón de archivos, esto tampoco es una compilación.
Lo que generalmente ocurre aquí es descomprimir (descomprimir), copiar y escribir archivos de texto / shortcode / hexcode, etc. y verificar la integridad de los archivos.

Hay excepciones, por supuesto
Aunque puede producirse cierta generación y cálculo dinámico de un instalador, esto no suele ser lo mismo que compilar. Aunque eso no quiere decir que algunos instaladores no ejecuten una forma de compilación para algunas alteraciones específicas de la arquitectura durante la instalación … pero este pequeño proceso de compilación no hace que todo el instalador sea un proceso de compilación.

Donde tradicionalmente ocurre la compilación
La compilación generalmente es realizada por un desarrollador / programador / ingeniero, esto esencialmente lo convierte en algo que pueden enviar a los usuarios.

Ejemplo de donde la compilación y la instalación pueden ser el mismo proceso … tipo de … ok tal vez no
por ejemplo, si está ejecutando una versión de Linux, y como usuario final … el repositorio / app-store / etc no tiene el software, o la versión exacta del software que desea, puede terminar descargando el código fuente y compilando usted mismo para luego instalarlo en su sistema. Si bien la instalación y la compilación siguen siendo cosas realmente diferentes en este proceso, existen herramientas para compilar la fuente e instalar los archivos binarios de una sola vez, lo que hace que la demarcación entre los procesos sea borrosa si no sabe lo que realmente está sucediendo.

Realmente no. Por lo general, en la instalación se colocan elementos precompilados en lugares específicos del sistema de archivos, luego se establecen varias configuraciones para que se encuentren las partes, por ejemplo, la asociación entre extensiones de archivos y programas con los que es bueno abrirlos.

Solo en casos excepcionales, la instalación implica algo así como la compilación; a veces esto toma el sabor de un paso de “optimización”, donde se localiza algún código intermedio en la máquina.

No. Cuando instala un programa, generalmente copia el binario compilado, junto con las referencias necesarias, en el directorio de tiempo de ejecución y registra la configuración.

Al instalar un programa, simplemente estamos ejecutando un archivo ejecutable que crea carpetas utilizadas por el programa, copia los archivos DLL y otros archivos requeridos por el programa en las carpetas apropiadas y probablemente creando accesos directos.
el programa ya está compilado en el ejecutable
Recientemente creé una rutina de instalación para mi aplicación manualmente.

No. Normalmente, si está instalando el programa, no tiene el código fuente. Es posible que esté haciendo algo tan simple como copiar un archivo ejecutable, o puede haber más involucrados (entradas de registro, entradas mágicas para habilitar funciones, verificar que se instalen una serie de requisitos previos o archivos compartidos que utiliza el programa, etc.).

Si instala una aplicación en un sistema Android KitKat o Lollipop, es posible que esté compilando el código.

Alguna explicación relevante está en esta pregunta: por lo que he leído en línea, parece que Google está planeando usar el ART por defecto en una versión futura. ¿Por qué es ART mejor que Dalvik?

No, necesitas el código fuente para compilar. Pero cuando está instalando algo, está ejecutando el archivo ejecutable proporcionado por la compañía que le proporciona el software.