Reducir el tamaño del parche

A partir de la versión 3.0 de Windows Installer, los autores de los parches pueden usar la línea de base del producto en caché por el instalador para atender más fácilmente las aplicaciones con parches diferenciales más pequeños. En muchos casos, un parche diferencial que entrega información de mantenimiento a una aplicación puede ser significativamente más pequeño que un paquete de instalación o parche de archivos completo que proporciona la misma información.

Windows Installer 2.0: no se admite. A partir de Windows Installer 3.0, el instalador guarda selectivamente información de línea base sobre los archivos cuando se actualizan.

Windows Installer proporciona tres métodos para actualizar y atender aplicaciones: pequeñas actualizaciones, actualizaciones secundarias y actualizaciones principales. A una pequeña actualización también se le conoce como actualización de ingeniería de correcciones rápidas (QFE) y también, como actualización secundaria de Service Pack (SP). Una actualización principal típica quita una aplicación anterior e instala una nueva. Windows Installer puede entregar información de mantenimiento a las aplicaciones como un paquete de instalación (archivo .msi) o como un paquete de parches (archivo .msp).

Un paquete de parches de Windows Installer que proporciona información de mantenimiento para una actualización pequeña o una actualización secundaria suele ser mucho menor que el paquete de instalación equivalente que ofrece la misma información de mantenimiento. Se recomienda usar paquetes de parches para distribuir actualizaciones pequeñas y secundarias. Se recomienda usar un paquete de instalación para distribuir una actualización principal.

Los parches de Windows Installer (archivos .msp) se pueden generar a partir de archivos completos o de diferencias de archivo (también denominadas archivos diferenciales). Un parche de Windows Installer generado a partir de archivos diferenciales puede ser mucho más pequeño que el parche de archivos completo equivalente. Todas las versiones de Windows Installer pueden usar parches de archivos completos o parches diferenciales.

A partir de la versión de Windows Installer 3.0, el instalador guarda selectivamente información de línea base sobre los archivos cuando se actualizan. La información sobre la aplicación base original (la versión RTM) y la actualización secundaria (Service Pack) más reciente se guardan en una ubicación privada cuando la aplicación está instalada o recibe una actualización secundaria.

El instalador hace lo siguiente para minimizar el tamaño de la memoria caché de línea de base:

  • No se mantienen más de dos líneas base para cada aplicación: una línea base del archivo como publicada originalmente (RTM) y una línea de base del archivo en la actualización secundaria más reciente (Service Pack).
  • Un archivo no se agrega a la memoria caché hasta que se parchea. La memoria caché de línea de base es de copia en escritura.
  • Si la aplicación nunca se ha actualizado, no hay archivos en la memoria caché de línea de base.
  • Cuando el último servicio de la aplicación fue una actualización secundaria (Service Pack), la aplicación está en un nivel de línea base y, como máximo, solo pueden estar presentes en el equipo dos copias de un archivo. Una copia del archivo está en el directorio de destino de la instalación. La otra copia puede estar en la memoria caché de línea de base de RTM.
  • Cuando el último servicio de la aplicación fue una actualización pequeña (QFE), la aplicación no está en un nivel de línea de base y, como máximo, solo pueden estar presentes en el equipo tres copias de un archivo. La primera copia del archivo está en el directorio de destino de la instalación. La segunda copia del archivo se encuentra en la memoria caché de línea de base de RTM. La última copia del archivo se encuentra en la memoria caché de línea de base más reciente.
  • La memoria caché de línea de base de la aplicación se quita cuando se desinstala el producto.

A partir de la versión de Windows Installer 3.0, el instalador puede usar la memoria caché de línea base cuando se aplican revisiones a la aplicación. La información de línea de base se puede usar para aplicar un parche diferencial o para revertir un archivo a una versión anterior durante una desinstalación. Esto puede permitir que los autores de los parches se beneficien de los parches diferenciales más pequeños. Si el instalador encuentra que el parche diferencial no se puede aplicar al archivo de destino, el instalador puede intentar usar un archivo guardado en la memoria caché de línea base como punto de partida. El instalador solo recurre a solicitar el origen de instalación original después de probar todas las posibilidades en la memoria caché.

El cumplimiento de las siguientes directrices puede ayudar a los autores de los parches a usar los parches de la versión de Windows Installer 3.0 y la memoria caché de línea de base para crear parches diferenciales más pequeños:

  • Parches de autor que incluyan la tabla MsiPatchSequence. Esta tabla es necesaria para usar la memoria caché de línea de base y está disponible a partir de la versión de Windows Installer 3.0.
  • No establezca la directiva que impida el almacenamiento en caché de línea de base. El valor de la directiva MaxPatchCacheSize especifica el porcentaje máximo de espacio en disco que se puede usar. Si la directiva MaxPatchCacheSize está establecida en 0, no se guardan archivos adicionales en la memoria caché de línea de base. Si no se establece la directiva, el valor predeterminado es que se puede usar un máximo del 10 % del espacio en disco. Si el tamaño total de la memoria caché alcanza el porcentaje máximo de espacio en disco, no se guardan archivos adicionales. La directiva no afecta a los archivos que ya se han guardado. Incluso cuando el almacenamiento en caché está deshabilitado, el instalador puede usar las cachés de línea de base de producto existentes.
  • Si el primer parche aplicado incluye la tabla MsiPatchSequence, el almacenamiento en caché está habilitado para la aplicación.
  • Si algún parche de la transacción de mantenimiento no incluye la tabla MsiPatchSequence, el almacenamiento en caché se habilita para la aplicación solo si se aplica correctamente un parche de actualización secundario (Service Pack) que incluya la tabla MsiPatchSequence al producto.
  • Generar el paquete de parche mediante herramientas de creación de revisiones, como Msimsp.exe y PATCHWIZ.DLL.
  • Marque siempre los parches para la versión RTM de la aplicación o una versión secundaria de actualización (Service Pack) de la aplicación. Los destinos especificados en la tabla TargetImages del archivo Propiedades de creación de revisiones (PCP) deben ser puntos de comprobación de producto definidos por los tres primeros campos de la propiedad ProductVersion .
  • Nunca dirija los parches en imágenes de actualización pequeñas. Los destinos para compilar la revisión no deben incluir imágenes de actualización pequeñas anteriores.