Freigeben über


MsiDatabaseGenerateTransformA-Funktion (msiquery.h)

Die MsiDatabaseGenerateTransform-Funktion generiert eine Transformationsdatei mit Unterschieden zwischen zwei Datenbanken. Eine Transformation ist eine Möglichkeit, Änderungen an einer Datenbank aufzuzeichnen, ohne die ursprüngliche Datenbank zu ändern. Sie können auch MsiDatabaseGenerateTransform verwenden, um zu testen, ob zwei Datenbanken identisch sind, ohne eine Transformation zu erstellen.

Syntax

UINT MsiDatabaseGenerateTransformA(
  [in] MSIHANDLE hDatabase,
  [in] MSIHANDLE hDatabaseReference,
  [in] LPCSTR    szTransformFile,
  [in] int       iReserved1,
  [in] int       iReserved2
);

Parameter

[in] hDatabase

Handle für die Datenbank, die von MsiOpenDatabase abgerufen wurde, die die Änderungen enthält.

[in] hDatabaseReference

Handle für die Datenbank, die von MsiOpenDatabase abgerufen wurde, die die Änderungen nicht enthält.

[in] szTransformFile

Eine null-endende Zeichenfolge, die den Namen der generierten Transformationsdatei angibt. Dieser Parameter kann NULL sein. Wenn szTransformFile null ist, können Sie msiDatabaseGenerateTransform verwenden, um zu testen, ob zwei Datenbanken identisch sind, ohne eine Transformation zu erstellen. Wenn die Datenbanken identisch sind, gibt die Funktion ERROR_NO_DATA zurück. Wenn die Datenbanken unterschiedlich sind, gibt die Funktion NOERROR zurück.

[in] iReserved1

Dies ist ein reserviertes Argument und muss auf 0 festgelegt werden.

[in] iReserved2

Dies ist ein reserviertes Argument und muss auf 0 festgelegt werden.

Rückgabewert

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

Hinweise

Verwenden Sie die MsiDatabaseGenerateTransform-Funktion , um eine Differenzdatei zwischen zwei Datenbanken zu generieren. Eine Transformation enthält Informationen zum Einfügen und Löschen von Spalten und Zeilen. Die Validierungsflags werden im Zusammenfassungsinformationsdatenstrom der Transformationsdatei gespeichert.

Bei Tabellen, die in beiden Datenbanken vorhanden sind, ist der einzige Unterschied zwischen den beiden Schemas, der zulässig ist, das Hinzufügen von Spalten am Ende der Verweistabelle. Sie können einer Tabelle Primärschlüsselspalten hinzufügen oder die Reihenfolge oder namen oder Spaltendefinitionen der vorhandenen Spalten ändern, wie in der Basistabelle definiert. Anders ausgedrückt: Wenn keine Tabelle Daten enthält und Spalten aus der Verweistabelle entfernt werden, ist die resultierende Tabelle mit der Basistabelle identisch.

Da das Listentrennzeichen für Transformationen, Quellen und Patches ein Semikolon ist, sollte dieses Zeichen nicht für Dateinamen oder Pfade verwendet werden.

Diese Funktion generiert keinen Zusammenfassungsinformationsdatenstrom. Verwenden Sie MsiCreateTransformSummaryInfo , um den Stream für eine vorhandene Transformation zu erstellen.

Wenn szTransformFile NULL ist, können Sie testen, ob zwei Datenbanken identisch sind, ohne eine Transformation zu erstellen. Wenn die Datenbanken identisch sind, wird ERROR_NO_DATA zurückgegeben, wird NOERROR zurückgegeben, wenn Unterschiede gefunden werden.

Diese Funktion kann nicht über benutzerdefinierte Aktionen aufgerufen werden. Ein Aufruf dieser Funktion aus einer benutzerdefinierten Aktion führt dazu, dass die Funktion fehlschlägt.

Wenn die Funktion fehlschlägt, können Sie erweiterte Fehlerinformationen mithilfe von MsiGetLastErrorRecord abrufen.

Hinweis

Der msiquery.h-Header definiert MsiDatabaseGenerateTransform 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
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

Datenbankverwaltungsfunktionen

Datenbanktransformationen