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