Windows Installer ( msiexec.exe
, anteriormente conocido como Microsoft Installer , [3] nombre en clave Darwin ) [4] [5] es un componente de software y una interfaz de programación de aplicaciones (API) de Microsoft Windows que se utiliza para la instalación , mantenimiento y eliminación de software. La información de instalación y, opcionalmente, los archivos mismos, están empaquetados en paquetes de instalación , bases de datos vagamente relacionales estructuradas como almacenamientos estructurados COM y comúnmente conocidos como "archivos MSI", por sus extensiones de nombre de archivo predeterminadas . Los paquetes con extensiones de archivo mst
contienen "Scripts de transformación" de Windows Installer, aquellos con msm
extensiones contienen "Módulos de combinación" y la extensión de archivo pcp
se utiliza para "Propiedades de creación de parches". [6] Windows Installer contiene cambios significativos con respecto a su predecesor, la API de configuración. Las nuevas características incluyen un marco GUI y generación automática de la secuencia de desinstalación . Windows Installer se posiciona como una alternativa a los marcos de instalación ejecutables independientes, como las versiones anteriores de InstallShield y NSIS .
Antes de la introducción de Microsoft Store (entonces llamada Windows Store), Microsoft alentó a terceros a utilizar Windows Installer como base para los marcos de instalación, de modo que se sincronizaran correctamente con otros instaladores y mantuvieran consistente la base de datos interna de los productos instalados. Funciones importantes como la reversión y el control de versiones dependen de una base de datos interna consistente para un funcionamiento confiable. Además, Windows Installer facilita el principio de privilegio mínimo al realizar instalaciones de software mediante proxy para usuarios sin privilegios.
Un paquete describe la instalación de uno o más productos completos y se identifica universalmente mediante un GUID . Un producto se compone de componentes , agrupados en características . Windows Installer no maneja dependencias entre productos.
Un único programa (o conjunto de programas) instalado y funcional es un producto . Un producto se identifica mediante un GUID único (la propiedad ProductCode) que proporciona una identidad autorizada en todo el mundo. El GUID, en combinación con el número de versión (propiedad ProductVersion), permite la gestión de versiones de los archivos y claves de registro del producto.
Un paquete incluye la lógica del paquete y otros metadatos relacionados con cómo se ejecuta el paquete cuando se ejecuta. Por ejemplo, cambiar un archivo EXE en el producto puede requerir que se cambie ProductCode o ProductVersion para la gestión de versiones. Sin embargo, simplemente cambiar o agregar una condición de inicio (con el producto siendo exactamente igual que la versión anterior) aún requeriría que el PackageCode cambie para la gestión de lanzamiento del archivo MSI.
Una característica es un grupo jerárquico de componentes. Una característica puede contener cualquier número de componentes y otras subcaracterísticas. Los paquetes más pequeños pueden consistir en una única característica. Los instaladores más complejos pueden mostrar un cuadro de diálogo de "configuración personalizada", desde el cual el usuario puede seleccionar qué funciones instalar o eliminar.
El autor del paquete define las características del producto. Un procesador de textos , por ejemplo, podría colocar el archivo principal del programa en una función, y los archivos de ayuda del programa, el corrector ortográfico opcional y los módulos de papelería en funciones adicionales.
Un componente es la unidad básica de un producto. Windows Installer trata cada componente como una unidad. El instalador no puede instalar solo una parte de un componente. [7] Los componentes pueden contener archivos de programa , carpetas , componentes COM , claves de registro y accesos directos . El usuario no interactúa directamente con los componentes.
Los componentes se identifican globalmente mediante GUID; por lo tanto, el mismo componente se puede compartir entre varias funciones del mismo paquete o entre varios paquetes, idealmente mediante el uso de Merge Modules .
Una ruta de clave es un archivo específico, una clave de registro o una fuente de datos ODBC que el autor del paquete especifica como crítico para un componente determinado. Debido a que un archivo es el tipo más común de ruta de clave, el término archivo de clave se usa comúnmente. Un componente puede contener como máximo una ruta clave; Si un componente no tiene una ruta clave explícita, la carpeta de destino del componente se considera la ruta clave. Cuando se inicia un programa basado en MSI, Windows Installer comprueba la existencia de rutas clave. Si hay una discrepancia entre el estado actual del sistema y el valor especificado en el paquete MSI (por ejemplo, falta un archivo clave), se reinstala la característica relacionada. Este proceso se conoce como autocuración o autorreparación . No deben haber dos componentes que utilicen la misma ruta de clave.
Crear un paquete de instalación para una nueva aplicación no es trivial. Es necesario especificar qué archivos se deben instalar, dónde y con qué claves de registro. Cualquier operación no estándar se puede realizar mediante acciones personalizadas, que normalmente se desarrollan en archivos DLL . Hay una serie de productos comerciales y gratuitos para ayudar en la creación de paquetes MSI, incluido Visual Studio (de forma nativa hasta VS 2010, [8] con una extensión en las versiones más recientes de VS [9] ), InstallShield y WiX . En diversos grados, la interfaz de usuario y el comportamiento se pueden configurar para su uso en situaciones menos comunes, como una instalación desatendida. Una vez preparado, se "compila" un paquete de instalación leyendo las instrucciones y los archivos de la máquina local del desarrollador y creando el archivo .msi.
El ingeniero de instalación que desarrolla un nuevo instalador puede cambiar o configurar la interfaz de usuario (cuadros de diálogo) presentada al inicio de la instalación. Hay un lenguaje limitado de botones, campos de texto y etiquetas que se pueden organizar en una secuencia de cuadros de diálogo. Un paquete de instalación debería poder ejecutarse sin ninguna interfaz de usuario, para lo que se denomina "instalación desatendida".
Microsoft proporciona un conjunto de evaluadores de coherencia interna (ICE) que se pueden utilizar para detectar problemas potenciales con una base de datos MSI. [10] Las reglas ICE se combinan en archivos CUB, que son archivos MSI simplificados que contienen acciones personalizadas que prueban el contenido de la base de datos MSI de destino en busca de advertencias y errores de validación. La validación de ICE se puede realizar con las herramientas de Platform SDK Orca y msival2, o con las herramientas de validación que se incluyen con los distintos entornos de creación.
Por ejemplo, algunas de las reglas de ICE son:
Abordar las advertencias y errores de validación de ICE es un paso importante en el proceso de lanzamiento.