Función MsiGetFeatureValidStatesA (msiquery.h)

La función MsiGetFeatureValidStates devuelve un estado de instalación válido.

Sintaxis

UINT MsiGetFeatureValidStatesA(
  [in]  MSIHANDLE hInstall,
  [in]  LPCSTR    szFeature,
  [out] LPDWORD   lpInstallStates
);

Parámetros

[in] hInstall

Controle la instalación proporcionada a una acción personalizada de DLL o obtenida a través de MsiOpenPackage, MsiOpenPackageEx o MsiOpenProduct.

[in] szFeature

Especifica el nombre de la característica.

[out] lpInstallStates

Recibe la ubicación para contener los estados de instalación válidos. Para cada estado de instalación válido, el instalador establece pInstallState en una combinación de los valores siguientes. Este parámetro no debería ser null.

Valor decimal Significado
2
INSTALLSTATE_ADVERTISED
La característica se puede anunciar.
4
INSTALLSTATE_ABSENT
La característica puede estar ausente.
8
INSTALLSTATE_LOCAL
La característica se puede instalar en la unidad local.
16
INSTALLSTATE_SOURCE
La característica se puede configurar para que se ejecute desde el origen, CD-ROM o la red.
32
INSTALLSTATE_DEFAULT
La característica se puede configurar para usar la ubicación predeterminada: local o de origen.

Valor devuelto

La función MsiGetFeatureValidStates devuelve los valores siguientes:

Comentarios

Consulte Llamar a funciones de base de datos desde programas.

La función MsiGetFeatureValidStates determina la validez del estado consultando todos los componentes vinculados a la característica especificada sin tener en cuenta el estado instalado actual de ningún componente.

Los posibles estados válidos para una característica se determinan de la siguiente manera:

  • Si la característica no contiene componentes, tanto INSTALLSTATE_LOCAL como INSTALLSTATE_SOURCE son estados válidos para la característica.
  • Si al menos un componente de la característica tiene un atributo de msidbComponentAttributesLocalOnly o msidbComponentAttributesOptional, INSTALLSTATE_LOCAL es un estado válido para la característica.
  • Si al menos un componente de la característica tiene un atributo de msidbComponentAttributesSourceOnly o msidbComponentAttributesOptional, INSTALLSTATE_SOURCE es un estado válido para la característica.
  • Si un archivo de un componente que pertenece a la característica se revisa o de un origen comprimido, INSTALLSTATE_SOURCE no se incluye como un estado válido para la característica.
  • INSTALLSTATE_ADVERTISE no es un estado válido si la característica no permite el anuncio (msidbFeatureAttributesDisallowAdvertise) o la característica requiere compatibilidad con la plataforma para el anuncio (msidbFeatureAttributesNoUnsupportedAdvertise) y la plataforma no la admite.
  • INSTALLSTATE_ABSENT es un estado válido para la característica si sus atributos no incluyen msidbFeatureAttributesUIDisallowAbsent.
  • Los estados válidos para las características secundarias marcadas para seguir la característica primaria (msidbFeatureAttributesFollowParent) se basan en la acción o el estado instalado de la característica primaria.
Después de llamar a MsiGetFeatureValidStates , se puede usar una instrucción condicional para probar los estados de instalación válidos de una característica. Por ejemplo, la siguiente llamada a MsiGetFeatureValidStates obtiene el estado de instalación de Feature1.
MsiGetFeatureValidStates(hProduct, "Feature1", &dwValidStates);

Si Feature1 tiene atributos de valor 0 (favor local) y Feature1 tiene un componente con atributos de valor 0 (solo local), el valor de dwValidStates después de la llamada es 14. Esto indica que INSTALLSTATE_LOCAL, INSTALLSTATE_ABSENT y INSTALLSTATE_ADVERTISED son estados válidos para Feature1. La siguiente instrucción condicional se evalúa como True si local es un estado válido para esta característica.

( ( dwValidStates & ( 1 << INSTALLSTATE_LOCAL ) ) == ( 1 << INSTALLSTATE_LOCAL ) )

Si se produce un error en la función, puede obtener información de error extendida mediante MsiGetLastErrorRecord.

Nota

El encabezado msiquery.h define MsiGetFeatureValidStates como un 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 neutro de codificación con código que no es neutral de codificación puede provocar discrepancias que dan lugar a errores de compilación o en tiempo de ejecución. Para obtener más información, vea Convenciones para prototipos de función.

Requisitos

Requisito Value
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. Windows Installer en Windows Server 2003 o Windows XP
Plataforma de destino Windows
Encabezado msiquery.h
Library Msi.lib
Archivo DLL Msi.dll

Consulte también

Funciones de selección del instalador

Pasar Null como argumento de las funciones de Windows Installer