Share via


MsiGetFeatureCostA-Funktion (msiquery.h)

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

Syntax

UINT MsiGetFeatureCostA(
  [in]  MSIHANDLE    hInstall,
  [in]  LPCSTR       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 des Speicherplatzbedarfs 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 wird 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: local oder source.

[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 die Gesamtmenge des Datenträgerspeichers (in Einheiten von 512 Bytes) an, die nur für das angegebene Feature erforderlich ist. Dieser zurückgegebene Wert enthält weder die untergeordneten noch die übergeordneten Features des angegebenen Features. Diese Gesamtkosten bestehen aus den Datenträgerkosten, die jeder komponente zugeordnet sind, die mit dem Feature verknüpft sind.

Der wert MSICOSTTREE_CHILDREN gibt die Gesamtmenge des Speicherplatzes (in Einheiten von 512 Bytes) 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 Bytes) an, der für das angegebene Feature und die ü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 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

   
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