9

Tengo algunos paquetes de componentes MSI que deben instalarse juntos para formar la aplicación final.encadenado msi/Bootstrapper/prerrequisito?

El problema es que los componentes que componen el paquete pueden actualizarse y relanzarse el componente en el servidor de archivos http. ¿Qué enfoque debo tomar?

El instalador que estoy escribiendo es el instalador 'maestro'. Que necesita poder leer qué versión de cada componente está instalada en su máquina cliente para realizar una actualización solo en ese componente.

Además, si la aplicación se instala por primera vez, el instalador descargará e instalará todos los componentes necesarios.

estoy usando Installshield 2009.

He mirado en cadena de MSI, pero el instalador principal está vacía. ya que debe ser lo más ligero posible.

No tengo idea de cómo escribir una aplicación de arranque y mi empresa prefiere que use installshield para escribir el instalador.

He investigado, y al parecer los requisitos previos no están destinados a ser desinstalados.


creo que puedo hacer una actualización menor, cambiando los números de versión y de este modo permitir la descarga solamente descargue el componente que requiere y no descargar todo el instalador - Actualmente me estoy poniendo en práctica la forma en que usted ha sugerido (sascha) y mi compañía usará el servicio FLEXnet connect ofrecido a través de InstallShield. Los 'componentes' que mencioné (un término que a nuestros desarrolladores les encanta usar) son similares en concepto al concepto de componentes de InstallShield. Sin embargo, he modificado los 'componentes' para ser encapsulados por una función, de modo que cuando se construya la versión, pueda seleccionar que cada 'característica' esté envuelta en un archivo cab.

Esto suena muy confuso, incluso para mí.

he recurrido a las características < componentes (incluyendo servicios)

Mi empresa se niega a dejarme usar cualquier otro programa de instalación con la excepción de Installshield. Creo que para actualizar los requisitos previos en un futuro lejano, se debe escribir un nuevo instalador y volver a lanzar la aplicación como una actualización importante. lo cual tiene sentido para mí

Perermtate, no creo que haya una manera de desinstalar un requisito previo que se instaló previamente, lo que tiene sentido ya que el requisito previo puede ser requerido como una plataforma para otras aplicaciones, después de que todos los 'requisitos previos' fueran la tercera parte componentes a la aplicación.

¡Gracias por todas sus respuestas!

Respuesta

0

Por "componentes" ¿se refiere a Installshield/MSI Components/Features? ¿O estás usando esto en tu propia terminología? No se puede actualizar un componente sin liberar una versión de paquete completamente nueva hasta donde yo sepa.

Mi sugerencia sería la de implementar un instalador "descargador web" con archivos sin comprimir (o una CAB por componente), entonces su carga útil va a ser decir 300kb, y sólo las características que el usuario selecciona serán descargados desde la red.

4

He visto problemas similares, y simpatizo porque no hay respuestas fáciles que yo sepa. Si entiendo correctamente, básicamente quiere un setup.exe que detecte las versiones actuales de los requisitos previos en el sistema de destino, instálelos si faltan y actualícelos si están desactualizados.

Un par de opciones que `he utilizado en el pasado son:

  1. Microsoft de Generic Boostrapper. Lo he usado antes, y me gusta. Las desventajas son que si tiene que escribir su propio manifiesto boostrapper si su prerrequisito no es uno de los predefinidos. Escribir manifiestos puede ser un poco complicado y consume mucho tiempo, aunque hay un tool que ayuda. Además, no he podido encontrar una manera de desinstalar un componente instalado si el msi no puede hacer una actualización (algo más con lo que me he encontrado). Si lo resuelves, házmelo saber!

  2. Escriba su propio boostrapper/chainer. Empecé con el Microsoft .NET Framework Setup.exe Bootstrapper Sample. Viene con el código fuente por lo que tiene mucha flexibilidad en cómo se implementan sus componentes. Aquí, sin embargo, el código es C++ y la lógica para verificar los requisitos previos y emitir los comandos de instalación adecuados es complicada y difícil de resolver.

Actualización: como escribo esto (agosto de 2009), sin embargo, no está listo pero el proyecto Wix está trabajando en su propio bootstapper/chaniner llama Burn lo que para aquellos de nosotros que aman Wix parece muy prometedor.

+0

¡Cuál es la "herramienta que ayuda"! –

+0

La herramienta es Bootstrap Manifest Generator: http://code.msdn.microsoft.com/bmg. He corregido el enlace en la publicación original. –

1

Como el instalador "maestro" está vacío y realmente no instala nada propio, puede usar un proyecto InstallScript (en lugar de un proyecto basado en MSI), utilizando el script de instalación como "bootstrapper". Si usa InstallScript, ni siquiera necesita preocuparse por configurar el entorno para ejecutar su código, ya que InstallShield lo configurará automáticamente; Si usa .NET para el programa de arranque, necesitará requerir .NET o instalarlo como parte de su instalación.

Dado que los proyectos de InstallScript no usan MSI, no tiene que preocuparse por ejecutar otros MSI durante la secuencia de instalación de instalación de su instalación. Puede usar la función InstallScript "LaunchAppAndWait" para llamar a las instalaciones para ver qué componentes necesitan instalarse o actualizarse.

Cuestiones relacionadas