Freigeben über


MsiGetFeatureValidStatesW-Funktion (msiquery.h)

Die MsiGetFeatureValidStates--Funktion gibt einen gültigen Installationsstatus zurück.

Syntax

UINT MsiGetFeatureValidStatesW(
  [in]  MSIHANDLE hInstall,
  [in]  LPCWSTR   szFeature,
  [out] LPDWORD   lpInstallStates
);

Parameter

[in] hInstall

Behandeln Sie die Installation, die für eine benutzerdefinierte DLL-Aktion bereitgestellt wird, oder erhalten Sie über MsiOpenPackage, MsiOpenPackageEx-oder MsiOpenProduct-.

[in] szFeature

Gibt den Featurenamen an.

[out] lpInstallStates

Empfängt den Speicherort, der die gültigen Installationszustände enthält. Für jeden gültigen Installationszustand legt das Installationsprogramm pInstallState- auf eine Kombination der folgenden Werte fest. Dieser Parameter sollte nicht null sein.

Dezimalwert Bedeutung
2
INSTALLSTATE_ADVERTISED
Das Feature kann angekündigt werden.
4
INSTALLSTATE_ABSENT
Das Feature kann nicht vorhanden sein.
8
INSTALLSTATE_LOCAL
Das Feature kann auf dem lokalen Laufwerk installiert werden.
16
INSTALLSTATE_SOURCE
Das Feature kann für die Ausführung von Quell-, CD-ROM- oder Netzwerkdatenträgern konfiguriert werden.
32
INSTALLSTATE_DEFAULT
Das Feature kann für die Verwendung des Standardspeicherorts konfiguriert werden: lokal oder quelle.

Rückgabewert

Die funktion MsiGetFeatureValidStates gibt die folgenden Werte zurück:

Bemerkungen

Siehe Aufrufen von Datenbankfunktionen aus Programmen.

Die MsiGetFeatureValidStates--Funktion bestimmt die Statusgültigkeit, indem alle Komponenten, die mit dem angegebenen Feature verknüpft sind, abfragen, ohne den aktuellen Installationsstatus einer Komponente zu berücksichtigen.

Die möglichen gültigen Zustände für ein Feature werden wie folgt bestimmt:

  • Wenn das Feature keine Komponenten enthält, sind sowohl INSTALLSTATE_LOCAL als auch INSTALLSTATE_SOURCE gültige Status für das Feature.
  • Wenn mindestens eine Komponente des Features über ein Attribut von msidbComponentAttributesLocalOnly oder msidbComponentAttributesOptional verfügt, ist INSTALLSTATE_LOCAL ein gültiger Zustand für das Feature.
  • Wenn mindestens eine Komponente des Features über ein Attribut von msidbComponentAttributesSourceOnly oder msidbComponentAttributesOptional verfügt, ist INSTALLSTATE_SOURCE ein gültiger Zustand für das Feature.
  • Wenn eine Datei einer Komponente, die zum Feature gehört, gepatcht oder aus einer komprimierten Quelle stammt, ist INSTALLSTATE_SOURCE nicht als gültiger Zustand für das Feature enthalten.
  • INSTALLSTATE_ADVERTISE ist kein gültiger Zustand, wenn die Ankündigung des Features (msidbFeatureAttributesDisallowAdvertise) oder das Feature Plattformunterstützung für Werbung (msidbFeatureAttributesNoUnsupportedAdvertise) erfordert und die Plattform sie nicht unterstützt.
  • INSTALLSTATE_ABSENT ist ein gültiger Zustand für das Feature, wenn seine Attribute keine msidbFeatureAttributesUIDisallowAbsent enthalten.
  • Gültige Zustände für untergeordnete Features, die gekennzeichnet sind, um dem übergeordneten Feature (msidbFeatureAttributesFollowParent) zu folgen, basieren auf der Aktion oder dem Installationsstatus des übergeordneten Features.
Nach dem Aufrufen MsiGetFeatureValidStates kann eine bedingte Anweisung verwendet werden, um die gültigen Installationszustände eines Features zu testen. Beispielsweise ruft der folgende Aufruf von MsiGetFeatureValidStates den Installationsstatus von Feature1 ab.
MsiGetFeatureValidStates(hProduct, "Feature1", &dwValidStates);

Wenn Feature1 Attribute von Wert 0 hat (lokal favorisieren), und Feature1 eine Komponente mit Attributen von Wert 0 (nur lokal), der Wert von dwValidStates nach dem Aufruf 14 ist. Dies gibt an, dass INSTALLSTATE_LOCAL, INSTALLSTATE_ABSENT und INSTALLSTATE_ADVERTISED gültige Status für Feature1 sind. Die folgende bedingte Anweisung wertet "True" aus, wenn "lokal" ein gültiger Zustand für dieses Feature ist.

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

Wenn die Funktion fehlschlägt, können Sie erweiterte Fehlerinformationen mithilfe MsiGetLastErrorRecordabrufen.

Anmerkung

Der header msiquery.h definiert MsiGetFeatureValidStates als Alias, der die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante automatisch auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit Code, der nicht codierungsneutral ist, kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows Installer 5.0 unter Windows Server 2012, Windows 8, Windows Server 2008 R2 oder Windows 7. Windows Installer 4.0 oder Windows Installer 4.5 unter Windows Server 2008 oder Windows Vista. Windows Installer unter Windows Server 2003 oder Windows XP
Zielplattform- Fenster
Header- msiquery.h
Library Msi.lib
DLL- Msi.dll

Siehe auch

Installationsprogrammauswahlfunktionen

Übergeben von Null als Argument von Windows Installer-Funktionen