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 para a instalação fornecida a uma ação personalizada de DLL ou obtida por meio de MsiOpenPackage, MsiOpenPackageEx ou 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 usar um dos valores a seguir.

Valor Significado
MSICOSTTREE_CHILDREN
Os filhos do recurso indicado estão incluídos no custo.
MSICOSTTREE_PARENTS
Os recursos pai do recurso indicado estã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 usar um dos valores a seguir.

Valor Significado
INSTALLSTATE_UNKNOWN
O produto ou recurso não é reconhecido.
INSTALLSTATE_ABSENT
O produto ou recurso está 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 origem.

[out] piCost

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

Valor retornado

A função MsiGetFeatureCost retorna os seguintes valores:

Comentários

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. O custo total de cada recurso é 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 Recurso). O custo total de cada recurso é 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.

Observação

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

   
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

Confira também

Funções de seleção do instalador

Passando Null como o argumento das funções do Windows Installer