Compartir a través de


Función MsiGetFeatureCostA (msiquery.h)

La función MsiGetFeatureCost devuelve el espacio en disco requerido por una característica y sus elementos secundarios y principales seleccionados.

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

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

Valor Significado
INSTALLSTATE_UNKNOWN
No se reconoce el producto o la característica.
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 origen, CD o 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:

Observaciones

Consulte llamar a funciones de base de datos desde programas.

Con la función msiGetFeatureCost de , el valor de MSICOSTTREE_SELFONLY indica la cantidad total de espacio en disco (en unidades de 512 bytes) necesaria solo para 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 que se atribuyen 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 asignados a todos los componentes vinculados a la característica.

El valor de MSICOSTTREE_PARENTS indica la cantidad total de espacio en disco (en unidades de 512 bytes) requerida por la característica especificada y sus características primarias (hasta la raíz de la tabla de características de ). Para cada característica, el costo total se compone de los costos de disco asignados a todos los componentes vinculados 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 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