Compartir a través de


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, MsiOpenPackageExo 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 debe 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 origen, CD-ROM o 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 siguientes valores:

Observaciones

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 desde 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 lo 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 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 Conventions for Function Prototypes.

Requisitos

Requisito Valor
cliente mínimo admitido 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
de la plataforma de destino de Windows
encabezado de msiquery.h
biblioteca de Msi.lib
DLL de Msi.dll

Consulte también

funciones de selección del instalador de

pasar null como argumento de funciones de Windows Installer