Share via


MsiFormatRecordW-Funktion (msiquery.h)

Die MsiFormatRecord-Funktion formatiert Datensatzfelddaten und -eigenschaften mithilfe einer Formatzeichenfolge.

Syntax

UINT MsiFormatRecordW(
  [in]      MSIHANDLE hInstall,
  [in]      MSIHANDLE hRecord,
  [out]     LPWSTR    szResultBuf,
  [in, out] LPDWORD   pcchResultBuf
);

Parameter

[in] hInstall

Behandeln Sie die Installation. Dies kann weggelassen werden, in diesem Fall werden nur die Datensatzfeldparameter verarbeitet und Die Eigenschaften stehen nicht zur Ersetzung zur Verfügung.

[in] hRecord

Behandeln Sie den zu formatierenden Datensatz. Die Vorlagenzeichenfolge muss im Datensatzfeld 0 gespeichert werden, gefolgt von Datenparametern, auf die verwiesen wird.

[out] szResultBuf

Zeiger auf den Puffer, der die mit NULL beendete formatierte Zeichenfolge empfängt. Versuchen Sie nicht, die Größe des Puffers zu bestimmen, indem Sie null (value=0) für szResultBuf übergeben. Sie können die Größe des Puffers abrufen, indem Sie eine leere Zeichenfolge übergeben (z. B. "). Die Funktion gibt dann ERROR_MORE_DATA zurück, und pcchResultBuf enthält die erforderliche Puffergröße in TCHARs, ohne das beendende NULL-Zeichen. Bei Rückgabe von ERROR_SUCCESS enthält pcchResultBuf die Anzahl der TCHAR-Werte, die in den Puffer geschrieben wurden, ohne das beendende NULL-Zeichen.

[in, out] pcchResultBuf

Zeiger auf die Variable, die die Größe des Puffers in TCHARs angibt, auf den die Variable szResultBuf verweist. Wenn die Funktion ERROR_SUCCESS zurückgibt, enthält diese Variable die Größe der in szResultBuf kopierten Daten, ohne das beendende NULL-Zeichen. Wenn szResultBuf nicht groß genug ist, gibt die Funktion ERROR_MORE_DATA zurück und speichert die erforderliche Größe ohne das beendende NULL-Zeichen in der Variablen, auf die von pcchResultBuf verwiesen wird.

Rückgabewert

Die MsiFormatRecord-Funktion gibt einen der folgenden Werte zurück:

Hinweise

Die MsiFormatRecord-Funktion verwendet den folgenden Formatprozess.

Parameter, die formatiert werden sollen, werden in eckige Klammern eingeschlossen [...]. Die eckigen Klammern können durchlaufen werden, da die Ersetzungen von innen nach außen aufgelöst werden.

Wenn ein Teil der Zeichenfolge in geschweifte Klammern { } eingeschlossen ist und keine eckigen Klammern enthält, bleibt dieser Teil einschließlich der geschweiften Klammern unverändert.

Wenn ein Teil der Zeichenfolge in geschweifte Klammern { } eingeschlossen ist und einen oder mehrere Eigenschaftennamen enthält, und wenn alle Eigenschaften gefunden werden, wird der Text (mit den aufgelösten Ersetzungen) ohne die geschweiften Klammern angezeigt. Wenn keine der Eigenschaften gefunden wird, werden der gesamte Text in den Klammern und die Klammern selbst entfernt.

Beachten Sie, dass msiFormatRecord bei benutzerdefinierten Aktionen für verzögerte Ausführung nur die Eigenschaften CustomActionData und ProductCode unterstützt. Weitere Informationen finden Sie unter Abrufen von Kontextinformationen für verzögert auszuführende benutzerdefinierte Aktionen.

In den folgenden Schritten wird beschrieben, wie Zeichenfolgen mithilfe der MsiFormatRecord-Funktion formatiert werden :

So formatieren Sie Zeichenfolgen mithilfe der MsiFormatRecord-Funktion

  1. Die numerischen Parameter werden ersetzt, indem der Marker durch den Wert des entsprechenden Datensatzfelds durch fehlende oder NULL-Werte ersetzt wird, die keinen Text erzeugen.
  2. Die resultierende Zeichenfolge wird verarbeitet, indem die nicht erfassten Parameter durch die entsprechenden Werte ersetzt werden, die als nächstes beschrieben werden.
    • Wird eine Teilzeichenfolge im Format „[propertyname]“ gefunden, wird diese durch den Wert der Eigenschaft ersetzt.
    • Wird eine Teilzeichenfolge im Format „[%environmentvariable]“ gefunden, wird der Wert der Umgebungsvariablen eingesetzt.
    • Wenn eine Teilzeichenfolge des Formulars "[#filekey]" gefunden wird, wird sie durch den vollständigen Pfad der Datei ersetzt, wobei der Wert filekey als Schlüssel in der Dateitabelle verwendet wird. Der Wert von "[#filekey]" bleibt leer und wird erst durch einen Pfad ersetzt, wenn das Installationsprogramm die CostInitialize-Aktion, die FileCost-Aktion und die CostFinalize-Aktion ausführt. Der Wert von "[#filekey]" hängt vom Installationsstatus der Komponente ab, zu der die Datei gehört. Wenn die Komponente von der Quelle aus ausgeführt wird, entspricht der Wert dem Pfad zum Quellspeicherort der Datei. Wenn die Komponente lokal ausgeführt wird, entspricht der Wert dem Pfad zum Zielspeicherort der Datei nach der Installation. Ist die Komponente nicht vorhanden, ist der Pfad leer. Weitere Informationen zum Überprüfen des Installationszustands von Komponenten finden Sie unter Überprüfen der Installation von Features, Komponenten und Dateien.
    • Wenn eine Teilzeichenfolge des Formulars "[$componentkey]" gefunden wird, wird sie durch das Installationsverzeichnis der Komponente ersetzt, wobei der Wert componentkey als Schlüssel in der Tabelle Component verwendet wird. Der Wert von "[$componentkey]" bleibt leer und wird erst durch ein Verzeichnis ersetzt, wenn das Installationsprogramm die CostInitialize-Aktion, die FileCost-Aktion und die CostFinalize-Aktion ausführt. Der Wert von "[$componentkey]" hängt vom Installationsstatus der Komponente ab. Wenn die Komponente von der Quelle aus ausgeführt wird, entspricht der Wert dem Quellverzeichnis der Datei. Wenn die Komponente lokal ausgeführt wird, entspricht der Wert dem Zielverzeichnis nach der Installation. Wenn die Komponente nicht vorhanden ist, bleibt der Wert leer. Weitere Informationen zum Überprüfen des Installationszustands von Komponenten finden Sie unter Überprüfen der Installation von Features, Komponenten und Dateien.
    • Beachten Sie, dass, wenn eine Komponente bereits installiert ist und während der aktuellen Installation nicht neu installiert, entfernt oder verschoben wird, der Aktionsstatus der Komponente NULL ist und daher die Zeichenfolge "[$componentkey]" auf NULL ausgewertet wird.
    • Wird eine Teilzeichenfolge der Form „[\c]“ gefunden, wird diese ohne weitere Verarbeitung durch das Zeichen ersetzt. Nur das erste Zeichen nach dem umgekehrten Schrägstrich wird beibehalten, alle übrigen werden entfernt.
Wenn ERROR_MORE_DATA zurückgegeben wird, gibt der Parameter, der ein Zeiger ist, die Größe des Puffers an, der zum Halten der Zeichenfolge erforderlich ist. Wenn ERROR_SUCCESS zurückgegeben wird, wird die Anzahl der Zeichen angegeben, die in den Zeichenfolgenpuffer geschrieben werden. Daher können Sie die Größe des Puffers abrufen, indem Sie eine leere Zeichenfolge (z. B. "") für den Parameter übergeben, der den Puffer angibt. Versuchen Sie nicht, die Größe des Puffers zu bestimmen, indem Sie null (value=0) übergeben.

Hinweis

Der msiquery.h-Header definiert MsiFormatRecord 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.
Zielplattform Windows
Kopfzeile msiquery.h
Bibliothek Msi.lib
DLL Msi.dll

Weitere Informationen

Übergeben von Null als Argument von Windows Installer-Funktionen