Compartilhar via


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

[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 para 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 de origem.

Valor de retorno

A função MsiGetFeatureValidStates retorna os seguintes valores:

Observações

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) são baseados 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 do Feature1.
MsiGetFeatureValidStates(hProduct, "Feature1", &dwValidStates);

Se o Feature1 tiver atributos do valor 0 (favor local) e o 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 o 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.

Nota

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