Freigeben über


MsiDatabaseGenerateTransformA-Funktion (msiquery.h)

Die MsiDatabaseGenerateTransform--Funktion generiert eine Transformationsdatei mit Unterschieden zwischen zwei Datenbanken. Eine Transformation ist eine Möglichkeit zum Aufzeichnen von Änderungen an einer Datenbank, 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

Behandeln Sie die Datenbank aus MsiOpenDatabase, die die Änderungen enthält.

[in] hDatabaseReference

Behandeln Sie die Datenbank, die von MsiOpenDatabase abgerufen wurde, die die Änderungen nicht enthält.

[in] szTransformFile

Eine mit Null beendete Zeichenfolge, die den Namen der generierten Transformationsdatei angibt. Dieser Parameter kann null sein. Wenn szTransformFile- null ist, können Sie MsiDatabaseGenerateTransformTransform- 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:

Bemerkungen

Verwenden Sie zum Generieren einer Differenzdatei zwischen zwei Datenbanken die MsiDatabaseGenerateTransform--Funktion. Eine Transformation enthält Informationen zum Einfügen und Löschen von Spalten und Zeilen. Die Überprüfungskennzeichnungen werden im Zusammenfassungsinformationsdatenstrom der Transformationsdatei gespeichert.

Bei Tabellen, die in beiden Datenbanken vorhanden sind, ist der einzige Unterschied zwischen den beiden zulässigen Schemas das Hinzufügen von Spalten zum Ende der Referenztabelle. Sie können einer Tabelle keine 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 und Spalten enthält, aus der Referenztabelle entfernt werden, ist die resultierende Tabelle identisch mit der Basistabelle.

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 Datenstrom 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 aus benutzerdefinierten 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 MsiGetLastErrorRecordabrufen.

Anmerkung

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
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

Datenbankverwaltungsfunktionen

Datenbanktransformationen