Share via


MsiGetFeatureValidStatesW-Funktion (msiquery.h)

Die MsiGetFeatureValidStates-Funktion gibt einen gültigen Installationszustand 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 oder über MsiOpenPackage, MsiOpenPackageEx oder MsiOpenProduct abgerufen wird.

[in] szFeature

Gibt den Featurenamen an.

[out] lpInstallStates

Empfängt den Speicherort, an dem die gültigen Installationszustände enthalten sind. Für jeden gültigen Installationszustand legt das Installationsprogramm pInstallState auf eine Kombination der folgenden Werte fest. Dieser Parameter darf 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 so konfiguriert werden, dass es von quelle, CD-ROM oder Netzwerk ausgeführt wird.
32
INSTALLSTATE_DEFAULT
Das Feature kann so konfiguriert werden, dass der Standardspeicherort lokal oder die Quelle verwendet wird.

Rückgabewert

Die MsiGetFeatureValidStates-Funktion gibt die folgenden Werte zurück:

Hinweise

Weitere Informationen finden Sie unter Aufrufen von Datenbankfunktionen aus Programmen.

Die MsiGetFeatureValidStates-Funktion bestimmt die Zustandsvalidität, indem alle Komponenten, die mit dem angegebenen Feature verknüpft sind, ohne den aktuellen installierten Zustand einer Komponente zu berücksichtigen.

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

  • Wenn das Feature keine Komponenten umfasst, sind sowohl INSTALLSTATE_LOCAL als auch INSTALLSTATE_SOURCE gültige Zustände für das Feature.
  • Wenn mindestens eine Komponente des Features das Attribut „msidbComponentAttributesLocalOnly“ oder „msidbComponentAttributesOptional“ aufweist, ist INSTALLSTATE_LOCAL ein gültiger Zustand für das Feature.
  • Wenn mindestens eine Komponente des Features das Attribut „msidbComponentAttributesSourceOnly“ oder „msidbComponentAttributesOptional“ aufweist, 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 das Feature keine Ankündigungen zulässt (msidbFeatureAttributesDisallowAdvertise) oder das Feature Plattformunterstützung für Ankündigungen benötigt (msidbFeatureAttributesNoUnsupportedAdvertise) und die Plattform dies nicht unterstützt.
  • INSTALLSTATE_ABSENT ist ein gültiger Zustand für das Feature, wenn seine Attribute nicht „msidbFeatureAttributesUIDisallowAbsent“ enthalten.
  • Gültige Zustände für untergeordnete Features, die an das übergeordnete Feature gebunden sind (msidbFeatureAttributesFollowParent), basieren auf der Aktion oder dem Installationszustand des übergeordneten Features.
Nach dem Aufruf von MsiGetFeatureValidStates kann eine bedingte Anweisung verwendet werden, um die gültigen Installationszustände eines Features zu testen. Der folgende Aufruf von MsiGetFeatureValidStates ruft beispielsweise den Installationsstatus von Feature1 ab.
MsiGetFeatureValidStates(hProduct, "Feature1", &dwValidStates);

Wenn Feature1 Attribute vom Wert 0 (favorisiert lokal) und Feature1 über eine Komponente mit Attributen des Werts 0 (nur lokal) verfügt, ist der Wert von dwValidStates nach dem Aufruf 14. Dies gibt an, dass INSTALLSTATE_LOCAL, INSTALLSTATE_ABSENT und INSTALLSTATE_ADVERTISED gültige Zustände für Feature1 sind. Die folgende bedingte Anweisung wird als True ausgewertet, wenn local ein gültiger Status für dieses Feature ist.

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

Wenn die Funktion fehlschlägt, können Sie erweiterte Fehlerinformationen mithilfe von MsiGetLastErrorRecord abrufen.

Hinweis

Der msiquery.h-Header definiert MsiGetFeatureValidStates als Alias, der automatisch die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit nicht codierungsneutralem Code 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
Unterstützte Mindestversion (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 Windows
Kopfzeile msiquery.h
Bibliothek Msi.lib
DLL Msi.dll

Weitere Informationen

Installerauswahlfunktionen

Übergeben von Null als Argument von Windows Installer-Funktionen