Verwenden der API zum Zusammenführen eines Mergemoduls mit einer Datenbank
Mergemodule bieten eine Standardmethode, mit der Entwickler gemeinsam genutzte Windows Installer-Komponenten und die Setuplogik für ihre Anwendungen bereitstellen können. Mergemodule müssen mithilfe eines Mergetools mit einem Installationspaket zusammengeführt werden. Die beste Alternative besteht darin, ein frei verteilbares Mergetool zu erhalten oder eines der Mergetools von unabhängigen Softwareanbietern zu erwerben. Beispielsweise können Sie die Funktionen verwenden, die Mergemod.dll bereitstellt.
Führen Sie die folgenden Schritte aus, um ein Mergemodul durch die API von Mergemod.dll mit einer Windows Installer-Installationsdatenbank zusammenzuführen.
So führen Sie ein Mergemodul mit einer Windows Installer-Installationsdatenbank zusammen
Öffnen Sie eine Protokolldatei mit OpenLog. Dieser Schritt ist nur erforderlich, wenn Sie eine Protokolldatei erstellen oder eine vorhandene Protokolldatei für den Mergeprozess anfügen müssen.
Öffnen Sie die Installationsdatenbank, eine MSI-Datei, die das Mergemodul mit OpenDatabase erhalten wird. Dieser Schritt ist erforderlich.
Öffnen Sie das Mergemodul, eine MSM-Datei, die mit OpenModule mit der die Datenbank zusammengeführt wird. Ein Modul muss geöffnet werden, bevor es mit einer Installationsdatenbank zusammengeführt werden kann. Dieser Schritt ist erforderlich.
Führen Sie das Modul mithilfe von Merge oder MergeEx mit der Installationsdatenbank zusammen. Beachten Sie, dass Merge oder MergeEx nur einmal aufgerufen werden kann, um eine bestimmte Kombination aus MSI- und MSM-Dateien zusammenzuführen. MergeEx ist nur in Mergemod.dll Version 2.0 oder höher und nur bei Verwendung der IMsmMerge2-Schnittstelle verfügbar. Dieser Schritt ist erforderlich.
Rufen Sie get_Errors auf und überprüfen Sie die erhaltene Auflistung von Fehlern auf Mergekonflikte oder andere Fehler. Der Abruf ist nicht destruktiv. Mehrere Instanzen der Fehlersammlung können durch wiederholtes Aufrufen und Lesen von get_Errors abgerufen werden. Sie müssen alle für Ihren Fall relevanten Fehler beheben.
Ordnen Sie die Komponenten des Mergemoduls allen zusätzlichen Features zu, die mithilfe von Connect mit der Installationsdatenbank zusammengeführt wurden oder werden. Das Feature muss bereits vorhanden sein, bevor diese Methode aufgerufen wird. Dieser Schritt ist nur erforderlich, wenn Sie über zusätzliche Features verfügen. Weitere Informationen finden Sie unter Verbinden eines Mergemoduls mit mehreren Features
Extrahieren Sie bei Bedarf mithilfe der folgenden Aktionen Quelldateien aus dem Modul:
Verwenden Sie ExtractFiles oder ExtractFilesEx, um Dateien aus einer eingebetteten CAB-Datei zu extrahieren und dann in ein angegebenes Verzeichnis zu kopieren. Beachten Sie: Für ExtractFilesEx ist Mergemod.dll Version 2.0 oder höher erforderlich.
Verwenden Sie ExtractCAB, um Dateien aus einer eingebetteten CAB-Datei zu extrahieren und dann in einer angegebenen Datei zu speichern.
Verwenden Sie CreateSourceImage, um Dateien aus einem Modul zu extrahieren und dann nach dem Zusammenführen in ein Quellimage auf dem Datenträger zu kopieren. Beachten Sie: CreateSourceImage ist nur in Mergemod.dll Version 2.0 oder höher verfügbar.
Schließen Sie das aktuelle geöffnete Mergemodul mit CloseModule. Dieser Schritt ist erforderlich.
Schließen Sie die aktuell geöffnete Installationsdatenbank mithilfe von CloseDatabase. Dieser Schritt ist erforderlich. Das Schließen einer Datenbank löscht alle Abhängigkeitsinformationen, wirkt sich jedoch nicht auf Fehler aus, die nicht abgerufen wurden.
Schließen Sie die aktuelle Protokolldatei mit CloseLog. Dieser Schritt ist erforderlich, wenn Sie eine Protokolldatei geöffnet haben.
Nachdem das Modul mit Mergemod.dll in der Datenbank zusammengeführt wurde, muss die Tabelle Media aktualisiert werden, um das gewünschte Quellbildlayout zu beschreiben. Der von „Mergemod.dll“ bereitgestellte Mergeprozess aktualisiert die Medientabelle nicht, da der Consumer des Mergemoduls verschiedene Möglichkeiten für das Layout des Quellimages auswählen kann.