Função MsiSetFeatureStateA (msiquery.h)

A função MsiSetFeatureState define um recurso como um estado especificado.

Sintaxe

UINT MsiSetFeatureStateA(
  [in] MSIHANDLE    hInstall,
  [in] LPCSTR       szFeature,
  [in] INSTALLSTATE iState
);

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

Especifica o estado a ser definido. Esse parâmetro pode usar um dos valores a seguir.

Valor Significado
INSTALLSTATE_ABSENT
O recurso não é instalado.
INSTALLSTATE_LOCAL
O recurso é instalado na unidade local.
INSTALLSTATE_SOURCE
O recurso é executado na origem, CD ou rede.
INSTALLSTATE_ADVERTISED
O recurso é anunciado.

Retornar valor

A função MsiSetFeatureState retorna os seguintes valores:

Comentários

A função MsiSetFeatureState solicita uma alteração no estado de seleção de um recurso na tabela Feature e seus filhos. Por sua vez, o estado de ação de todos os componentes vinculados aos registros de recursos alterados também é atualizado adequadamente, com base no novo estado de seleção de recurso.

A função MsiSetInstallLevel deve ser chamada antes de chamar MsiSetFeatureState.

Quando MsiSetFeatureState é chamado, o instalador tenta definir o estado de ação de cada componente vinculado ao recurso especificado para o estado especificado. No entanto, há situações comuns em que a solicitação não pode ser totalmente implementada. Por exemplo, se um recurso estiver vinculado a dois componentes, o componente A e o componente B, por meio da tabela FeatureComponents , e o componente A tiver o atributo msidbComponentAttributesLocalOnly e o componente B terá o atributo msidbComponentAttributesSourceOnly . Nesse caso, se MsiSetFeatureState for chamado com um estado solicitado de INSTALLSTATE_LOCAL ou INSTALLSTATE_SOURCE, a solicitação não poderá ser totalmente implementada para ambos os componentes. Nesse caso, ambos os componentes são ativados, com o componente A definido como Local e o componente B definido como Origem.

Se mais de um recurso estiver vinculado a um único componente (um cenário comum), o estado de ação final desse componente será determinado da seguinte maneira:

  • Se pelo menos um recurso exigir que o componente seja instalado localmente, o recurso será instalado com um estado local.
  • Se pelo menos um recurso exigir que o componente seja executado na origem, o recurso será instalado com um estado de origem.
  • Se pelo menos um recurso exigir a remoção do componente, o estado de ação estará ausente.
Consulte Chamando funções de banco de dados de programas.

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

Observação

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