MsiEnumComponentCostsA-Funktion (msiquery.h)
Die MsiEnumComponentCosts--Funktion listet den Speicherplatz pro Laufwerk auf, der zum Installieren einer Komponente erforderlich ist. Diese Informationen werden benötigt, um die für alle Laufwerke auf der Benutzeroberfläche erforderlichen Speicherplatzkosten anzuzeigen. Die zurückgegebenen Speicherplatzkosten werden in Vielfachen von 512 Byte ausgedrückt.
MsiEnumComponentCosts- sollte nur ausgeführt werden, nachdem das Installationsprogramm die Dateikostenkosten abgeschlossen hat, und nach der CostFinalize-Aktion. Weitere Informationen finden Sie unter Dateikosten.
Syntax
UINT MsiEnumComponentCostsA(
[in] MSIHANDLE hInstall,
[in] LPCSTR szComponent,
[in] DWORD dwIndex,
[in] INSTALLSTATE iState,
[out] LPSTR szDriveBuf,
[in, out] LPDWORD pcchDriveBuf,
[out] LPINT piCost,
[out] LPINT piTempCost
);
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] szComponent
Eine mit Null beendete Zeichenfolge, die den Namen der Komponente angibt, wie sie in der Spalte "Komponente" der Component-Tabelleaufgeführt ist. Dieser Parameter kann null sein. Wenn szComponent null oder eine leere Zeichenfolge ist, MsiEnumComponentCosts den gesamten Speicherplatz pro Laufwerk aufzählt, der während der Installation verwendet wird. In diesem Fall wird iState- ignoriert. Die Kosten für das Installationsprogramm umfassen die Kosten für das Zwischenspeichern der Datenbank im sicheren Ordner sowie die Kosten zum Erstellen des Installationsskripts. Beachten Sie, dass der gesamte speicherplatz, der während der Installation verwendet wird, möglicherweise größer als der speicherplatz, der nach der Installation der Komponente verwendet wird.
[in] dwIndex
0-basierter Index für Laufwerke. Dieser Parameter sollte für den ersten Aufruf der MsiEnumComponentCosts Funktion null sein und dann für nachfolgende Aufrufe erhöht werden.
[in] iState
Angeforderter Komponentenstatus, der aufgezählt werden soll. Wenn szComponent als Null oder eine leere Zeichenfolge übergeben wird, ignoriert das Installationsprogramm den iState Parameter.
[out] szDriveBuf
Puffer, der den Laufwerknamen einschließlich des Null-Endators enthält. Dies ist eine leere Zeichenfolge im Falle eines Fehlers.
[in, out] pcchDriveBuf
Zeiger auf eine Variable, die die Größe des Puffers in TCHARs angibt, auf den der lpDriveBuf-Parameter verweist. Diese Größe sollte das endende Nullzeichen enthalten. Wenn der bereitgestellte Puffer zu klein ist, enthält die Variable, auf die pcchDriveBuf verweist, die Anzahl der Zeichen, die nicht den Null-Endator enthalten.
[out] piCost
Kosten der Komponente pro Laufwerk, ausgedrückt in Vielfachen von 512 Byte. Dieser Wert ist 0, wenn ein Fehler aufgetreten ist. Der in piCost- zurückgegebene Wert ist der endgültige Speicherplatz, der von der Komponente nach der Installation verwendet wird. Wenn szComponent als Null oder eine leere Zeichenfolge übergeben wird, legt das Installationsprogramm den Wert auf piCost- auf 0 fest.
[out] piTempCost
Die Komponente kostet pro Laufwerk für die Dauer der Installation oder 0, wenn ein Fehler aufgetreten ist. Der Wert in *piTempCost stellt die temporären Speicherplatzanforderungen für die Dauer der Installation dar. Dieser temporäre Speicherplatzbedarf ist nur für die Dauer der Installation erforderlich. Dies wirkt sich nicht auf die endgültige Speicherplatzanforderung aus.
Rückgabewert
Rückgabewert | Bedeutung |
---|---|
|
Die Konfigurationsdaten sind beschädigt. |
|
An die Funktion wurde ein ungültiger Parameter übergeben. |
|
Es gibt keine weiteren Laufwerke, die zurückgegeben werden sollen. |
|
Ein Wert wurde aufgezählt. |
|
Die Komponente fehlt. |
|
Die Kosten sind nicht abgeschlossen. |
|
Puffer nicht groß genug für den Laufwerknamen. |
|
Der angegebene Handle ist ungültig oder inaktiv. |
Bemerkungen
Die empfohlene Methode zum Aufzählen der Festplattenspeicherkosten pro Laufwerk lautet wie folgt. Beginnen Sie mit dem dwIndex-Wert, der auf "0" festgelegt ist, und erhöhen Sie ihn nach jedem Aufruf um einen Wert. Fahren Sie mit der Enumeration fort, solange MsiEnumComponentCosts ERROR_SUCCESS zurückgibt.
MsiEnumComponentCosts- kann aus benutzerdefinierten Aktionen aufgerufen werden.
Die gesamten Enddatenträgerkosten für die Installation sind die Summe der Kosten aller Komponenten sowie die Kosten des Windows Installer (szComponent = null).
Anmerkung
Der msiquery.h-Header definiert MsiEnumComponentCosts 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 |