Share via


MsiGetFeatureCostW-Funktion (msiquery.h)

Die MsiGetFeatureCost-Funktion gibt den Speicherplatz zurück, der für ein Feature und die ausgewählten untergeordneten und übergeordneten Features erforderlich ist.

Syntax

UINT MsiGetFeatureCostW(
  [in]  MSIHANDLE    hInstall,
  [in]  LPCWSTR      szFeature,
  [in]  MSICOSTTREE  iCostTree,
  [in]  INSTALLSTATE iState,
  [out] LPINT        piCost
);

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

Gibt den Wert an, den die Funktion zum Bestimmen der Speicherplatzanforderungen verwendet. Dieser Parameter kann einen der folgenden Werte annehmen.

Wert Bedeutung
MSICOSTTREE_CHILDREN
Die untergeordneten Elemente des angegebenen Features sind in den Kosten enthalten.
MSICOSTTREE_PARENTS
Die übergeordneten Features des angegebenen Features sind in den Kosten enthalten.
MSICOSTTREE_SELFONLY
Nur das Feature ist in den Kosten enthalten.

[in] iState

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

Wert Bedeutung
INSTALLSTATE_UNKNOWN
Das Produkt oder Feature wird nicht erkannt.
INSTALLSTATE_ABSENT
Das Produkt oder Feature wird deinstalliert.
INSTALLSTATE_LOCAL
Das Produkt oder Feature ist auf dem lokalen Laufwerk installiert.
INSTALLSTATE_SOURCE
Das Produkt oder Feature wird für die Ausführung von der Quelle, CD oder dem Netzwerk installiert.
INSTALLSTATE_DEFAULT
Das Produkt oder Feature wird installiert, um den Standardspeicherort zu verwenden: lokal oder quelle.

[out] piCost

Empfängt die Speicherplatzanforderungen in Einheiten von 512 Bytes. Dieser Parameter darf nicht null sein.

Rückgabewert

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

Hinweise

Weitere Informationen finden Sie unter Aufrufen von Datenbankfunktionen aus Programmen.

Bei der MsiGetFeatureCost-Funktion gibt der wert MSICOSTTREE_SELFONLY den gesamten Speicherplatz (in Einheiten von 512 Bytes) an, der nur für das angegebene Feature erforderlich ist. Dieser zurückgegebene Wert enthält nicht die untergeordneten oder übergeordneten Features des angegebenen Features. Diese Gesamtkosten bestehen aus den Datenträgerkosten, die jeder komponente zugeordnet sind, die mit dem Feature verknüpft ist.

Der wert MSICOSTTREE_CHILDREN gibt die Gesamtmenge des Speicherplatzes (in Einheiten von 512 Byte) an, der für das angegebene Feature und seine untergeordneten Elemente erforderlich ist. Für jedes Feature bestehen die Gesamtkosten aus den Datenträgerkosten, die jeder mit dem Feature verknüpften Komponente zugeordnet werden.

Der wert MSICOSTTREE_PARENTS gibt die Gesamtmenge des Speicherplatzes (in Einheiten von 512 Byte) an, der für das angegebene Feature und seine übergeordneten Features (bis zum Stamm der Featuretabelle) erforderlich ist. Für jedes Feature bestehen die Gesamtkosten aus den Datenträgerkosten, die jeder mit dem Feature verknüpften Komponente zugeordnet werden.

MsiGetFeatureCost ist von mehreren anderen Funktionen abhängig, um erfolgreich zu sein. Im folgenden Beispiel wird die Reihenfolge veranschaulicht, in der diese Funktionen aufgerufen werden müssen:

MSIHANDLE   hInstall;      //product handle, must be closed
int         iCost;         //cost returned by MsiGetFeatureCost

MsiOpenPackage("Path to package....",&hInstall);   //"Path to package...." should be replaced with the full path to the package to be opened
MsiDoAction(hInstall,"CostInitialize");         //
MsiDoAction(hInstall,"FileCost");
MsiDoAction(hInstall,"CostFinalize");
MsiDoAction(hInstall,"InstallValidate");
MsiGetFeatureCost(hInstall,"FeatureName",MSICOSTTREE_SELFONLY,INSTALLSTATE_ABSENT,&iCost);
MsiCloseHandle(hInstall);                        //close the open product handle

Der Prozess zum Abfragen der Kosten für Features, die entfernt werden sollen, unterscheidet sich geringfügig:

MSIHANDLE   hInstall;      //product handle, must be closed
int         iCost;         //cost returned by MsiGetFeatureCost

MsiOpenPackage("Path to package....",&hInstall);              //"Path to package...." should be replaced with the full path to the package to be opened
MsiDoAction(hInstall,"CostInitialize");                          //
MsiDoAction(hInstall,"FileCost");
MsiDoAction(hInstall,"CostFinalize");
MsiSetFeatureState(hInstall,"FeatureName",INSTALLSTATE_ABSENT);  //set the feature's state to "not installed"
MsiDoAction(hInstall,"InstallValidate");
MsiGetFeatureCost(hInstall,"FeatureName",MSICOSTTREE_SELFONLY,INSTALLSTATE_ABSENT,&iCost);
MsiCloseHandle(hInstall);                                        //close the open product handle

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

Hinweis

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

Übergeben von NULL als Argument von Windows Installer Functions