Función MsiDeterminePatchSequenceA (msi.h)

La función MsiDeterminePatchSequence toma un conjunto de archivos de revisión, archivos XML y blobs XML y determina la mejor secuencia de aplicación para las revisiones en un producto instalado especificado. Esta función tiene en cuenta las revisiones que ya se han aplicado al producto y las cuentas de revisiones obsoletas y reemplazadas.

Sintaxis

UINT MsiDeterminePatchSequenceA(
  [in]           LPCSTR                 szProductCode,
  [in, optional] LPCSTR                 szUserSid,
  [in]           MSIINSTALLCONTEXT      dwContext,
  [in]           DWORD                  cPatchInfo,
  [in]           PMSIPATCHSEQUENCEINFOA pPatchInfo
);

Parámetros

[in] szProductCode

Producto que es el destino del conjunto de revisiones. El valor debe ser el GUID de ProductCode para el producto.

[in, optional] szUserSid

Cadena terminada en NULL que especifica un identificador de seguridad (SID) de un usuario. Este parámetro restringe el contexto de enumeración de esta cuenta de usuario. Este parámetro no puede ser las cadenas de SID especiales "S-1-1-0" (todos) o "S-1-5-18" (sistema local). Para el contexto de máquina dwContext se establece en MSIINSTALLCONTEXT_MACHINE y szUserSid debe ser NULL. Para el contexto de usuario actual , szUserSid puede ser null y dwContext se puede establecer en MSIINSTALLCONTEXT_USERMANAGED o MSIINSTALLCONTEXT_USERUNMANAGED.

[in] dwContext

Restringe la enumeración a un contexto por usuario no administrado, administrado por usuario o por máquina. Este parámetro puede ser cualquiera de los valores siguientes.

Tipo de contexto Significado
MSIINSTALLCONTEXT_USERMANAGED
Las revisiones se tienen en cuenta para todas las instalaciones administradas por usuario del producto para el usuario especificado por szUserSid. Un valor null szUserSid con este contexto significa el usuario actual.
MSIINSTALLCONTEXT_USERUNMANAGED
Las revisiones se tienen en cuenta para todas las instalaciones no administradas por usuario para el usuario especificado por szUserSid. Un valor null szUserSid con este contexto significa el usuario actual.
MSIINSTALLCONTEXT_MACHINE
Las revisiones se consideran para la instalación por máquina. Cuando dwContext se establece en MSIINSTALLCONTEXT_MACHINE el parámetro szUserSid debe ser null.

[in] cPatchInfo

Número de revisiones de la matriz.

[in] pPatchInfo

Puntero a una matriz de estructuras MSIPATCHSEQUENCEINFO .

Valor devuelto

La función MsiDeterminePatchSequence devuelve los valores siguientes.

Valor Significado
ERROR_FUNCTION_FAILED
Error en la función de una manera que no se trata en los otros códigos de error.
ERROR_INVALID_PARAMETER
Un argumento no es válido.
ERROR_PATCH_NO_SEQUENCE
No se encuentra ninguna secuencia válida para el conjunto de revisiones.
ERROR_INSTALL_PACKAGE_OPEN_FAILED
No se puede abrir un paquete de instalación al que hace referencia la ruta de acceso.
ERROR_SUCCESS
Las revisiones se ordenaron correctamente.
ERROR_FILE_NOT_FOUND
No se encontró el archivo .msi.
ERROR_PATH_NOT_FOUND
No se encontró la ruta de acceso al archivo .msi.
ERROR_INVALID_PATCH_XML
Los datos de revisión XML no son válidos.
ERROR_INSTALL_PACKAGE_INVALID
El paquete de instalación no era válido.
ERROR_ACCESS_DENIED
Un usuario que no es un administrador intentó llamar a la función con un contexto de otro usuario.
ERROR_BAD_CONFIGURATION
Los datos de configuración de una revisión o producto registrados no son válidos.
ERROR_UNKNOWN_PRODUCT
El GUID de ProductCode especificado no está registrado.
ERROR_FUNCTION_NOT_CALLED
La versión 3.0 de Windows Installer es necesaria para determinar la mejor secuencia de revisiones. Se llamó a la función con szProductCode aún no instalado con Windows Installer versión 3.0.
ERROR_CALL_NOT_IMPLEMENTED
Este error se puede devolver si se llamó a la función desde una acción personalizada o si MSXML 3.0 no está instalado.
ERROR_UNKNOWN_PATCH
La revisión especificada es desconocida.

Comentarios

Los usuarios que no tienen privilegios de administrador solo pueden llamar a esta función en su propio contexto de máquina o . Los usuarios que son administradores pueden llamarlo para otros usuarios.

Si se llama a esta función desde una acción personalizada, se produce un error y devuelve ERROR_CALL_NOT_IMPLEMENTED. La función requiere MSXML versión 3.0 para procesar XML y devuelve ERROR_CALL_NOT_IMPLEMENTED si MSXML 3.0 no está instalado.

La función MsiDeterminePatchSequence establece los miembros uStatus y dwOrder de cada estructura MSIPATCHSEQUENCEINFO a la que apunta pPatchInfo. Cada estructura contiene información sobre una revisión determinada.

Si la función se realiza correctamente, la estructura MSIPATCHSEQUENCEINFO de cada revisión que se puede aplicar al producto devuelve con una uStatus de ERROR_SUCCESS y un dwOrder mayor o igual que cero. Los valores de dwOrder mayor o igual que cero indican la mejor secuencia de aplicación para las revisiones a partir de cero.

Si la función se realiza correctamente, las revisiones excluidas de la mejor secuencia de aplicación de revisiones devuelven una estructura MSIPATCHSEQUENCEINFO con dwOrder igual a -1. En estos casos, un campo uStatus de ERROR_SUCCESS indica una revisión obsoleta o reemplazada para el producto. Un campo uStatus de ERROR_PATCH_TARGET_NOT_FOUND indica una revisión que no se puede aplicar al producto.

Si se produce un error en la función, la estructura MSIPATCHSEQUENCEINFO de cada revisión devuelve un dwOrder igual a -1. En este caso, los campos uStatus pueden contener errores con más información sobre las revisiones individuales. Por ejemplo, ERROR_PATCH_NO_SEQUENCE se devuelve para las revisiones que tienen información de secuenciación circular.

Nota:

El encabezado msi.h define MsiDeterminePatchSequence como alias que selecciona automáticamente la versión ANSI o Unicode de esta función en función de la definición de la constante de preprocesador UNICODE. La combinación del uso del alias neutral de codificación con código que no es neutral de codificación puede dar lugar a errores de coincidencia que dan lugar a errores de compilación o tiempo de ejecución. Para obtener más información, vea Convenciones para prototipos de función.

Requisitos

   
Cliente mínimo compatible Windows Installer 5.0 en Windows Server 2012, Windows 8, Windows Server 2008 R2 o Windows 7. Windows Installer 4.0 o Windows Installer 4.5 en Windows Server 2008 o Windows Vista. Consulte Requisitos de Windows Installer en tiempo de ejecución para obtener información sobre el Service Pack mínimo de Windows que requiere una versión de Windows Installer.
Plataforma de destino Windows
Encabezado msi.h
Library Msi.lib
Archivo DLL Msi.dll

Consulte también

MSIPATCHSEQUENCEINFO

MsiDetermineApplicablePatches

No se admite en Windows Installer 2.0 ni en versiones anteriores

ProductCode