2010-03-19 31 views
7

Nuestro equipo ha estado considerando recientemente eliminar una pequeña corrección de registro para que los usuarios modifiquen una clave problemática en particular. Bastante sencillo, solo necesitaba actualizar 1 clave/valor dentro del registro.Crear un parche MSI (.msp) a mano?

Por el momento, estamos usando Wix para construir instaladores .msi para el producto. Mientras se mira en el apoyo de Wix para la generación de archivos de revisión .msp, parece que la única manera de crear una .msp es un proceso de múltiples pasos algo demasiado complicado para:

  1. obtener una copia de la MSI original, y compilar una nueva copia de la MSI fijo
  2. Escribir un nuevo archivo de Wix que apunta a los instaladores
  3. Compilar el archivo Wix en una .wixobj con la vela a un .psp
  4. Carrera de la antorcha/Pyro más antes/después de instantáneas del instaladores originales y .psp, o alternativamente usando MsiMsp.exe

Ahora mi pregunta es, ¿no puedo simplemente describir el cambio de registro en un archivo Wix y compilarlo directamente en el .msp, sin los pasos 1 y 4, lo cual es una gran cantidad de esfuerzo para un simple cambio?

Respuesta

7

No. Un parche es el delta de dos imágenes instalables. Para generar el delta, incluso si la diferencia es muy pequeña, necesitará ambas imágenes.

+1

La explicación es correcta. Solo está describiendo un método manual para crear las dos imágenes. –

2

Es posible crear MSP (parches) y MST (transformaciones) usando Orca y las otras herramientas del SDK de instalación de Windows (que ahora es parte del Windows SDK). Sin embargo, el proceso puede no ser mucho más fácil que lo que ya tienes con WiX.

Here es la mejor explicación que pude encontrar con unos minutos de búsqueda de Google; Todavía sospecho que debe haber algo mejor por ahí, sin embargo. Pero si está familiarizado con el formato del instalador de Windows, es bastante fácil explorar y probar algunas cosas con Orca hasta que lo haya entendido.

3

Sí, hay otra manera, a pesar de que usted puede considerar igualmente complicado:

  1. Crear un administrador de instalación de la versión "base" utilizando msiexec /qn /a <msi-file> TARGETDIR=<absolute-path-of-existing-directory> (si ejecuta esto desde un archivo de maquillaje o con otros caracteres , utilice start /wait delante del comando), por ejemplo en %BASEDIR%
  2. repita lo de arriba, sino en %UPDDIR%
  3. Ahora que tiene la instalación descomprimido dentro %UPDDIR%, realice los cambios realizados en el archivo .msi que estarán en la raíz de esa carpeta ... también debe cambiar preferiblemente el número de versión ...
    • Si intercambia archivos, asegúrese de actualizar la tabla hash (MsiFileHash) o la tabla File para archivos con información sobre la versión.
    • Si cambia simplemente algún valor de registro, debería estar bien sin nada de eso ...
  4. Ahora prepara un archivo .pcp (Patch Propiedades creación) para señalar una fila en la tabla TargetImages a la .msi en %BASEDIR% y una fila de UpgradedImages a la .msi en %UPDIR%
  5. invocación msimsp.exe <pcp-file> -p <absolute-path-to-desired-patch-file>

Voila, terminaste.

Ahora, si esto vale la pena depende únicamente de usted.

Así lo hago con la ayuda de algunos scripts que ejecutan consultas SQL en las bases de datos MSI para consultar valores o actualizarlos según sea necesario. Esto funciona perfectamente y se ha incluido en un archivo make de GNU para crear un conjunto completo de MSI, MSI derivadas, parches y parches falsos (para probar).

El truco aquí es parchear la imagen de administración descomprimida y dirigir msimsp.exe para crear un parche entre la versión sin modificar y la versión modificada de la imagen de administración descomprimida. Con todo, se ajusta a su requisito de hacerlo "a mano".

Escribe un comentario en caso de que algo necesite aclaración.

Cuestiones relacionadas