Sortieren von Dateisequenznummern in einer CAB-Datei, der Tabelle „File“ und der Tabelle „Media“
Die Tabelle File enthält eine vollständige Liste aller Quelldateien für die Installation. Dateien können auf den Quellmedien als einzelne Dateien gespeichert oder in CAB-Dateien komprimiert werden. Die Sequenznummern in der Spalte „Sequence“ der Tabelle „File“ geben zusammen mit dem Feld „LastSequence“ der Tabelle Media die Installationsreihenfolge für Dateien und das Quellmedium an, auf dem sich die einzelnen Dateien befinden. Jeder Datensatz in der Tabelle „Media“ gibt den Quelldatenträger an, der alle Dateien mit Sequenznummern bis zu dem in der Spalte „LastSequence“ angezeigten Wert und über dem „LastSequence“-Wert des vorherigen Datenträgers enthält.
Angenommen, für eine Datei wurde die Sequenznummer 92 in die Spalte „Sequence“ der Tabelle „File“ eingegeben. Um zu ermitteln, auf welchem Quelldatenträger sich diese Datei befindet, überprüft das Installationsprogramm den Datensatz der Tabelle „Media“ auf den Eintrag mit dem kleinsten „LastSequence“-Wert, der größer als 92 ist. Die Spalte „DiskId“ ist der Primärschlüssel für die Tabelle „Media“, und dieses Feld identifiziert den Datenträger in der Tabelle eindeutig.
Der maximale Wert für die Anzahl von Dateien in der Tabelle „File“ eines Windows Installer-Pakets beträgt 32.767. Informationen zum Erstellen eines Windows Installer-Pakets mit weiteren Dateien finden Sie unter Erstellen eines großen Pakets.
Paketersteller*innen können die Größe ihrer Installationspakete reduzieren, indem sie die Quelldateien komprimieren und in CAB-Dateien einschließen. Das Quelldateiimage kann komprimiert, nicht komprimiert oder eine Mischung der beiden Typen sein. Weitere Informationen zu komprimierten und nicht komprimierten Quellen finden Sie unter Komprimierte und nicht komprimierte Quellen. Komprimierte Quelldateien müssen in einer CAB-Datei gespeichert werden. Die komprimierten Dateien in einer CAB-Datei weise eigenen interne Sequenznummern auf. Die Werte dieser internen Sequenznummern müssen nicht mit den Werten der Sequenznummern in der Tabelle „File“ übereinstimmen. Die Sequenz der in der Tabelle „File“ angegebenen Dateien muss jedoch mit der tatsächlichen Sequenz der Dateien in den CAB-Dateien identisch sein. Die Sequenznummern nicht komprimierter Dateien müssen nicht eindeutig sein. Wenn beispielsweise keine Dateien komprimiert ist und sich alle auf demselben Datenträger befinden, können alle Dateien dieselbe Sequenznummer in der Tabelle „File“ aufweisen.
In der Tabelle „Media“ werden die Datenträger beschrieben, aus denen die Quellmedien für die Installation bestehen. Der erste Eintrag in der Tabelle „Media“ muss immer eine „1“ im Feld „DiskId“ aufweisen. Dateien sollten auf dem Quellmedium so organisiert sein, dass alle Dateien auf Datenträger 1 Sequenznummern in der Tabelle „File“ aufweisen, die kleiner als die Sequenznummern von Dateien auf Datenträger 2 sind, alle Sequenznummern auf Datenträger 2 sollten kleiner als die auf Datenträger 3 sein usw. Diese Anforderung gilt auch für Datenträger, die sowohl komprimierte als auch nicht komprimierte Quellen enthalten. Wenn sich die Medienquellen für die Installation beispielsweise auf zwei Quelldatenträgern befinden und Datenträger 1 sowohl nicht komprimierte Dateien als auch eine CAB-Datei enthält, müssen sowohl die nicht komprimierten Dateien als auch die Dateien in der CAB-Datei Sequenznummern aufweisen, die kleiner sind als die kleinste Nummer der auf Datenträger 2 gespeicherten Dateien. Wenn alle Dateien auf Datenträger 1 in einer CAB-Datei komprimiert sind, kann die Tabelle „Media“ wie in der folgenden Tabelle gezeigt erstellt werden.
Tabelle Media (Ausschnitt)
DiskId | LastSequence | DiskPrompt | Cabinet | VolumeLabel |
---|---|---|---|---|
1 | 5 | 1 | mycab.cab | Datenträger 1 |
2 | 10 | 2 | Datenträger 2 |
Wenn einige Dateien auf Datenträger 1 in einer CAB-Datei komprimiert sind und einige nicht, kann die Tabelle „Media“ wie folgt erstellt werden.
Tabelle Media (Ausschnitt)
DiskId | LastSequence | DiskPrompt | Cabinet | VolumeLabel |
---|---|---|---|---|
1 | 5 | 1 | Datenträger 1 | |
2 | 10 | 1 | mycab.cab | Datenträger 1 |
3 | 15 | 2 | Datenträger 2 |
Beachten Sie, dass die folgende Tabelle „Media“ fehlerhaft ist, da sie einige Dateisequenznummern auf Datenträger 2 angibt, die kleiner sind als einige Dateien innerhalb der CAB-Datei auf Datenträger 1.
Tabelle Media
DiskId | LastSequence | DiskPrompt | Cabinet | VolumeLabel |
---|---|---|---|---|
1 | 5 | 1 | Datenträger 1 | |
2 | 10 | 2 | Datenträger 2 | |
3 | 15 | 1 | mycab.cab | Datenträger 1 |
Große Dateien können auf mehrere CAB-Dateien aufgeteilt werden. Es dürfen nicht mehr als 15 Dateien in einer CAB-Datei vorhanden sein, die sich bis zur nächsten CAB-Datei erstreckt. Wenn Sie beispielsweise über drei CAB-Dateien verfügen, kann die erste Ablage 15 Dateien umfassen, die sich bis zur zweiten CAB-Datei erstrecken, und die zweite Ablage kann 15 Dateien enthalten, die sich bis zur dritten CAB-Datei erstrecken. Wenn Sie der Tabelle „File“ einen Datensatz für eine Datei in mehreren CAB-Dateien hinzufügen, geben Sie den ersten Teil der Datei als Dateisequenznummer in der Spalte „Sequence“ ein.
Die Tabellen „File“ und „Media“ können wie folgt erstellt werden, wenn drei Dateien, zwei CAB-Dateien und zwei Datenträger vorhanden sind. In diesem Beispiel befindet sich „c1.cab“ auf disk1 und „c2.cab“ auf disk2. Die Datei „f2“ erstreckt sich über beide CAB-Dateien. Die CAB-Datei „c1.cab“ enthält die gesamte Datei „f1“ und den ersten Teil der Datei „f2“. Die CAB-Datei „c2.cab“ enthält den zweiten Teil von „f2“ und die gesamte Datei „f3“.
Tabelle Media (Ausschnitt)
DiskId | LastSequence | DiskPrompt | Cabinet | VolumeLabel |
---|---|---|---|---|
1 | 5 | 1 | c1.cab | Datenträger 1 |
2 | 10 | 2 | c2.cab | Datenträger 2 |
Tabelle File (Ausschnitt)
Datei | Sequenz |
---|---|
f1 | 1 |
f2 | 2 |
f3 | 6 |