2009-08-19 18 views
8

Puedo encontrar mucha información sobre cómo MSI actualiza. P.ej. información acerca de una actualización menor, una actualización pequeña, una actualización ascendente importante, y su caso de uso y limitaciones. Sin embargo, no puedo encontrar información sobre el comportamiento de actualización del módulo de fusión, tales como:¿Cómo se fusionan las actualizaciones del módulo?

  1. Parece que el MSM no tiene ninguna forma de especificar importante actualización menor, pequeño, o . Entonces, ¿en qué forma se comporta ? ¿Desinstala la versión anterior de o solo actualiza los archivos modificados?
  2. ¿Hay alguna manera de especificar desde qué versión se puede actualizar como msi?
  3. ¿Puedo agregar/eliminar/cambiar el nombre de los componentes para la nueva versión?
  4. Si existe una versión más reciente de este MSM es ya instalado y el contenedor MSI decide instalar, va a sobrescribir con este versión más antigua de MSM?

Respuesta

7

Existen dos escenarios de actualización en los que puede participar un módulo de fusión. El primero es cuando el instalador se está actualizando y actualiza un archivo .msm. Esto ocurre en casos como el Service Pack de Visual Studio, donde proporcionan módulos de combinación actualizados para su uso. Esto puede ser problemático ya que los archivos .msm no tienen una versión de archivo (a pesar de que tienen una versión de módulo de fusión), por lo que las reglas de control de versiones de archivos no se aplican amablemente. Probablemente no estés preguntando sobre este caso.

El otro escenario es cuando el módulo de fusión se ha fusionado en un instalador que se actualizará. Ya no es un módulo de fusión, sino que sus archivos y otros registros forman parte del instalador consumidor. En este caso, el .msi en el que se ha fusionado controla los pasos de actualización. Los dos interactúan, informando sus respuestas a sus primeras tres preguntas. Si el módulo de combinación tiene cambios que no siguen reglas de actualización menores, entonces el instalador consumidor no podrá usar una actualización menor y deberá recurrir a actualizaciones importantes. En consecuencia, si desea utilizar (o permitir) actualizaciones menores en el instalador consumidor, debe tener cuidado con sus componentes. Esto puede ser más difícil que en un .msi ya que no puede agregar nuevas características dentro de un módulo de fusión. Las reglas de control de versiones de archivos se aplicarán tal como lo hacen en todas las instalaciones de Windows Installer; por lo tanto, la respuesta a su cuarta pregunta se determina archivo por archivo, componente por componente, en lugar de una respuesta grupal para todo el contenido del módulo.

+0

Gran respuesta. Es el segundo escenario. La imagen del instalador de Windows es cada vez más clara para mí ... – Dudu

0

Pregunta: Creo que necesito saber cómo versionar el módulo de fusión como se describe en el segundo escenario en la respuesta.

Situación:

Tengo numerosos productos que toda instalar el mismo módulo de combinación.

Si un producto instala una versión más nueva del módulo de fusión, no quiero que una versión anterior de un producto diferente sobrescriba el módulo de fusión más nuevo.

¿Alguien puede describir si esto es posible y, en caso afirmativo, cómo?

+0

Esta realmente debería ser su propia pregunta independiente (consulte esta si es necesario). Si el módulo de combinación y su versión más reciente son bien redactados, esto debería funcionar. Las versiones de archivo más nuevas sobrescribirán las anteriores, pero no viceversa.Los códigos de componentes compartidos harán referencia al recuento correctamente, por lo que la desinstalación incluso del usuario único de los archivos más nuevos no eliminará los archivos compartidos. En pocas palabras: asegúrese de seguir las reglas de control de versiones de componentes y archivos, e idealmente solo actualice los archivos existentes, al actualizar el diseño de este módulo de fusión. Entonces todo debería funcionar bien. –

+1

Tuve problemas para encontrar documentación detallada sobre esto, así que esto es lo que confirmé de la experimentación: Dado: 2 versiones de un módulo de fusión, llámelos MMv1.msm y MMv2.msm; cada .msm contiene 1 archivo MyFile.dll; MMv1.msm tiene v1.0 de MyFile.dll; MMv2.msm tiene v2.0 de MyFile.dll; MMv1.msm es consumido por el instalador para la aplicación A1; MMv2.msm se usa para la aplicación A2. Entonces, ¿qué sucede cuando ... 1) La aplicación A1 está instalada, luego A2? MyFile termina en v2.0; 2) A1, luego A2, están instalados, entonces solo se desinstala A2? MyFile permanece en v2.0. 3) ¿Está instalado A2, luego A1? MyFile comienza en v2.0 y permanece en v2.0. –

Cuestiones relacionadas