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 |
---|---|
|
Os dados de configuração estão corrompidos. |
|
Um parâmetro inválido foi passado para a função. |
|
Não há mais unidades a serem retornadas. |
|
Um valor foi enumerado. |
|
O componente está ausente. |
|
O custo não está completo. |
|
Buffer não grande o suficiente para o nome da unidade. |
|
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 |