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.
[in] iState
Especifica o estado de instalação. Esse parâmetro pode ser 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 nulo.
Valor de retorno
A função
Observações
Consulte chamando funções de banco de dados de programas.
Com a função
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