Condividi tramite


Funzione MsiSetFeatureStateA (msiquery.h)

La funzione MsiSetFeatureState imposta una funzionalità su uno stato specificato.

Sintassi

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

Parametri

[in] hInstall

Gestire l'installazione fornita a un'azione personalizzata DLL o ottenuta tramite MsiOpenPackage, MsiOpenPackageExo MsiOpenProduct.

[in] szFeature

Specifica il nome della funzionalità.

[in] iState

Specifica lo stato da impostare. Questo parametro può essere uno dei valori seguenti.

Valore Significato
INSTALLSTATE_ABSENT
La funzionalità non è installata.
INSTALLSTATE_LOCAL
La funzionalità viene installata nell'unità locale.
INSTALLSTATE_SOURCE
La funzionalità viene eseguita dall'origine, dal CD o dalla rete.
INSTALLSTATE_ADVERTISED
La funzionalità viene pubblicizzata.

Valore restituito

La funzione msiSetFeatureState restituisce i valori seguenti:

Osservazioni

La funzione MsiSetFeatureState richiede una modifica nello stato di selezione di una funzionalità nella tabella Feature e nei relativi elementi figlio. A sua volta, lo stato dell'azione di tutti i componenti collegati ai record delle funzionalità modificate viene aggiornato in modo appropriato, in base allo stato di selezione della nuova funzionalità.

È necessario chiamare la funzione msiSetInstallLevel prima di chiamare MsiSetFeatureState.

Quando viene chiamato MsiSetFeatureState, il programma di installazione tenta di impostare lo stato di azione di ogni componente associato alla funzionalità specificata allo stato specificato. Tuttavia, esistono situazioni comuni in cui la richiesta non può essere completamente implementata. Ad esempio, se una funzionalità è associata a due componenti, componente A e componente B, tramite la tabella FeatureComponents e il componente A ha il msidbComponentAttributesLocalOnly attributo e componente B ha l'attributo msidbComponentAttributesSourceOnly attributo. In questo caso, se MsiSetFeatureState viene chiamato con uno stato richiesto di INSTALLSTATE_LOCAL o INSTALLSTATE_SOURCE, la richiesta non può essere completamente implementata per entrambi i componenti. In questo caso, entrambi i componenti sono attivati, con componente A impostato su Locale e componente B impostato su Origine.

Se più di una funzionalità è collegata a un singolo componente (uno scenario comune), lo stato dell'azione finale di tale componente viene determinato come segue:

  • Se almeno una funzionalità richiede l'installazione locale del componente, la funzionalità viene installata con uno stato locale.
  • Se almeno una funzionalità richiede che il componente venga eseguito dall'origine, la funzionalità viene installata con uno stato di origine.
  • Se almeno una funzionalità richiede la rimozione del componente, lo stato dell'azione è assente.
Vedere Chiamata di funzioni di database da programmi.

Se la funzione non riesce, è possibile ottenere informazioni estese sull'errore usando MsiGetLastErrorRecord.

Nota

L'intestazione msiquery.h definisce MsiSetFeatureState come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante del preprocessore UNICODE. La combinazione dell'utilizzo dell'alias indipendente dalla codifica con il codice non indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere convenzioni di per i prototipi di funzioni.

Fabbisogno

Requisito Valore
client minimo supportato Windows Installer 5.0 in Windows Server 2012, Windows 8, Windows Server 2008 R2 o Windows 7. Windows Installer 4.0 o Windows Installer 4.5 in Windows Server 2008 o Windows Vista. Windows Installer in Windows Server 2003 o Windows XP
piattaforma di destinazione Finestre
intestazione msiquery.h
libreria Msi.lib
dll Msi.dll

Vedere anche

Funzioni di selezione del programma di installazione