(small) Updates y (minor, major) Upgrades

Tipos de Upgrades

Windows Installer admite tres tipos de actualizaciones de productos: actualizaciones pequeñas, actualizaciones menores y actualizaciones mayores. Los tres tipos de actualizaciones se definen como sigue.

Una small update
consiste en cambios en el producto, como hot fixes, tan pequeños que no es necesario o deseado cambiar la versión del producto. (Un inconveniente de las actualizaciones pequeñas es que los programas externos, incluidos los instaladores de versiones posteriores de su producto, no podrán distinguir un producto con la actualización pequeña aplicada de otro sin la actualización pequeña).
Una minor upgrade
es un cambio en el producto lo suficientemente grande como para merecer un cambio en la versión del producto, como la actualización de la versión 1.1 a la 1.2, pero en la que no ha habido cambios significativos en la organización de la instalación entre las versiones. El comportamiento en el momento de la instalación de una actualización menor es instalar sobre el producto existente.
Una major upgrade
incluye cambios sustanciales en el producto, como la actualización de la versión 1.2 a la 2.0. Una actualización mayor puede contener cambios significativos en la arquitectura de la instalación. El comportamiento en el momento de la instalación de una actualización importante puede consistir en desinstalar la versión anterior e instalar la nueva, o en instalar sobre la versión anterior y luego eliminar los datos sobrantes.

En el caso de una versión anterior del producto que se instaló con una configuración heredada (no MSI), normalmente será necesaria una acción personalizada para desinstalar o modificar la instalación del producto existente.
Una actualización puede empaquetarse para su despliegue en el sistema de destino como una instalación completa (paquete MSI). Una actualización empaquetada como una instalación completa puede ser creada (utilizando acciones personalizadas, interruptores de línea de comandos o un lanzador de instalación) para actualizar un producto existente si está presente, o de lo contrario para comportarse como una primera instalación.

Una actualización también puede ser empaquetada como un archivo de parche de Windows Installer (un archivo con la extensión MSP). Un parche de Windows Installer contiene cambios entre los archivos (y otros datos) y las tablas MSI de las versiones anteriores y posteriores. Las diferencias de los archivos almacenados en un parche pueden ser binarias, diferencias a nivel de bytes, lo que puede dar lugar a un producto mucho más pequeño que una actualización empaquetada como un paquete de instalación completo. Una actualización que se empaqueta como un archivo de parche sólo puede utilizarse para actualizar un producto ya instalado, y no puede utilizarse como primera instalación.

Las pequeñas actualizaciones y las mejoras menores suelen empaquetarse como parches, mientras que las mejoras mayores suelen empaquetarse como paquetes de instalación completos.

Un error común es pensar que los parches son un tipo de actualización independiente, en lugar de un mecanismo de empaquetado. De hecho, el proceso de desarrollo de parches implica primero el diseño de una actualización menor o mayor, y luego su empaquetado como parche. Antes de crear un parche, se recomienda probar la actualización como un paquete de instalación completo.

Despliegue de actualizaciones y parches

Cuando se ejecuta un paquete de instalación MSI por primera vez en un sistema determinado, Windows Installer almacena en caché la base de datos MSI en el directorio %WINDIR%\Installer. Por defecto, cuando se ejecuta el mismo paquete por segunda vez o más tarde en el mismo sistema, Windows Installer ejecuta el paquete en modo de mantenimiento, utilizando la base de datos en caché. (Un paquete suele estar diseñado para mostrar una serie diferente de cuadros de diálogo para las primeras instalaciones y las instalaciones en modo de mantenimiento, utilizando condiciones como "No instalado").

Durante la instalación inicial, la base de datos de MSI se almacena en caché en el sistema del usuario, pero los archivos de datos del producto no. Si una operación de mantenimiento hace que se tenga que instalar un archivo, MSI requerirá el acceso a la fuente de instalación original, pidiendo al usuario que localice la fuente si no se puede encontrar (por ejemplo, si la instalación se realizó desde un CD-ROM que ya no está en la unidad). Por esta razón, debería construir una versión con la base de datos MSI externa a un lanzador de instalación, o crear un lanzador de instalación que almacene en caché la instalación en la máquina local.

Diseño de una instalación fácil de actualizar

El diseño de sus proyectos de instalación -la organización de las funciones, los componentes y las rutas clave de un producto- influye en la eficacia de las futuras actualizaciones. La eficacia de una actualización o parche se mide por lo siguiente:
  1. siempre que sea posible, utilice archivos de claves versionados.
  2. divida su producto en conjuntos discretos de características.
  3. separe la parte de la máquina y la parte del usuario en diferentes features.
  4. los valores de las MSI property no se guardan automáticamente durante la instalación inicial.
  5. las nuevas subcaracterísticas deben marcarse como "necesarias" y "follow parent".
  6. si su actualización menor elimina datos (archivos, configuraciones de registro, etc.) de un componente, ingrese los datos relevantes en las tablas correspondientes.
  7. cambiar la versión del producto MSI para cada nueva versión.
  8. cuando construya su paquete de actualización, utilice la optimización de parches en su configuración de construcción.
  9. al generar un parche para una instalación comprimida, utilice una imagen administrativa.
  10. al generar un parche, ambas versiones deben tener el mismo diseño de medios.


Definición

Major

Número de versión principal, por ejemplo, 1 en la versión 1.0.2.444
Contiene amplias funciones nuevas y es un nuevo desarrollo basado en la versión anterior.

Minor

Número de versión menor, por ejemplo, 0 en la versión 1.0.2.444
Software actualizado con amplias mejoras en las funciones existentes y pocas funciones nuevas. El código de producto de Windows permanece sin cambios.

Revision

Número de emisión, por ejemplo, 2 en la versión 1.0.2.444
Service Pack o Support Update es una actualización de software con mejoras detalladas y correcciones de errores. Con el paquete de servicio, el número de compilación aumenta y, según el grado de mejora, el número de revisión.

Build

Número de compilación, por ejemplo 444 en la versión 1.0.2.444
El parche, también conocido como hotfix o quickfix, es una actualización que se publica para solucionar problemas o que a menudo incluye una función nueva / mejorada que un usuario necesita con urgencia (parche del cliente). El parche solo aumenta el número de compilación.

Package Code

El código del paquete, que forma parte del flujo de información de resumen, identifica una base de datos concreta. El código del paquete no es una propiedad de Windows Installer. Dos bases de datos .msi con códigos de paquete idénticos deben tener contenidos idénticos. Por lo tanto, debe cambiar el código del paquete para cada compilación.

ProductVersion

Esta es una propiedad de Windows Installer que identifica la versión del producto. Tenga en cuenta que Windows Installer sólo utiliza los tres primeros campos de la propiedad ProductVersion para la comparación de versiones. Por ejemplo, para una versión del producto de 1.2.3.4, se ignora el 4. (Tenga en cuenta que esto es cierto para las comparaciones de los valores de ProductVersion, y no para las versiones de los archivos).

ProductCode

Es una propiedad de Windows Installer que identifica el GUID de un producto. Windows Installer trata dos productos con diferentes GUIDs de ProductCode como no relacionados, incluso si los valores de la propiedad ProductName son los mismos.

UpgradeCode

Es una propiedad de Windows Installer que identifica el GUID que representa un conjunto de productos relacionados. El UpgradeCode debe ser consistente en las diferentes versiones e idiomas de una familia de productos relacionados para que pueda ser utilizado para buscar versiones relacionadas del producto que ya están instaladas. Puede establecer el UpgradeCode para una actualización en la vista de Actualizaciones.


Major Upgrade vs. Minor Upgrade vs. Small Update

Requirement for the Upgrade Use a Major Upgrade? Use a Minor Upgrade? Use a Small Update? Note
Change the name of the .msi package Yes No No The default file name is taken from the Product Name property, provided the .msi file is not compressed in a Setup.exe installation launcher.
Enable end users to install earlier versions and the latest version on the same machine Yes No No
Add a new subfeature Yes In some cases In some cases If the new subfeature consists of new components only, you can use a small update, a minor upgrade, or a major upgrade. If the new subfeature consists of existing components, you must use a major upgrade.
Move or delete a feature in the product tree Yes No No
Add a new component to a new feature Yes Yes Yes
Add a new component to an existing feature Yes Yes Yes
Move or delete a component in the product tree Yes No No
Change the component code of an existing component Yes No No
Change the key file of a component Yes No No
Add, remove, or modify any of the following: files, registry keys, or shortcuts Yes Yes Yes If the file, registry key, or shortcut is in more than one component and the component is shared by two or more features, a major upgrade must be used.
Start with an MSI Database or Transform project Yes No No

Codes that Need to Be Changed for the Different Types of Upgrades

Package Code Product Version Product Code Upgrade Code
Small Update ❲✘❳
Minor Upgrade ❲✘❳ ❲✘❳
Major Upgrade ❲✘❳ ❲✘❳ ❲✘❳