Función MsiSetFeatureStateA (msiquery.h)

La función MsiSetFeatureState establece una característica en un estado especificado.

Sintaxis

UINT MsiSetFeatureStateA(
  [in] MSIHANDLE    hInstall,
  [in] LPCSTR       szFeature,
  [in] INSTALLSTATE iState
);

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.

[in] iState

Especifica el estado que se va a establecer. Este parámetro puede ser uno de los valores siguientes.

Valor Significado
INSTALLSTATE_ABSENT
La característica no está instalada.
INSTALLSTATE_LOCAL
La característica se instala en la unidad local.
INSTALLSTATE_SOURCE
La característica se ejecuta desde el origen, el CD o la red.
INSTALLSTATE_ADVERTISED
La característica está anunciada.

Valor devuelto

La función MsiSetFeatureState devuelve los valores siguientes:

Comentarios

La función MsiSetFeatureState solicita un cambio en el estado de selección de una característica de la tabla Feature y sus elementos secundarios. A su vez, el estado de acción de todos los componentes vinculados a los registros de características modificados también se actualiza adecuadamente, en función del nuevo estado de selección de características.

Se debe llamar a la función MsiSetInstallLevel antes de llamar a MsiSetFeatureState.

Cuando se llama a MsiSetFeatureState , el instalador intenta establecer el estado de acción de cada componente vinculado a la característica especificada en el estado especificado. Sin embargo, hay situaciones comunes en las que la solicitud no se puede implementar por completo. Por ejemplo, si una característica está asociada a dos componentes, componente A y componente B, a través de la tabla FeatureComponents y el componente A tiene el atributo msidbComponentAttributesLocalOnly y el componente B tiene el atributo msidbComponentAttributesSourceOnly . En este caso, si se llama a MsiSetFeatureState con un estado solicitado de INSTALLSTATE_LOCAL o INSTALLSTATE_SOURCE, la solicitud no se puede implementar completamente para ambos componentes. En este caso, ambos componentes están activados, con el componente A establecido en Local y el componente B establecido en Source.

Si hay más de una característica vinculada a un único componente (un escenario común), el estado de acción final de ese componente se determina de la siguiente manera:

  • Si al menos una característica requiere que el componente se instale localmente, la característica se instala con un estado local.
  • Si al menos una característica requiere que el componente se ejecute desde el origen, la característica se instala con un estado de origen.
  • Si al menos una característica requiere la eliminación del componente, el estado de la acción no está presente.
Consulte Llamar a funciones de base de datos desde programas.

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

Nota

El encabezado msiquery.h define MsiSetFeatureState 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 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