Função MsiEnumComponentCostsA (msiquery.h)

A função MsiEnumComponentCosts enumera o espaço em disco por unidade necessário para instalar um componente. Essas informações são necessárias para exibir o custo de espaço em disco necessário para todas as unidades na interface do usuário. Os custos retornados de espaço em disco são expressos em múltiplos de 512 bytes.

MsiEnumComponentCosts só deve ser executado depois que o instalador concluir o custo do arquivo e após a ação CostFinalize. Para obter mais informações, confira Avaliação de custo de arquivos.

Sintaxe

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

Manipule para a instalação fornecida a uma ação personalizada de DLL ou obtida por meio de MsiOpenPackage, MsiOpenPackageEx ou MsiOpenProduct.

[in] szComponent

Uma cadeia de caracteres terminada em nulo especificando o nome do componente conforme ele está listado na coluna Componente da tabela Componente. Este parâmetro pode ser nulo. Se szComponent for nulo ou uma cadeia de caracteres vazia, MsiEnumComponentCosts enumera o espaço em disco total por unidade usado durante a instalação. Nesse caso, iState é ignorado. Os custos do instalador incluem esses custos para armazenar o banco de dados em cache na pasta segura, bem como o custo para criar o script de instalação. Observe que o espaço em disco total usado durante a instalação pode ser maior do que o espaço usado após a instalação do componente.

[in] dwIndex

Índice baseado em 0 para unidades. Esse parâmetro deve ser zero para a primeira chamada para a função MsiEnumComponentCosts e incrementado para chamadas subsequentes.

[in] iState

Estado do componente solicitado a ser enumerado. Se szComponent for passado como Null ou uma cadeia de caracteres vazia, o instalador ignorará o parâmetro iState .

[out] szDriveBuf

Buffer que contém o nome da unidade, incluindo o terminador nulo. Essa é uma cadeia de caracteres vazia em caso de erro.

[in, out] pcchDriveBuf

Ponteiro para uma variável que especifica o tamanho, em TCHARs, do buffer apontado pelo parâmetro lpDriveBuf . Esse tamanho deve incluir o caractere nulo de terminação. Se o buffer fornecido for muito pequeno, a variável apontada por pcchDriveBuf conterá a contagem de caracteres que não incluem o terminador nulo.

[out] piCost

Custo do componente por unidade expresso em múltiplos de 512 bytes. Esse valor será 0 se ocorrer um erro. O valor retornado em piCost é espaço em disco final usado pelo componente após a instalação. Se szComponent for passado como Null ou uma cadeia de caracteres vazia, o instalador definirá o valor em piCost como 0.

[out] piTempCost

O custo do componente por unidade durante a instalação ou 0 se ocorreu um erro. O valor em *piTempCost representa os requisitos de espaço temporário durante a instalação. Esse requisito de espaço temporário é necessário apenas para a duração da instalação. Isso não afeta o requisito final de espaço em disco.

Retornar valor

Valor Retornado Significado
ERROR_INVALID_HANDLE_STATE
Os dados de configuração estão corrompidos.
ERROR_INVALID_PARAMETER
Um parâmetro inválido foi passado para a função.
ERROR_NO_MORE_ITEMS
Não há mais unidades a serem retornadas.
ERROR_SUCCESS
Um valor foi enumerado.
ERROR_UNKNOWN_COMPONENT
O componente está ausente.
ERROR_FUNCTION_NOT_CALLED
O custo não está completo.
ERROR_MORE_DATA
Buffer não grande o suficiente para o nome da unidade.
ERROR_INVALID_HANDLE
O identificador fornecido é inválido ou inativo.
 
 

Comentários

O método recomendado para enumerar os custos de espaço em disco por unidade é o seguinte. Comece com o dwIndex definido como 0 e incremente-o em um após cada chamada. Continue a enumeração desde que MsiEnumComponentCosts retorne ERROR_SUCCESS.

MsiEnumComponentCosts pode ser chamado de ações personalizadas.

O custo total do disco final para a instalação é a soma dos custos de todos os componentes mais o custo do Windows Installer (szComponent = null).

Observação

O cabeçalho msiquery.h define MsiEnumComponentCosts como um alias que seleciona automaticamente a versão ANSI ou Unicode dessa função com base na definição da constante de pré-processador UNICODE. Misturar o uso do alias neutro de codificação com código que não seja neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Convenções para protótipos de função.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows Installer 5.0 no Windows Server 2012, no Windows 8, no Windows Server 2008 R2 ou no Windows 7. Windows Installer 4.0 ou Windows Installer 4.5 no Windows Server 2008 ou no Windows Vista. Windows Installer no Windows Server 2003 ou no Windows XP
Plataforma de Destino Windows
Cabeçalho msiquery.h
Biblioteca Msi.lib
DLL Msi.dll