Freigeben über


MsiSetFeatureStateW-Funktion (msiquery.h)

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

Syntax

UINT MsiSetFeatureStateW(
  [in] MSIHANDLE    hInstall,
  [in] LPCWSTR      szFeature,
  [in] INSTALLSTATE iState
);

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

[in] iState

Gibt den festzulegenden Zustand an. Dieser Parameter kann einer der folgenden Werte sein:

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

Rückgabewert

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

Bemerkungen

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

Die MsiSetInstallLevel--Funktion muss aufgerufen werden, bevor MsiSetFeatureStateaufgerufen wird.

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

Wenn mehrere Features mit einer einzelnen Komponente (einem gemeinsamen Szenario) verknüpft sind, wird der endgültige Aktionsstatus dieser Komponente wie folgt bestimmt:

  • Wenn mindestens ein Feature die lokale Installation der Komponente erfordert, wird das Feature mit einem lokalen Status installiert.
  • Wenn mindestens ein Feature die Ausführung der Komponente aus der Quelle erfordert, wird das Feature mit einem Quellstatus installiert.
  • Wenn mindestens ein Feature das Entfernen der Komponente erfordert, ist der Aktionszustand nicht vorhanden.
Siehe Aufrufen von Datenbankfunktionen aus Programme.

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

Anmerkung

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