Eliminación de revisiones

A partir de Windows Installer versión 3.0 se pueden crear e instalar revisiones que pueden desinstalarse de forma automática y en cualquier orden, sin tener que desinstalar y reinstalar toda la aplicación y otras revisiones. Windows Installer 3.0 también permite crear paquetes de revisión con una tabla MsiPatchSequence que contiene información de secuenciación de revisiones. En las versiones de Windows Installer anteriores a Windows Installer 3.0, el único método para eliminar revisiones concretas de una aplicación consistía en desinstalar toda la aplicación revisada y, después, reinstalarla sin volver a aplicar las revisiones que se han desinstalado.

La posibilidad de desinstalar una revisión depende de cómo se creó la revisión, de la versión de Windows Installer que se usó para instalarla y de los cambios realizados por la revisión en la aplicación. Si una revisión no se puede desinstalar, la única manera de hacerlo es desinstalando toda la aplicación y volviendo a instalarla sin aplicar la revisión que se va a desinstalar.

Se pueden desinstalar una o varias revisiones mediante una opción de línea de comandos, la interfaz de scripting o llamando a MsiRemovePatches desde otra aplicación. Vea Desinstalación de revisiones para obtener más información sobre cómo desinstalar revisiones.

El valor de la propiedad MSIPATCHREMOVE indica las revisiones que se van a desinstalar. Por cada revisión de la lista, el instalador comprueba si se puede desinstalar o no. El instalador devuelve un error que indica que una transacción de instalación no ha podido realizarse si el usuario no tiene privilegios para desinstalar la revisión, si la revisión es desconocida para el producto, si la directiva de revisión impide desinstalarla o si la revisión se ha marcado como no desinstalable. Vea Revisiones desinstalables para obtener más información qué determina que una revisión no se pueda desinstalar.

Una vez confirmado que la revisión es desinstalable, el instalador la quita de la secuencia de aplicación de revisiones. Para obtener más información sobre cómo Windows Installer 3.0 determina qué secuencia usar al aplicar revisiones, vea Secuenciación de revisiones. Tenga en cuenta que quitar revisiones de la secuencia puede hacer que se activen revisiones marcadas como obsoletas o reemplazadas.

Todas las revisiones seleccionadas para quitarse se muestran en la propiedad MsiPatchRemovalList. Esta propiedad es una propiedad privada establecida por el instalador, y se puede usar en expresiones condicionales o consultarse mediante acciones personalizadas. La propiedad contiene la lista de GUID de códigos de revisión de las revisiones que se van a desinstalar. Una acción personalizada puede determinar si el estado de instalación de la revisión es aplicada, obsoleta o reemplazada llamando a MsiGetPatchInfoEx o a la propiedad PatchProperty del objeto Patch.

Después de desinstalar una revisión, el estado de la aplicación es el mismo a como si nunca se hubiera instalado esa revisión. Si es posible, el instalador restringe el proceso al subconjunto de características que se ven afectadas por la revisión que se va a desinstalar. El instalador establece automáticamente la propiedad REINSTALL en la lista de características afectadas. Los archivos agregados por la revisión se quitan y los archivos modificados por la revisión se sobrescriben. Los archivos y las entradas del Registro se restauran a la versión esperada por el producto menos la revisión. Se anula en el registro en la aplicación de las características y los componentes agregados por la revisión. Es importante indicar que puede quedar contenido adicional agregado por la revisión en el equipo del usuario si dicho contenido lo usa otra revisión que sigue siendo aplicable.

Si una revisión actualiza un archivo de un componente compartido, el cambio afectará a todas las aplicaciones que compartan el componente. Cuando la revisión se desinstala, el cambio afectará de nuevo a todas las aplicaciones que compartan el componente. Esto significa que la desinstalación de una revisión por parte de una aplicación puede restaurar el archivo del componente compartido en una versión inferior a la requerida por otra aplicación. Esto podría corregir la primera aplicación, pero hacer que la segunda deje de funcionar. En este caso, la segunda aplicación se puede reparar reinstalándola mediante los métodos descritos en Reinstalación de una característica o aplicación. Esto restaurará la versión revisada del archivo.

MsiEnumapplicationsEx

MsiGetPatchInfoEx

MSIPATCHREMOVE

MsiRemovePatches

Secuenciación de revisiones

Acciones personalizadas de desinstalación de revisiones

Revisiones desinstalables

Desinstalación de revisiones