Compartir a través de


Prevención de la instalación de un paquete antiguo sobre una versión más reciente

Los paquetes de actualización de Windows Installer se pueden crear para que las actualizaciones principales no se instalen si un usuario ya tiene instalada una versión más reciente. El procedimiento de este tema solo puede evitar degradaciones que podrían deberse a la ejecución de un paquete de actualización principal. Este procedimiento se basa en la acción FindRelatedProducts, que solo se ejecuta durante una instalación por primera vez y no se ejecuta en modo de mantenimiento (reinstalación). Dado que las actualizaciones secundarias se realizan mediante la reinstalación, este procedimiento no se puede usar para determinar si un paquete de actualización secundaria está intentando degradar una aplicación. Para obtener más información, consulte Preparación de una aplicación para futuras actualizaciones principales.

Para prevenir la instalación de un paquete antiguo sobre una versión más reciente

  1. Escriba la propiedad UpgradeCode para el grupo de productos relacionados que pueden optar a recibir esta actualización en la columna UpgradeCode de la tabla Upgrade.

  2. Escriba la marca de bits msidbUpgradeAttributesOnlyDetect en la columna Attributes de la tabla Upgrade.

  3. Escriba la versión de la actualización que proporciona este paquete en la columna VersionMin de la tabla Upgrade. Deje la columna VersionMax en blanco.

  4. Escriba el nombre de la propiedad que va a establecer la acción FindRelatedProducts en la columna ActionProperty de la tabla Upgrade.

  5. Agregue la propiedad SecureCustomProperties y la propiedad denominada en la columna ActionProperty de la tabla Upgrade a la tabla Property.

  6. Agregue un Tipo de acción personalizada 19 después de la acción FindRelatedProducts en la tabla InstallExecuteSequence. Incluya un registro en la tabla CustomAction para esta acción y escriba el texto que se mostrará en la columna Target. El Tipo de acción personalizada 19 está integrado en el instalador, por lo que no hay que escribir código.

  7. Escriba el nombre de ActionProperty en la columna Condition del registro en la tabla InstallExecuteSequence que contiene el Tipo de acción personalizada 19. Esta acción personalizada solo se ejecuta cuando la tabla Update detecta que ya está instalada una versión más reciente.

    Por ejemplo, un paquete de Windows Installer que actualiza un grupo de productos relacionados a la versión 3.0 puede incluir los siguientes registros en sus tablas Upgrade, CustomAction, InstallExecuteSequence y Property. Todos los productos relacionados del grupo tienen el mismo UpgradeCode, pero el instalador no instala este paquete de actualización si ya hay instalada una versión posterior a 3.0 en el equipo. En este caso, el instalador muestra un mensaje de error y se produce un error en la instalación. El paquete de actualización de la versión 3.0 se instala en las versiones 1.0 y 2.0.

    Tabla Upgrade

    UpgradeCode VersionMin VersionMax Idioma Atributos Quitar ActionProperty
    {E7BE6D45-49FF-4701-A17E-BDCC98CE180D} 3.0   msidbUpgradeAttributesOnlyDetect NEWPRODUCTFOUND
    {E7BE6D45-49FF-4701-A17E-BDCC98CE180D} 1.0 3.0 msidbUpgradeAttributesVersionMinInclusive UPGRADEFOUND

     

    Tabla CustomAction

    Acción Tipo Source Destino
    CA1 19 Ya está instalada una actualización más reciente.

     

    Tabla InstallExecuteSequence

    Acción Condición Secuencia
    FindRelatedProducts 200
    CA1 NEWPRODUCTFOUND 201

     

    Tabla Property

    Propiedad Value
    SecureCustomProperties NEWPRODUCTFOUND;UPGRADEFOUND