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 |
---|---|
|
Los datos de configuración están dañados. |
|
Se pasó un parámetro no válido a la función. |
|
No hay más unidades para devolver. |
|
Se ha enumerado un valor. |
|
Falta el componente. |
|
El costo no está completo. |
|
El búfer no es lo suficientemente grande como para el nombre de la unidad. |
|
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 |