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 más información, consulte Costos de archivo.

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

Identificador de la instalación proporcionada a una acción personalizada de DLL o obtenida a través de MsiOpenPackage, MsiOpenPackageEx o 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. Este parámetro puede ser NULL. Si szComponent es null o una cadena vacía, MsiEnumComponentCosts enumera el espacio total en disco por unidad utilizada 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 usado durante la instalación puede ser mayor que el espacio usado 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, incrementarse 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 nulo. 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 . El 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 utilizado por 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 solo es necesario durante la instalación. Esto no afecta al requisito de espacio en disco final.

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

Comentarios

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

Se puede llamar a MsiEnumComponentCosts 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 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