Compartir a través de


Función MsiEnumComponentCostsA (msiquery.h)

La función MsiEnumComponentCosts enumera el espacio en disco por unidad necesaria para instalar un componente. Esta información es necesaria para mostrar el costo de espacio en disco necesario para todas las unidades de la interfaz de usuario. Los costos de espacio en disco devueltos se expresan en múltiplo de 512 bytes.

MsiEnumComponentCosts solo se debe ejecutar después de que el instalador haya completado el costo del archivo y después de la acción CostFinalize. Para obtener más información, consulte de costos de archivos .

Sintaxis

UINT MsiEnumComponentCostsA(
  [in]      MSIHANDLE    hInstall,
  [in]      LPCSTR       szComponent,
  [in]      DWORD        dwIndex,
  [in]      INSTALLSTATE iState,
  [out]     LPSTR        szDriveBuf,
  [in, out] LPDWORD      pcchDriveBuf,
  [out]     LPINT        piCost,
  [out]     LPINT        piTempCost
);

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

Cadena terminada en null que especifica el nombre del componente tal y como se muestra en la columna Componente de la tabla componente de componente. Este parámetro puede ser NULL. Si szComponent es null o una cadena vacía, MsiEnumComponentCosts enumera el espacio total en disco por unidad que se usa durante la instalación. En este caso, se omite iState. Los costos del instalador incluyen esos costos para almacenar en caché la base de datos en la carpeta segura, así como el costo de crear el script de instalación. Tenga en cuenta que el espacio total en disco utilizado durante la instalación puede ser mayor que el espacio utilizado después de instalar el componente.

[in] dwIndex

Índice basado en 0 para unidades. Este parámetro debe ser cero para la primera llamada a la función MsiEnumComponentCosts y, a continuación, se incrementa para las llamadas posteriores.

[in] iState

Estado de componente solicitado que se va a enumerar. Si szComponent se pasa como Null o una cadena vacía, el instalador omite el parámetro iState.

[out] szDriveBuf

Búfer que contiene el nombre de la unidad, incluido el terminador NULL. Se trata de una cadena vacía en caso de error.

[in, out] pcchDriveBuf

Puntero a una variable que especifica el tamaño, en TCHAR, del búfer al que apunta el parámetro lpDriveBuf. Este tamaño debe incluir el carácter nulo de terminación. Si el búfer proporcionado es demasiado pequeño, la variable a la que apunta pcchDriveBuf contiene el recuento de caracteres que no incluyen el terminador nulo.

[out] piCost

Costo del componente por unidad expresado en múltiplo de 512 bytes. Este valor es 0 si se ha producido un error. El valor devuelto en piCost es el espacio en disco final que usa el componente después de la instalación. Si szComponent se pasa como Null o una cadena vacía, el instalador establece el valor en piCost en 0.

[out] piTempCost

Costo del componente por unidad durante la instalación o 0 si se produjo un error. El valor de *piTempCost representa los requisitos de espacio temporal durante la instalación. Este requisito de espacio temporal es espacio necesario solo durante la instalación. Esto no afecta al requisito final de espacio en disco.

Valor devuelto

Valor devuelto Significado
ERROR_INVALID_HANDLE_STATE
Los datos de configuración están dañados.
ERROR_INVALID_PARAMETER
Se pasó un parámetro no válido a la función .
ERROR_NO_MORE_ITEMS
No hay más unidades que devolver.
ERROR_SUCCESS
Se ha enumerado un valor.
ERROR_UNKNOWN_COMPONENT
Falta el componente.
ERROR_FUNCTION_NOT_CALLED
El costo no está completo.
ERROR_MORE_DATA
El búfer no es lo suficientemente grande como para el nombre de la unidad.
ERROR_INVALID_HANDLE
El identificador proporcionado no es válido o está inactivo.
 
 

Observaciones

El método recomendado para enumerar los costos de espacio en disco por unidad es el siguiente. Comience con dwIndex establecido en 0 e inícielo en uno después de cada llamada. Continúe con la enumeración siempre que msiEnumComponentCosts devuelva ERROR_SUCCESS.

msiEnumComponentCosts se puede llamar desde acciones personalizadas.

El costo total del disco final para la instalación es la suma de los costos de todos los componentes más el costo de Windows Installer (szComponent = null).

Nota

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