Freigeben über


Erstellen von Directory-Tabellen für das Mergemodul

Ein Mergemodul kann auf eine MSI-Datei angewendet werden, um der Installation Verzeichnisse hinzuzufügen, aber keine vorhandenen Verzeichnisse ersetzen oder entfernen. Die Directory-Tabelle gibt das Layout der Verzeichnisse an, die das Mergemodul für die Zielinstallation bereitstellt. In jedem Mergemodul ist eine Directory-Tabelle erforderlich.

Befolgen Sie die folgenden Leitlinien, wenn Sie die Directory-Tabelle in einem Mergemodul erstellen. Weitere Informationen finden Sie unter Directory-Tabelle und Verwenden der Directory-Tabelle.

  • Die vom Mergemodul hinzugefügte Verzeichnisstruktur muss über ein einzelnes Stammverzeichnis verfügen. Das Stammverzeichnis muss TARGETDIR heißen. Der Benutzer kann den Wert von TARGETDIR während der Zusammenführung ändern, um anzugeben, wo die Verzeichnisstruktur des Moduls an die Verzeichnisstruktur des Ziels angefügt werden soll.

  • Andere Mergemodultabellen als die Directory-Tabelle dürfen Verzeichnispfade nicht direkt auf TARGETDIR verweisen. Der Speicherort eines solchen Verweises ändert sich, wenn der Wert von TARGETDIR vom Benutzer geändert wird.

  • Die Tabellen im Mergemodul müssen auf den Speicherort eines untergeordneten Verzeichnisses von TARGETDIR oder eines anderen Verzeichnisses in der Struktur des Mergemoduls verweisen. Gehen Sie wie folgt vor, um TARGETDIR im Mergemodul als übergeordnetes Verzeichnis anzugeben. Geben Sie das Verzeichnis in die Directory-Spalte und TARGETDIR in die Directory_Parent-Spalte ein. Verwenden Sie die Notation "." in der DefaultDir-Spalte, um anzugeben, dass sich dieses Verzeichnis ohne Unterverzeichnis in TARGETDIR befindet. Weitere Informationen finden Sie unter Verwenden der Directory-Tabelle.

  • Die Namen von Verzeichnissen, die vom Mergemodul hinzugefügt werden, müssen die unter Benennen von Primärschlüsseln in Mergemoduldatenbanken beschriebenen Namenskonventionen befolgen. Dazu gehören Verzeichnisse, die durch Eigenschaften wie SystemFolder und ProgramFilesFolder vordefiniert sind.

  • Fügen Sie an jeden Eintrag in der Directory-Tabelle (außer TARGETDIR) eine GUID an. Dies schließt Einträge in der Directory-Tabelle ein, die Windows Installer SystemFolder-Eigenschaften angeben, z. B. SystemFolder.00000000_0000_0000_0000_000000000000. Die Bibliothek „Mergemod.dll“ fügt benutzerdefinierte Aktionen hinzu, um die SystemFolder-Eigenschaft festzulegen.

  • Wenn ein vordefiniertes Verzeichnis in einem Mergemodul enthalten ist, fügt das Mergetool der Zieldatenbank automatisch den benutzerdefinierten Aktionstyp 51 hinzu. Der Ersteller des Mergemoduls muss sicherstellen, dass auch eine CustomAction-Tabelle enthalten ist. Die CustomAction-Tabelle darf leer sein, aber diese Tabelle muss in der Zieldatenbank vorhanden sein, denn sie stellt sicher, dass die geänderten vordefinierten Verzeichnisse in die richtigen Speicherorte geschrieben werden. Wenn in einem Mergemodul beispielsweise ein Systemverzeichnis enthalten ist, muss der Ersteller des Mergemoduls sicherstellen, dass eine CustomAction-Tabelle vorhanden ist.

    Beachten Sie, dass der Abgleichalgorithmus für die Generierung dieser benutzerdefinierten Aktionen des Typs 51 nur überprüft, ob der Verzeichnisname mit einer der vordefinierten SystemFolder-Eigenschaften beginnt. Es wird nicht überprüft, ob der Verzeichnisname genau der Verzeichniseigenschaft entspricht. Jedes Verzeichnis, das mit einem dieser Standardordnernamen beginnt, erhält eine benutzerdefinierte Aktion des Typs 51, auch wenn der Rest des Namens keine GUID ist. Ersteller müssen darauf achten, dass dies bei abgeleiteten Primärschlüsseln, die mit einer der SystemFolder-Eigenschaften beginnen, keine falsch positiven Treffer und keine unbeabsichtigte benutzerdefinierte Aktion generiert.

Im Folgenden finden Sie ein Beispiel einer Directory-Tabelle in einem Mergemodul und die erwarteten aufgelösten Verzeichnisse.

Verzeichnis Directory_Parent DefaultDir
TARGETDIR   SourceDir
Dir00.BC82E350_ C7FC_11d1_ A848-006097ABDE17 TARGETDIR .:MMM_Prog
SystemFolder.BC82E350_ C7FC_11d1_ A848-006097ABDE17 TARGETDIR MMM_Sys
Dir02.BC82E350_ C7FC_11d1_ A848-006097ABDE17 Dir00.BC82E350_ C7FC_11d1_ A848_006097ABDE17 MFC_OCX

 

Es wird erwartet, dass ein Mergemodul mit der obigen Directory-Tabelle zur folgenden Verzeichnisstruktur führt.

Verzeichnis Ziel `Source`
Dir00.BC82E350_ C7FC_11d1_ A848-006097ABDE17 [Installationspunkt des Mergemoduls]\ [Quellpunkt des Mergemoduls]\MMM_Prog
SystemFolder.BC82E350_ C7FC_11d1_ A848-006097ABDE17 [SystemFolder]\ [Quellpunkt des Mergemoduls]\MMM_Sys
Dir02.BC82E350_ C7FC_11d1_ A848-006097ABDE17 [Installationspunkt des Mergemoduls]\MFC_OCX [Quellpunkt des Mergemoduls]\MFC_OCX