Condividi tramite


Funzione MsiGetFeatureValidStatesA (msiquery.h)

La funzione MsiGetFeatureValidStates restituisce uno stato di installazione valido.

Sintassi

UINT MsiGetFeatureValidStatesA(
  [in]  MSIHANDLE hInstall,
  [in]  LPCSTR    szFeature,
  [out] LPDWORD   lpInstallStates
);

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

[out] lpInstallStates

Riceve il percorso in cui contenere gli stati di installazione validi. Per ogni stato di installazione valido, il programma di installazione imposta pInstallState su una combinazione dei valori seguenti. Questo parametro non deve essere Null.

Valore decimale Significato
2
INSTALLSTATE_ADVERTISED
La funzionalità può essere pubblicizzata.
4
INSTALLSTATE_ABSENT
La funzionalità può essere assente.
8
INSTALLSTATE_LOCAL
La funzionalità può essere installata nell'unità locale.
16
INSTALLSTATE_SOURCE
La funzionalità può essere configurata per l'esecuzione da origine, CD-ROM o rete.
32
INSTALLSTATE_DEFAULT
La funzionalità può essere configurata per l'uso del percorso predefinito: locale o di origine.

Valore restituito

La funzione msiGetFeatureValidStates restituisce i valori seguenti:

Osservazioni

Vedere Chiamata di funzioni di database da programmi.

La funzione MsiGetFeatureValidStates determina la validità dello stato eseguendo una query su tutti i componenti collegati alla funzionalità specificata senza tenere conto dello stato installato corrente di qualsiasi componente.

I possibili stati validi per una funzionalità vengono determinati nel modo seguente:

  • Se la funzionalità non contiene componenti, sia INSTALLSTATE_LOCAL che INSTALLSTATE_SOURCE sono stati validi per la funzionalità.
  • Se almeno un componente della funzionalità ha un attributo msidbComponentAttributesLocalOnly o msidbComponentAttributesOptional, INSTALLSTATE_LOCAL è uno stato valido per la funzionalità.
  • Se almeno un componente della funzionalità ha un attributo msidbComponentAttributesSourceOnly o msidbComponentAttributesOptional, INSTALLSTATE_SOURCE è uno stato valido per la funzionalità.
  • Se un file di un componente appartenente alla funzionalità viene patchato o da un'origine compressa, INSTALLSTATE_SOURCE non viene incluso come stato valido per la funzionalità.
  • INSTALLSTATE_ADVERTISE non è uno stato valido se la funzionalità non consente l'annuncio pubblicitario (msidbFeatureAttributesDisallowAdvertise) o la funzionalità richiede il supporto della piattaforma per l'annuncio (msidbFeatureAttributesNoUnsupportedAdvertise) e la piattaforma non lo supporta.
  • INSTALLSTATE_ABSENT è uno stato valido per la funzionalità se i relativi attributi non includono msidbFeatureAttributesUIDisallowAbsent.
  • Gli stati validi per le funzionalità figlio contrassegnate per seguire la funzionalità padre (msidbFeatureAttributesFollowParent) si basano sull'azione o sullo stato installato della funzionalità padre.
Dopo aver chiamato MsiGetFeatureValidStates un'istruzione condizionale può essere usata per testare gli stati di installazione validi di una funzionalità. Ad esempio, la chiamata seguente a MsiGetFeatureValidStates ottiene lo stato di installazione di Feature1.
MsiGetFeatureValidStates(hProduct, "Feature1", &dwValidStates);

Se Feature1 ha attributi di valore 0 (favor local) e Feature1 ha un componente con attributi pari a 0 (solo locale), il valore di dwValidStates dopo la chiamata è 14. Ciò indica che INSTALLSTATE_LOCAL, INSTALLSTATE_ABSENT e INSTALLSTATE_ADVERTISED sono stati validi per Feature1. L'istruzione condizionale seguente restituisce True se local è uno stato valido per questa funzionalità.

( ( dwValidStates & ( 1 << INSTALLSTATE_LOCAL ) ) = = ( 1 << INSTALLSTATE_LOCAL ) ) )

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

Nota

L'intestazione msiquery.h definisce MsiGetFeatureValidStates 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

passaggio di Null come argomento delle funzioni di Windows Installer