Compartilhar via


Função MsiGetFeatureCostA (msiquery.h)

A função MsiGetFeatureCost retorna o espaço em disco exigido por um recurso e seus recursos filhos e pai selecionados.

Sintaxe

UINT MsiGetFeatureCostA(
  [in]  MSIHANDLE    hInstall,
  [in]  LPCSTR       szFeature,
  [in]  MSICOSTTREE  iCostTree,
  [in]  INSTALLSTATE iState,
  [out] LPINT        piCost
);

Parâmetros

[in] hInstall

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

[in] szFeature

Especifica o nome do recurso.

[in] iCostTree

Especifica o valor que a função usa para determinar os requisitos de espaço em disco. Esse parâmetro pode ser um dos valores a seguir.

Valor Significado
MSICOSTTREE_CHILDREN
Os filhos do recurso indicado são incluídos no custo.
MSICOSTTREE_PARENTS
Os recursos pai do recurso indicado são incluídos no custo.
MSICOSTTREE_SELFONLY
O recurso só está incluído no custo.

[in] iState

Especifica o estado de instalação. Esse parâmetro pode ser um dos valores a seguir.

Valor Significado
INSTALLSTATE_UNKNOWN
O produto ou recurso não é reconhecido.
INSTALLSTATE_ABSENT
O produto ou recurso é desinstalado.
INSTALLSTATE_LOCAL
O produto ou recurso é instalado na unidade local.
INSTALLSTATE_SOURCE
O produto ou recurso é instalado para ser executado de origem, CD ou rede.
INSTALLSTATE_DEFAULT
O produto ou recurso será instalado para usar o local padrão: local ou de origem.

[out] piCost

Recebe os requisitos de espaço em disco em unidades de 512 bytes. Esse parâmetro não deve ser nulo.

Valor de retorno

A função MsiGetFeatureCost retorna os seguintes valores:

Observações

Consulte chamando funções de banco de dados de programas.

Com a função MsiGetFeatureCost, o valor MSICOSTTREE_SELFONLY indica a quantidade total de espaço em disco (em unidades de 512 bytes) exigida apenas pelo recurso especificado. Esse valor retornado não inclui os filhos ou os recursos pai do recurso especificado. Esse custo total é composto pelos custos de disco atribuídos a cada componente vinculado ao recurso.

O valor MSICOSTTREE_CHILDREN indica a quantidade total de espaço em disco (em unidades de 512 bytes) exigida pelo recurso especificado e seus filhos. Para cada recurso, o custo total é composto pelos custos de disco atribuídos a cada componente vinculado ao recurso.

O valor MSICOSTTREE_PARENTS indica a quantidade total de espaço em disco (em unidades de 512 bytes) exigida pelo recurso especificado e seus recursos pai (até a raiz da tabela de recursos ). Para cada recurso, o custo total é composto pelos custos de disco atribuídos a cada componente vinculado ao recurso.

msiGetFeatureCost depende de várias outras funções para ter êxito. O exemplo a seguir demonstra a ordem na qual essas funções devem ser chamadas:

MSIHANDLE   hInstall;      //product handle, must be closed
int         iCost;         //cost returned by MsiGetFeatureCost

MsiOpenPackage("Path to package....",&hInstall);   //"Path to package...." should be replaced with the full path to the package to be opened
MsiDoAction(hInstall,"CostInitialize");         //
MsiDoAction(hInstall,"FileCost");
MsiDoAction(hInstall,"CostFinalize");
MsiDoAction(hInstall,"InstallValidate");
MsiGetFeatureCost(hInstall,"FeatureName",MSICOSTTREE_SELFONLY,INSTALLSTATE_ABSENT,&iCost);
MsiCloseHandle(hInstall);                        //close the open product handle

O processo para consultar o custo dos recursos agendados para serem removidos é ligeiramente diferente:

MSIHANDLE   hInstall;      //product handle, must be closed
int         iCost;         //cost returned by MsiGetFeatureCost

MsiOpenPackage("Path to package....",&hInstall);              //"Path to package...." should be replaced with the full path to the package to be opened
MsiDoAction(hInstall,"CostInitialize");                          //
MsiDoAction(hInstall,"FileCost");
MsiDoAction(hInstall,"CostFinalize");
MsiSetFeatureState(hInstall,"FeatureName",INSTALLSTATE_ABSENT);  //set the feature's state to "not installed"
MsiDoAction(hInstall,"InstallValidate");
MsiGetFeatureCost(hInstall,"FeatureName",MSICOSTTREE_SELFONLY,INSTALLSTATE_ABSENT,&iCost);
MsiCloseHandle(hInstall);                                        //close the open product handle

Se a função falhar, você poderá obter informações de erro estendidas usando msiGetLastErrorRecord.

Nota

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

Requisitos

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

Consulte também

Funções de seleção do instalador

passando nulo como o argumento do Windows Installer Functions