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