script programas para msi mac instalar ejecutar documentos descargar cómo convertir como automaticamente archivos aplicacion abrir installer installation windows-installer msitransform

installer - programas - Cómo hacer un mejor uso de los archivos MSI



ejecutar archivos msi (3)

Como ya sabrá, msiexec es una aplicación de línea de comandos que puede usar para instalar un archivo MSI. Como sabrá, puede ejecutarlo en modo silencioso o invisible.

Si el instalador requiere que el usuario responda preguntas específicas sobre qué partes instalar, ¿hay alguna forma de que pueda poner en la línea de comandos de msiexec una serie de opciones para hacer esto?

Me imagino que debe haber algún tipo de forma de establecer la configuración predeterminada del archivo MSI para que esto suceda. ¿Cómo se hacen los archivos MSI? ¿Se desarrollan a través de herramientas de Microsoft? Pueden ser abiertos y editados?


Cómo configurar la instalación silenciosa de MSI

Se puede configurar una instalación de MSI en la línea de comando estableciendo las propiedades que usa el instalador. Hay propiedades de Windows Installer predefinidas, como la propiedad ALLUSERS. Esta propiedad define si se realizará una instalación en el contexto del usuario actual o la máquina.

La información sobre las propiedades disponibles, por ejemplo, se puede obtener de un registro de instalación que se puede crear utilizando la opción / l de msiexec

msiexec /I mysetup.msi /l*vx log.txt

Cómo crear archivos MSI

Hay muchas formas de crear archivos MSI. Un archivo MSI es básicamente una base de datos que consta de varias tablas que contienen toda la información de configuración necesaria y los cuadros de diálogo de instalación.

Microsoft ofrece una herramienta sencilla llamada Orca que le permite editar archivos MSI existentes y le permite saber qué propiedades se pueden configurar para configurar una instalación. Teóricamente, también es posible crear nuevos archivos MSI con esta herramienta, pero es una forma muy engorrosa de hacerlo.

Si está buscando una solución de código abierto y gratuita, le recomendaría echar un vistazo al conjunto de herramientas de WiX disponible en SourceForge o Nullsoft. Toda la información de configuración se realiza a través de archivos XML que luego se convierten en un instalador MSI. WiX es estable (aunque todavía está etiquetado como beta) y puede usarse en producción. En realidad, se integrará en la próxima versión de Visual Studio 2010.

Por supuesto, también hay soluciones comerciales disponibles, InstallShield es el líder del mercado (también es el líder en precios) y Visual Studio probablemente sea la herramienta más extendida.


Piense en la interfaz de usuario con MSI como opcional . Esto significa que no se requieren respuestas ya que el desarrollador tiene los valores predeterminados razonables para que las cosas no se rompan.

Distribuimos nuestro software en formato MSI a clientes corporativos, también les proporciono documentación sobre los conceptos básicos de Orca ( orca.msi se distribuye con Windows Installer SDK ) y cómo personalizar ciertos campos que hemos enumerado en la tabla de Property para su instalación . Tales como número de serie, detalles de registro y algunas otras configuraciones.

En respuesta a la pregunta original sobre las opciones de línea de comandos de msiexec, ¿ solo ejecuta MSIEXEC /? para establecer propiedades en la línea de comando usaría algo así como

MSIEXEC /I test.msi SOMEPROPERTY="Some value" PROP2="something else"


Los archivos MSI están diseñados específicamente para admitir la instalación silenciosa como característica incorporada; siempre puede omitir la GUI. Sin embargo, algunos archivos MSI tienen fallas de diseño que hacen que la instalación sea incompleta en modo silencioso, lo que es un serio error de diseño. Este problema se describe aquí: la desinstalación del Panel de control es diferente de Eliminar de .msi .

Configurando instalaciones MSI

Cuando se trata de instalar un MSI silenciosamente, lo que debe hacer es configurar la configuración desde la línea de comando msiexec.exe o aplicando lo que se conoce como una transformación al archivo original MSI. Ambas opciones se describen a continuación en secciones separadas.

Si el archivo MSI está bien diseñado, podrá establecer PROPIEDADES PÚBLICAS (siempre son MAYÚSCULAS) desde la línea de comando msiexec.exe o utilizando un archivo de transformación para modificar el MSI original. Estas operaciones se describen a continuación. Las propiedades públicas son más fáciles de encontrar en la " tabla de propiedades " del archivo MSI. Use la herramienta MSI de su elección para abrir el archivo * .msi y navegar a la tabla de propiedades.

Las configuraciones de MSI bien diseñadas son completamente configurables a través de estas propiedades públicas. Los archivos MSI mal diseñados no lo son. Los archivos MSI mal diseñados son los mejores para modificar utilizando archivos de transformación (que pueden hacer cambios sustanciales en todo el archivo MSI para aplicar en el momento de la instalación). El establecimiento de propiedades públicas solo puede cambiar lo que sea configurable por propiedades públicas, tal como lo diseñó el creador de la configuración. Las transformaciones pueden cambiar casi cualquier cosa en todo el archivo MSI .

En general, toda la implementación silenciosa y corporativa se realiza mediante transformaciones para "adaptar los archivos MSI a la forma" para el estándar corporativo. Es una herramienta muy efectiva para la implementación corporativa y se usa ampliamente.

MSI "Características"

MSI es a menudo contradictorio y algo complicado bajo el capó. Sin embargo, para simplificar demasiado un archivo MSI contiene una o más " Características ", y estas características constituyen colectivamente los " bits de la aplicación " como usted lo expresó. Las características, a su vez, consisten en " Componentes ", que son las unidades atómicas de instalación para todo el software, pero este es un detalle muy técnico; esta respuesta se trata de los bits de MSI expuestos al usuario: las características.

En general, puede encontrar una lista de estas características ejecutando la configuración de forma interactiva y navegando hasta el cuadro de diálogo de instalación personalizada (no siempre presente). Las características que aparecen aquí son las partes " configurables por el usuario " de la aplicación que pueden elegirse para su exclusión o inclusión (algunas son obligatorias). También puede encontrar estas características abriendo una MSI con una herramienta capaz como se mencionó anteriormente (también puede ver los enlaces en la sección 2 a continuación).

Las características típicas son: núcleo o programa , diccionarios , muestras , plug-ins , corrector ortográfico , SDK y herramientas de desarrollo (para herramientas de desarrollo), etc. Algunas características son obligatorias (deben instalarse). Los ejemplos anteriores serían Core y Program. , otros son opcionales y no son necesarios para el lanzamiento de la aplicación (como las funciones de herramientas de desarrollo anteriores). Es posible hacer que las funciones de instalación de la aplicación sean "a pedido", por ejemplo, correctores ortográficos cuando el usuario inicia un corrector ortográfico.

Según mi experiencia, la mayoría de los usuarios quieren que se instale toda la aplicación. Muchos usuarios están muy molestos si Windows Installer aparece inesperadamente y comienza a instalar componentes de corrector ortográfico. Francamente muy comprensible. Sin embargo, los componentes modulares poco utilizados, que solo interesan a unos pocos usuarios, podrían convertirse en componentes opcionales , especialmente si los administradores del sistema no desean que la función esté disponible en su red. Este es sin duda el caso de las herramientas de desarrollador , que no deberían estar disponibles para los usuarios habituales. Tienden a ser toda la cuerda que la gente necesita para dispararse en el pie.

Como se mencionó anteriormente, generalmente hay dos formas de personalizar una instalación de MSI : (1) usando las líneas de comando personalizadas de msiexec.exe , o usando (2) archivos de transformación .

1: línea de comando msiexec.exe :

La forma más simple y liviana de controlar qué características se instalan durante una instalación, es especificar su selección de características utilizando la línea de comando msiexec.exe . Hay toda una familia de propiedades usadas para la configuración de características. Pero, en la mayoría de los casos, es suficiente especificar ADDLOCAL :

msiexec.exe /i myinstaller.msi ADDLOCAL="Program,Dictionaries" /qn

La línea de comando anterior especifica que las características " Programa " y " Diccionarios " deben instalarse localmente (¡los nombres de las funciones son sensibles a mayúsculas y minúsculas! ). En general, esto es suficiente, pero también puede especificar cualquier característica que desee eliminar utilizando la propiedad ELIMINAR de forma similar. Un interruptor especial es ADDLOCAL=ALL que instalará todas las funciones en el MSI en el disco local (siempre que no haya una lógica adicional en el MSI para anular esto). Propiedad ADDLOCAL en MSDN .

Una característica muy común para definir por propiedades públicas es la clave de licencia para la aplicación. La siguiente línea de comando especifica instalar las características " Programa " y " Diccionarios " y aplicar la clave de serie "1234-1234":

msiexec.exe /i myinstaller.msi ADDLOCAL="Program,Dictionaries" SERIALKEY="1234-1234" /qn

Como está implícito en la descripción anterior, la lista de propiedades personalizables para cada configuración siempre es diferente . Puede encontrar la mayoría de las propiedades enumeradas en la tabla de propiedades del archivo MSI, pero también es posible establecer algunas propiedades que no están definidas en la tabla de propiedades. En la mayoría de los casos, esto se relaciona con las propiedades que se establecen solo desde la GUI de configuración (indica un error de diseño de configuración en la mayoría de los casos). Todas las propiedades se deben definir en la tabla de propiedades en un paquete propiamente redactado.

Busque la documentación en la página de descarga del proveedor y solicite ayuda para cualquier documento relacionado con la instalación silenciosa o la implementación a gran escala . Es rápido de hacer, y las respuestas pueden ser rápidas si tienen plantillas de respuesta estándar. Las empresas con control de su despliegue siempre podrán proporcionar esto . En mi opinión, la forma ideal es un PDF de una página que describe diferentes configuraciones de implementación. Francamente, denles algo de calor si no pueden proporcionar esto ;-).

2: transformaciones :

Los archivos MSI son esencialmente bases de datos SQL envueltas en archivos de almacenamiento estructurado COM (sistema de archivos dentro de un archivo). Los archivos de transformación son "bases de datos parciales" construidas a través de herramientas de instalación como Orca (enlace SDK), Installshield o Sabio , Advanced Installer, etc ... (enlace a las descripciones de las diferentes herramientas). Estas transformaciones pueden personalizar o anular casi todas las configuraciones o campos de base de datos en una MSI, incluyendo qué "partes de la aplicación" (características) están instaladas. Después de crear una transformación, especifique su aplicación en el MSI en la línea de comando de msiexec.exe:

msiexec.exe /i myinstaller.msi TRANSFORMS="mytransform.mst" /qn

Windows Installer fusionará la MSI y la transformación antes de que comience la instalación. Este es el enfoque utilizado por las grandes organizaciones que desean un control total de cómo se instala el MSI. TRANSFORMA la propiedad en MSDN .

Como se mencionó anteriormente, esta es la opción que permite modificar todas las configuraciones en un MSI. Se pueden aplicar correcciones sustanciales a archivos MSI mal diseñados para permitir una implementación confiable. Esto lo hacen los "empaquetadores de aplicaciones". Su trabajo es sintonizar todas las configuraciones para que funcionen dentro del estándar corporativo. Pueden estar entre los especialistas de MSI más conocedores de la zona: ven muchas cosas raras en los archivos MSI.

Antipatrones contra las ventajas corporativas de Windows Installer:

Windows Installer tiene muchas peculiaridades de diseño y puede ser particularmente molesto para los desarrolladores . Es cierto que hay algunos problemas que rayan en antipatrones .

Posibles Anti-Patrones

  • reglas de sobrescritura de archivos contraintuitivas ( Symantec )
    • reglas extrañas, especialmente para archivos no versionados
    • una característica insana para forzar a sobrescribir todos los archivos ( REINSTALLMODE = amus)
      • puede degradar los archivos compartidos en todo el sistema
      • puede causar un estado de versión incoherente, ya que un paquete antiguo se puede instalar después de uno nuevo y degradar solo algunos de los archivos compartidos
      • posibles errores de tiempo de ejecución de los viejos módulos de combinación que intentan sobrescribir los archivos ahora protegidos
      • la sobreescritura potencial de los archivos de datos cambió en el disco y no se sobrescribió. (Necesito probar esto de nuevo)
  • datos de usuario de reinicio inesperados en el registro después de las actualizaciones
    • Esto es extremadamente problemático . Si experimentas esto, no eres tú, es la tecnología
    • A menudo visto con las credenciales de servicio inicios de sesión y claves de serie
    • Algunas técnicas para evitar este problema
      • evite escribir CUALQUIER clave de registro HKCU desde su configuración, escríbalas desde su aplicación.
      • poner datos de registro en una característica propia
      • asegúrate de mantener una ruta de clave de registro estable. Establezca un valor de indicador KeyPath = 1 y nunca lo cambie
      • hay algunos trucos adicionales, me escapan en este momento
  • mecanismo complejo de actualización
    • actualizaciones menores tienen muchas limitaciones y restricciones
    • las actualizaciones importantes tienen otros desafíos (restablecer datos de registro, archivos perdidos después de la instalación, reparación automática de archivos COM después de la instalación, etc.)
  • funciones de GUI deslustradas
  • parches sorprendentemente complicados
  • implementación extremadamente complicada de acciones personalizadas
    • secuencia compleja
    • acondicionamiento complejo
    • suplantación compleja / ejecución parcial con derechos elevados
    • en general extremadamente propenso a errores .
  • la implementación deslucida de las configuraciones por usuario
    • conceptualmente dudoso (redireccionamientos de carpetas, impredecibilidad, imposibilidad de hacer que las configuraciones en el mundo real sean compatibles con las instalaciones por usuario y por máquina)
    • complejo para actualizar, desinstalar y parchear. Permite que los productos se instalen varias veces para diferentes usuarios Y también por máquina
    • Tengo que admitir, en una nota subjetiva, que considero que la implementación actual de la configuración por usuario está llena de antipatrones de despliegue. Nunca lo uso e insisto en no hacerlo a menos que me obliguen a hacerlo .
  • reparación inesperada
  • la falta de funciones incorporadas para escribir en archivos XML
  • características deficientes para las instalaciones de IIS
    • parte del problema son las reglas de sobrescritura de archivos no versionados (resultados impredecibles)
    • también varios otros problemas con la compleja configuración de IIS y las carpetas y sitios virtuales
  • la habilitación descuidada de "verificar código de salida " en acciones personalizadas puede causar paquetes que no son posibles de actualizar o desinstalar (sin ajustes serios)
    • las principales actualizaciones pueden fallar y desencadenar la reversión de algo insignificante
    • se puede usar una actualización menor para arreglar la secuencia de desinstalación o el acondicionamiento defectuoso
  • hay algunos más ...

El tema de la alta complejidad de la implementación de acciones personalizadas (lógica de instalación personalizada) podría argumentarse como inevitable y el acto de escribir una acción personalizada debería ser poderoso y capaz una vez que sea necesario y, por lo tanto, complicado. Rara vez se deben realizar acciones personalizadas si la tecnología en sí ofrece lo que se usa comúnmente para la implementación. En otras palabras, debe usar las funciones incorporadas de MSI en lugar de acciones personalizadas, si están disponibles, o la extensión de software de implementación de WiX o de terceros cuando esté disponible.

Tanto el marco de WiX (código abierto) como las herramientas comerciales (Installshield, Advanced Installer, etc ...) han implementado características para extender Windows Installer y tratar con características faltantes, como la falta de un mecanismo de actualización para archivos XML, creación y administración de recursos compartidos , creación de usuarios y grupos, configuración avanzada de IIS, instalaciones COM +, cambios en los permisos de ACL, configuración de reglas de firewall, propiedades de instalación persistentes, etc. Debería haber cada vez menos necesidad de implementar sus propias acciones personalizadas . Utilice siempre las características que ya han sido probadas por miles de otros usuarios si puede (incluso millones de usuarios - y estas extensiones han sido escritas por los mejores expertos en implementación disponibles - ¿cree que puede hacerlo mejor por su cuenta?).

Las ventajas corporativas de Windows Installer (muy significativo)

Requiere una mentalidad específica para acercarse a Windows Installer. Sin embargo, proporciona una serie de beneficios corporativos cruciales que casi no existían en las tecnologías de instalación anteriores. Se recomienda leer los beneficios corporativos del uso de archivos MSI . Particularmente para aquellos que piensan que Windows Installer es más problemático de lo que vale.

Para resumir brevemente el artículo vinculado, los beneficios corporativos centrales de MSI sobre las tecnologías de implementación anteriores son (en mi opinión):

  • el funcionamiento silencioso confiable (con GUI estandarizada y completamente supresible)
  • la desinstalación implícitamente disponible (una pesadilla con tecnologías de implementación más antiguas)
  • el registro detallado (puede ser útil, aunque realmente muy detallado)
  • la administración remota confiable (de hecho, el beneficio total en general, el efecto combinado de todos los demás beneficios enumerados)
  • los derechos de instalación elevados (sin derechos de administrador temporales desordenados)
  • la línea de comando estandarizada (una característica muy beneficiosa: no más opciones de línea de comando ocultas)
  • la naturaleza semitransparente del instalador (formato abierto, excepto CA compiladas que son cuadro negro)
  • el soporte de reversión (administración de estado de la computadora, evitar despliegues parciales, errores y revertir cambios)
  • la instalación administrativa (esencial para el reempaquetado corporativo, extrae todos los archivos de forma estándar)
  • el enfoque estándar de personalización del paquete (transformaciones) (básicamente permite una personalización completa para la implementación corporativa)

Eso es solo para seleccionar los más importantes (después de muchos años haciendo despliegue corporativo). Honestamente, estas características marcan la diferencia en el mundo (para la implementación corporativa) y realmente hacen que MSI sea genial para usar a pesar de todos sus defectos .

Los años crepusculares del instalador de Windows

A medida que Windows Installer llega a sus últimos años, solo podemos esperar que las tecnologías de implementación del futuro conserven estos excelentes beneficios de implementación corporativa y se ocupen de los antipatrones mencionados de una forma que beneficie a todos, y a los desarrolladores en particular.

La implementación es una parte crucial del desarrollo . Fallar en la instalación exitosa de su gran software para sus posibles usuarios finales puede ser el error más costoso en el desarrollo de software en general. ¿Cómo puede tener éxito si el usuario nunca ve su software completamente funcional?

La complejidad de Windows Installer se debe manejar mejor (reducir), y sus beneficios cruciales se deben preservar adecuadamente en cualquier paradigma que se presente a continuación.

Un razonablemente bueno: resumen de Windows Installer .

Plataformas en la nube

Con todo esto dicho; dado que la informática en general se traslada a plataformas en la nube, es probable que el mundo del despliegue cambie considerablemente de manera impredecible. Sin embargo, como dice el famoso dicho: cuanto más cambian las cosas, más se mantienen igual. La implementación necesita lidiar con toda la tecnología heredada que se utilizará en las empresas en las próximas décadas. Aquí hay una pieza sobre por qué el despliegue parece ser más complicado y no menos complicado, a pesar de todo el marketing: ¿Cuál es el beneficio y el verdadero propósito de la instalación del programa? .

Será interesante ver cuál será el futuro del despliegue, en los próximos años. Tal vez veremos una implementación simplificada para computadoras domésticas, y la implementación corporativa se volverá más complicada que nunca. En el futuro, la mayoría de las implementaciones probablemente serán más una tarea de implementación de bases de datos que una tarea de implementación de archivos y carpetas. La implementación de servidores puede ser extremadamente complicada con scripts de bases de datos, creación de usuarios y grupos, configuración compartida y permisos de ACL, contadores de rendimiento, actualizaciones de reglas de firewall, consultas y actualizaciones de AD, configuración de COM + y cola de mensajes, instalación de servicios, etc. ... - los nueve metros completos.