Freigeben über


MsiGetFeatureCostA-Funktion (msiquery.h)

Die MsiGetFeatureCost--Funktion gibt den Speicherplatz zurück, der von einem Feature und den ausgewählten untergeordneten und übergeordneten Features benötigt wird.

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 wird, oder erhalten Sie über MsiOpenPackage, MsiOpenPackageEx-oder MsiOpenProduct-.

[in] szFeature

Gibt den Namen des Features an.

[in] iCostTree

Gibt den Wert an, den die Funktion zum Ermitteln der Speicherplatzanforderungen verwendet. Dieser Parameter kann einer der folgenden Werte sein:

Wert Bedeutung
MSICOSTTREE_CHILDREN
Die untergeordneten Elemente der angegebenen Funktion sind in den Kosten enthalten.
MSICOSTTREE_PARENTS
Die übergeordneten Features der angegebenen Funktion sind in den Kosten enthalten.
MSICOSTTREE_SELFONLY
Das Feature ist nur in den Kosten enthalten.

[in] iState

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

Wert Bedeutung
INSTALLSTATE_UNKNOWN
Das Produkt oder feature ist 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 installiert, um von der Quelle, cd oder aus dem Netzwerk ausgeführt zu werden.
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:

Bemerkungen

Siehe Aufrufen von Datenbankfunktionen aus Programmen.

Mit der MsiGetFeatureCost--Funktion gibt der MSICOSTTREE_SELFONLY Wert den Gesamtspeicher (in Einheiten von 512 Byte) 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 an Speicherplatz (in Einheiten von 512 Byte) an, die für das angegebene Feature und seine untergeordneten Elemente erforderlich sind. Für jedes Feature besteht die Gesamtkosten aus den Datenträgerkosten, die jeder Komponente zugeordnet sind, die mit dem Feature verknüpft ist.

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

MsiGetFeatureCost- hängt von mehreren anderen Funktionen ab, 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 MsiGetLastErrorRecordabrufen.

Anmerkung

Der header msiquery.h 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
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

Übergeben von Null als Argument von Windows Installer-Funktionen