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.
[in] iState
Especifica o estado de instalação. Esse parâmetro pode usar um dos valores a seguir.
[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