Compartir a través de


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, MsiOpenPackageExo 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 siguientes valores.

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 se anuncia.

Valor devuelto

La función MsiSetFeatureState devuelve los siguientes valores:

Observaciones

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 correctamente, 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 asociado a la característica especificada en el estado especificado. Sin embargo, hay situaciones comunes en las que la solicitud no se puede implementar completamente. Por ejemplo, si una característica está vinculada 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 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 Origen.

Si más de una característica está 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 está ausente.
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 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