Freigeben über


MsiSetFeatureStateA-Funktion (msiquery.h)

Die MsiSetFeatureState-Funktion legt ein Feature auf einen angegebenen Zustand fest.

Syntax

UINT MsiSetFeatureStateA(
  [in] MSIHANDLE    hInstall,
  [in] LPCSTR       szFeature,
  [in] INSTALLSTATE iState
);

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 Namen des Features an.

[in] iState

Gibt den festzulegenden Zustand an. Dieser Parameter kann einen der folgenden Werte annehmen.

Wert Bedeutung
INSTALLSTATE_ABSENT
Das Feature ist nicht installiert.
INSTALLSTATE_LOCAL
Das Feature ist auf dem lokalen Laufwerk installiert.
INSTALLSTATE_SOURCE
Das Feature wird über die Quelle, die CD oder das Netzwerk ausgeführt.
INSTALLSTATE_ADVERTISED
Das Feature ist angekündigt.

Rückgabewert

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

Hinweise

Die MsiSetFeatureState-Funktion fordert eine Änderung des Auswahlzustands eines Features in der Featuretabelle und dessen untergeordneten Elementen an. Im Gegenzug wird der Aktionszustand aller Komponenten, die mit den geänderten Featuredatensätzen verknüpft sind, entsprechend aktualisiert, basierend auf dem neuen Featureauswahlstatus.

Die MsiSetInstallLevel-Funktion muss vor dem Aufrufen von MsiSetFeatureState aufgerufen werden.

Wenn MsiSetFeatureState aufgerufen wird, versucht das Installationsprogramm, den Aktionszustand jeder Komponente, die an das angegebene Feature gebunden ist, auf den angegebenen Zustand festzulegen. Es gibt jedoch häufige Situationen, in denen die Anforderung nicht vollständig implementiert werden kann. Wenn z. B. ein Feature über die FeatureComponents-Tabelle an zwei Komponenten( Komponente A und Komponente B) gebunden ist und Komponente A über das Attribut msidbComponentAttributesLocalOnly und Komponente B über das Attribut msidbComponentAttributesSourceOnly verfügt. Wenn MsiSetFeatureState in diesem Fall mit dem angeforderten Status entweder INSTALLSTATE_LOCAL oder INSTALLSTATE_SOURCE aufgerufen wird, kann die Anforderung nicht vollständig für beide Komponenten implementiert werden. In diesem Fall sind beide Komponenten aktiviert, wobei Komponente A auf Lokal und Komponente B auf Quelle festgelegt ist.

Wenn mehr als ein Feature mit einer einzelnen Komponente verknüpft ist (ein häufiges Szenario), wird der endgültige Aktionszustand dieser Komponente wie folgt bestimmt:

  • Wenn mindestens ein Feature erfordert, dass die Komponente lokal installiert werden muss, wird das Feature mit dem Status lokal installiert.
  • Wenn mindestens ein Feature erfordert, dass die Komponente von der Quelle ausgeführt werden muss, wird das Feature mit dem Status quelle installiert.
  • Wenn mindestens ein Feature das Entfernen der Komponente erfordert, ist der Aktionszustand nicht vorhanden.
Weitere Informationen finden Sie unter Aufrufen von Datenbankfunktionen aus Programmen.

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

Hinweis

Der msiquery.h-Header definiert MsiSetFeatureState 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
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