Función MsiGetFeatureCostA (msiquery.h)

La función MsiGetFeatureCost devuelve el espacio en disco requerido por una característica y sus características secundarias y primarias seleccionadas.

Sintaxis

UINT MsiGetFeatureCostA(
  [in]  MSIHANDLE    hInstall,
  [in]  LPCSTR       szFeature,
  [in]  MSICOSTTREE  iCostTree,
  [in]  INSTALLSTATE iState,
  [out] LPINT        piCost
);

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] iCostTree

Especifica el valor que usa la función para determinar los requisitos de espacio en disco. Este parámetro puede ser uno de los valores siguientes.

Valor Significado
MSICOSTTREE_CHILDREN
Los elementos secundarios de la característica indicada se incluyen en el costo.
MSICOSTTREE_PARENTS
Las características primarias de la característica indicada se incluyen en el costo.
MSICOSTTREE_SELFONLY
La característica solo se incluye en el costo.

[in] iState

Especifica el estado de instalación. Este parámetro puede ser uno de los valores siguientes.

Valor Significado
INSTALLSTATE_UNKNOWN
El producto o la característica no se reconocen.
INSTALLSTATE_ABSENT
El producto o la característica se desinstalan.
INSTALLSTATE_LOCAL
El producto o la característica se instalan en la unidad local.
INSTALLSTATE_SOURCE
El producto o la característica se instala para ejecutarse desde el origen, el CD o la red.
INSTALLSTATE_DEFAULT
El producto o la característica se instalarán para usar la ubicación predeterminada: local o de origen.

[out] piCost

Recibe los requisitos de espacio en disco en unidades de 512 bytes. Este parámetro no debe ser null.

Valor devuelto

La función MsiGetFeatureCost devuelve los siguientes valores:

Comentarios

Consulte Llamar a funciones de base de datos desde programas.

Con la función MsiGetFeatureCost , el valor de MSICOSTTREE_SELFONLY indica la cantidad total de espacio en disco (en unidades de 512 bytes) requerida solo por la característica especificada. Este valor devuelto no incluye los elementos secundarios ni las características primarias de la característica especificada. Este costo total se compone de los costos de disco atribuidos a todos los componentes vinculados a la característica.

El valor de MSICOSTTREE_CHILDREN indica la cantidad total de espacio en disco (en unidades de 512 bytes) requerida por la característica especificada y sus elementos secundarios. Para cada característica, el costo total se compone de los costos de disco atribuidos a cada componente vinculado a la característica.

El valor de MSICOSTTREE_PARENTS indica la cantidad total de espacio en disco (en unidades de 512 bytes) que requiere la característica especificada y sus características primarias (hasta la raíz de la tabla de características). Para cada característica, el costo total se compone de los costos de disco atribuidos a cada componente vinculado a la característica.

MsiGetFeatureCost depende de otras funciones para que se realicen correctamente. En el ejemplo siguiente se muestra el orden en el que se debe llamar a estas funciones:

MSIHANDLE   hInstall;      //product handle, must be closed
int         iCost;         //cost returned by MsiGetFeatureCost

MsiOpenPackage("Path to package....",&hInstall);   //"Path to package...." should be replaced with the full path to the package to be opened
MsiDoAction(hInstall,"CostInitialize");         //
MsiDoAction(hInstall,"FileCost");
MsiDoAction(hInstall,"CostFinalize");
MsiDoAction(hInstall,"InstallValidate");
MsiGetFeatureCost(hInstall,"FeatureName",MSICOSTTREE_SELFONLY,INSTALLSTATE_ABSENT,&iCost);
MsiCloseHandle(hInstall);                        //close the open product handle

El proceso para consultar el costo de las características programadas para quitarse es ligeramente diferente:

MSIHANDLE   hInstall;      //product handle, must be closed
int         iCost;         //cost returned by MsiGetFeatureCost

MsiOpenPackage("Path to package....",&hInstall);              //"Path to package...." should be replaced with the full path to the package to be opened
MsiDoAction(hInstall,"CostInitialize");                          //
MsiDoAction(hInstall,"FileCost");
MsiDoAction(hInstall,"CostFinalize");
MsiSetFeatureState(hInstall,"FeatureName",INSTALLSTATE_ABSENT);  //set the feature's state to "not installed"
MsiDoAction(hInstall,"InstallValidate");
MsiGetFeatureCost(hInstall,"FeatureName",MSICOSTTREE_SELFONLY,INSTALLSTATE_ABSENT,&iCost);
MsiCloseHandle(hInstall);                                        //close the open product handle

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

Nota:

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

   
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