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, MsiOpenPackageEx o MsiOpenProduct.

[in] szFeature

Specifica il nome della funzionalità.

[in] iState

Specifica lo stato da impostare. Questo parametro può avere 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:

Commenti

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

La funzione MsiSetInstallLevel deve essere chiamata prima di chiamare MsiSetFeatureState.

Quando msiSetFeatureState viene chiamato, il programma di installazione tenta di impostare lo stato dell'azione di ogni componente associato alla funzionalità specificata allo stato specificato. Tuttavia, esistono situazioni comuni quando 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 componente A ha l'attributo msidbComponentAttributesLocalOnly e il componente B ha l'attributo msidbComponentAttributesSourceOnly . 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 vengono attivati, con componente A impostato su Locale e componente B impostato su Source.

Se più funzionalità sono collegate a un singolo componente (uno scenario comune), lo stato finale dell'azione 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 ha esito negativo, è possibile ottenere informazioni di errore estese 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 preprocessore UNICODE. La combinazione dell'utilizzo dell'alias di codifica neutrale con il codice che non è neutrale dalla codifica può causare errori di corrispondenza che causano errori di compilazione o runtime. Per altre informazioni, vedere Convenzioni per i prototipi di funzione.

Requisiti

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 Windows
Intestazione msiquery.h
Libreria Msi.lib
DLL Msi.dll

Vedi anche

Funzioni di selezione del programma di installazione