Função MsiGetFeatureValidStatesA (msiquery.h)

A função MsiGetFeatureValidStates retorna um estado de instalação válido.

Sintaxe

UINT MsiGetFeatureValidStatesA(
  [in]  MSIHANDLE hInstall,
  [in]  LPCSTR    szFeature,
  [out] LPDWORD   lpInstallStates
);

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.

[out] lpInstallStates

Recebe o local para manter os estados de instalação válidos. Para cada estado de instalação válido, o instalador define pInstallState como uma combinação dos valores a seguir. Esse parâmetro não deve ser nulo.

Valor decimal Significado
2
INSTALLSTATE_ADVERTISED
O recurso pode ser anunciado.
4
INSTALLSTATE_ABSENT
O recurso pode estar ausente.
8
INSTALLSTATE_LOCAL
O recurso pode ser instalado na unidade local.
16
INSTALLSTATE_SOURCE
O recurso pode ser configurado para ser executado de origem, CD-ROM ou rede.
32
INSTALLSTATE_DEFAULT
O recurso pode ser configurado para usar o local padrão: local ou origem.

Retornar valor

A função MsiGetFeatureValidStates retorna os seguintes valores:

Comentários

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

A função MsiGetFeatureValidStates determina a validade do estado consultando todos os componentes vinculados ao recurso especificado sem levar em conta o estado atual instalado de qualquer componente.

Os estados válidos possíveis para um recurso são determinados da seguinte maneira:

  • Se o recurso não contiver componentes, INSTALLSTATE_LOCAL e INSTALLSTATE_SOURCE serão estados válidos para o recurso.
  • Se pelo menos um componente do recurso tiver um atributo de msidbComponentAttributesLocalOnly ou msidbComponentAttributesOptional, INSTALLSTATE_LOCAL será um estado válido para o recurso.
  • Se pelo menos um componente do recurso tiver um atributo de msidbComponentAttributesSourceOnly ou msidbComponentAttributesOptional, INSTALLSTATE_SOURCE será um estado válido para o recurso.
  • Se um arquivo de um componente que pertence ao recurso for corrigido ou de uma fonte compactada, INSTALLSTATE_SOURCE não será incluído como um estado válido para o recurso.
  • INSTALLSTATE_ADVERTISE não for um estado válido se o recurso não permitir anúncio (msidbFeatureAttributesDisallowAdvertise) ou o recurso exigir suporte de plataforma para anúncio (msidbFeatureAttributesNoUnsupportedAdvertise) e a plataforma não oferecer suporte a ele.
  • INSTALLSTATE_ABSENT é um estado válido para o recurso se seus atributos não incluirem msidbFeatureAttributesUIDisallowAbsent.
  • Os estados válidos para recursos filho marcados para seguir o recurso pai (msidbFeatureAttributesFollowParent) baseiam-se na ação do recurso pai ou no estado instalado.
Depois de chamar MsiGetFeatureValidStates , uma instrução condicional poderá ser usada para testar os estados de instalação válidos de um recurso. Por exemplo, a chamada a seguir para MsiGetFeatureValidStates obtém o estado de instalação de Feature1.
MsiGetFeatureValidStates(hProduct, "Feature1", &dwValidStates);

Se Feature1 tiver atributos de valor 0 (favor local) e Feature1 tiver um componente com atributos de valor 0 (somente local), o valor de dwValidStates após a chamada será 14. Isso indica que INSTALLSTATE_LOCAL, INSTALLSTATE_ABSENT e INSTALLSTATE_ADVERTISED são estados válidos para Feature1. A instrução condicional a seguir será avaliada como True se local for um estado válido para esse recurso.

( ( dwValidStates & ( 1 << INSTALLSTATE_LOCAL ) ) == ( 1 << INSTALLSTATE_LOCAL ) )

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

Observação

O cabeçalho msiquery.h define MsiGetFeatureValidStates 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

Confira também

Funções de seleção do instalador

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