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