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.
[in] iState
Gibt den Installationsstatus an. Dieser Parameter kann einen der folgenden Werte annehmen.
[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
Übergeben von Null als Argument von Windows Installer-Funktionen