Verwendete Abkürzungen in diesem Thema
Kürzel Bedeutung Erklärung/Link
AI3 AutoIt3 Programmiersprache in der VPT geschrieben wurde
CLI Command-Line Interface Kommandozeile
FS FreeSpace FreeSpace 2
GUI Graphical User Interface Grafische Benutzeroberfläche
MA MultiArc MVV Plugin für Total Commander um Konsolen-Packer einzubinden
RegEx Regular Expression Regulärer Ausdruck
TC Total Commander professioneller Datei-Manager
UTC Universal Time Coordinated Koordinierte Weltzeit
VP Volition Package Archiv/Container-Format von Freespace
VPT Volition Package Tool
1. Einleitung - Was ist Volition Package Tool?
VPT ist ein leistungsfähiges Skript-Tool zur Erstellung und Bearbeitung von Volition Package Archiven (.VP). Es wurde entwickelt, um in automatisierte Produktionsumgebungen integriert werden zu können, wie wir sie z.B. im WCSD Projekt einsetzen. Es hat keine eigene GUI, ist jedoch kompatibel zum Total Commander Plugin "MultiArc". Durch die Kombination VPT + MultiArc + Total Commander erhält man zusätzlich zu den Skript-Funktionen eine komfortable Oberfläche zur Erstellung und Bearbeitung von VP Archiven. So lässt sich VPT kombiniert als Skript-Tool und als GUI-Tool einsetzen.
2. Einsatzgebiet & Konzept
2.1 Einsatzgebiet/Zielgruppe
Die Domäne von VPT ist die Skript-Verarbeitung von Dateien und VP Archiven. Vor allem bei häufig wiederkehrenden Routineaufgaben, wären Tools mit Oberfläche umständlich, zeitraubend und fehlerträchtig. Es eignet sich daher primär für Mod- und Spiele-Entwickler die eine Möglichkeit suchen, automatisiert VP Archive erstellen zu können.
Für Spieler die nur ein paar Details eines bestehenden Mods verändern möchten, ist VPT weniger geeignet bzw. nicht konzipiert. In diesem Fall sollte eher eine reine GUI-Lösung in Betracht gezogen werden. Wobei die Kombination VPT + MA + TC durchaus eine leistungsfähige und komfortable Oberfläche bietet, allerdings auch erst eingerichtet werden muss. Siehe 5.2.
2.2 Das Konzept von VPT
Zuverlässigkeit und Flexibilität
Bei der Entwicklung von VPT stand Zuverlässigkeit im Vordergrund. Es sollte ein robustes Werkzeug entstehen, das eine gute Fehlererkennung bietet. Ebenso wurde Wert auf Flexibilität gelegt, um das Tool an jede beliebige Produktionsumgebung und Situation anpassen zu können. Bereits der Vorgänger VPU (war bei uns von 2014 bis 2016 im Einsatz) zum anzeigen und entpacken von VP Archiven, wurde nach diesen Grundsätzen gestaltet. Auf dessen Basis ist 2016 schliesslich VPT entstanden.
Syntax und Funktionen
Syntax und Funktionen von VPT wurden bewusst an klassische CLI-Packer ausgerichtet. Wer also regelmässig mit ZIP oder RAR in der Kommandozeile arbeitet bzw. solche Packer in Skripts verwendet, wird sich schnell in VPT einarbeiten können. Die Kommandos von VPT orientieren sich an etablierten Standards. Lediglich die Schalter von VPT weichen meist von den Standards ab, auch weil das VP-Format einige Besonderheiten hat, die es Beispielsweise bei ZIP oder RAR nicht gibt.
[+] Ein Beispiel und Vergleich mit Standard CLI-Packer
Dabei wird gezeigt wie der Aufruf bei den einzelnen Packern aussehen würde. Gepackt werden soll der Ordner "data" inklusive aller Unterordner und Dateien. Wir nehmen in diesem Beispiel an, das wir uns in der Shell bereits im übergeordneten Ordner befinden, der den Unterordner "data" enthält. Weiterhin soll das Archiv in "z:\temp\" angelegt werden und den Dateinamen "test" bekommen.
ARJ
>arj32 a -r "z:\temp\test" data\*
ZIP
>zip -r "z:\temp\test" data\*
7-Zip
>7za a "z:\temp\test" data\*
RAR
>rar a -r "z:\temp\test" data\*
VPT
>vpt a -ndd "z:\temp\test" data\*
An diesen Beispielen ist zu erkennen, das VPT keine exotische Syntax aufweist, sondern eine vertraute Schnittstelle bietet. Das gilt vor allem, wenn man bereits einen der genannten Packer auf Skript-Ebene nutzt.
3. Funktionen und Eigenschaften
- Beherrscht die Funktionen Create/Add/Move, List, Extract und Delete.
- Kann im einfachsten Fall einen Ordner samt Unterordner und allen Dateien zu einem VP Archiv packen, wie VPMAKE.
- Es ist deutlich schneller als VPMAKE. Je mehr Dateien gepackt werden müssen, desto grösser der Zeit-Vorteil. Um z.B. den WCS Ordner "CBANIMS" mit 11.034 Dateien und 1.442.151.948 Bytes (1,34 GB) zu einem VP zu packen, benötigt VPMAKE auf meinem PC 28 Sekunden. VPT erledigt die gleiche Aufgabe in 7 Sekunden.
- Unterstützt Regular Expression (Regulärer_Ausdruck) von AI3 per Parameter als Filter, wodurch es flexibel an jede Entwicklungsumgebung und Situation angepasst werden kann.
- Akzeptiert mehrere Dateien per Parameter als Filter für alle Funktionen.
- Akzeptiert einfache Dateimuster (* und ?) per Parameter als Filter für alle Funktionen.
- Akzeptiert eine List-Datei als Filter für alle Funktionen, die sämtliche Dateien, Dateimuster oder RegEx enthalten kann.
- Kann Dateien mit oder ohne Pfade entpacken.
- Kann die Kernfunktionen Create/Add/Move, Delete und Extract simulieren. Nützlich um vorab Dateimuster und vor allem RegEx zu testen. Dabei werden auch bereits die wichtigsten Prüfungen und Berechnungen durchgeführt und so eignet sich die Simulation um Fehler in den Strukturen aufzudecken und um die endgültige Archiv-Grösse sowie andere Werte zu ermitteln, bevor tatsächlich gepackt wird.
- Hat etliche Prüfungen um sicherzustellen, dass das erzeugte oder veränderte VP Archiv stets vollständig und intakt ist. Es wird z.B. geprüft ob auf dem Ziellaufwerk genügend freier Platz vorhanden ist, ob das Archiv die Maximal-Grösse einhält, ob die Dateinamen die Maximal-Länge einhalten und andere Dinge.
- Alle Vorgänge die eine Änderung oder eine Erzeugung eines neuen VP Archivs bedeuten, werden in einem temporären VP Archiv durchgeführt. Erst wenn der Vorgang vollständig und fehlerfrei abgeschlossen wurde, wird die temporäre Datei in das endgültige VP Archiv umbenannt und/oder das bestehende VP Archiv durch das endgültige Archiv überschrieben.
- Wenn während einem Vorgang ein schwerwiegendes Problem auftritt, durch das ein defektes VP Archiv entstehen würde, wird der Vorgang sofort abgebrochen und das bereits begonnene, temporäre VP Archiv gelöscht. Es gibt hier also eine einfache Regel: wenn man nach dem Vorgang das gewünschte VP Archiv sieht, ist es auch in Ordnung.
- Kann den Inhalt des VP Archivs mit verschiedenen Listen darstellen: kurz, lang oder technisch.
- Zeigt bei allen Vorgängen immer eine Zusammenfassung, z.b. wieviele Dateien und Verzeichnisse hinzugefügt wurden, wieviele Bytes und andere Dinge.
- Die UTC Zeit der Dateien im Archiv wird beim Entpacken automatisch in die lokale Zeit konvertiert. Dabei wird sowohl die Zeitzone als auch Sommer/Winter-Zeit berücksichtigt. Soweit ich weiss, ist VPT das einzige Windows Tool das Datum und Zeit beim Entpacken wiederherstellen kann.
- Auch wenn in VP Archiven normalerweise keine leere Dateien vorkommen, bzw. vorkommen sollten, werden diese sowohl beim Packen als auch Entpacken korrekt verarbeitet. Standardmässig werden leere Dateien jedoch ignoriert.
- Bei der Funktion Extract wird eine Liste erzeugt die auch Fehlercodes für jede einzelne Datei enthält.
- VPT setzt beim Beenden ebenso einen Fehlercode, der dann vom aufrufenden Skript ausgewertet werden kann.
- Kann Prüfsummen-Dateien (MD5, SHA256) für das VP Archiv erzeugen.
- Bietet viele Schalter um alle Vorgänge flexibel an verschiedene Situationen anpassen zu können.
- Hat eine RAR-ähnliche Syntax.
- Kann durch die Funktionen Add (Hinzufügen/Überschreiben) und Delete (Löschen) auch als Teil eines Update-Pakets für die Aktualisierung von VP Archiven direkt beim Spieler eingesetzt werden. Dadurch würden sogenannte Patch-VP's komplett entfallen.
- Benötigt mindestens Windows XP SP3. Hat sonst keinerlei Abhängigkeiten und ist auf jedem Windows ohne zusätzliche Runtime Installationen lauffähig.
Kompatibel mit dem Total Commander Plugin "MultiArc". Eine Addon-Datei zum importieren liegt bei. Im TC sind dann folgende Standard-Funktionen möglich: Erstellen (Create), Hinzufügen/Überschreiben (Add), ins Archiv verschieben (Move), Auflisten (List), Entpacken (Extract) und Löschen (Delete). Darüber hinaus ergeben sich durch die Kombination von VPT und TC einige besondere Funktionen und Eigenschaften:
- Ein VP Archiv kann mittels Sync mit einem normalen Verzeichnis (in beide Richtungen) synchronisiert werden. Die Sync Funktion ermöglicht eine sehr einfache Aktualisierung eines bereits bestehenden VP Archives, ideal für Updates.
- Es können mehrere VP Archive auf einmal entpackt werden. Dabei kann man auch angeben, ob jedes VP Archiv in ein eigenes Unterverzeichnis entpackt werden soll. Ideal wenn man den kompletten Inhalt eines Freespace Mods entpacken und dabei die ursprünglichen Strukturen erhalten möchte.
- Eine beliebige Datei kann direkt in der VP geändert werden, ohne das Archiv erst manuell entpacken und nach der Änderung wieder packen zu müssen. So kann z.B. eine Textdatei direkt mit einem Editor geändert werden. Nach der Änderung wird man gefragt, ob die geänderte Datei wieder ins Archiv gepackt werden soll.
- Dateien und/oder Ordner können in einen Pfad eines bestehenden Archivs kopiert werden, der noch nicht existiert. Dieser kann direkt beim Packvorgang angegeben werden. Dabei kann der Pfad auch mehrere Unterordner enthalten, also z.B. "Ordner1\Ordner2\...".
- Innerhalb einer einzelnen VP kann mit der Dateisuche gearbeitet werden. Die Dateien in der Ergebnis-Liste können dann direkt aufgerufen werden, wodurch das Verzeichnis im VP gewechselt und der Fokus auf die betreffende Datei gesetzt wird.
- In einem Ordner mit mehreren VP's oder in einem ganzen Laufwerk, kann mit der Dateisuche auch global in allen VP Archiven gesucht werden. Die Dateien in der Ergebnis-Liste können dann direkt aufgerufen werden, wodurch das betreffende VP geöffnet, das Verzeichnis im VP gewechselt und der Fokus auf die betreffende Datei gesetzt wird.
4. Syntax und Beispiele
[+] 4.1 Hilfe - Syntax, inklusive spezieller Befehle und Schalter.
>vpt -h*
Volition Package Tool v1.1.0.1646 (c) 2014-2018 Luke (www.wcsaga.org)
USAGE:
VPT <command> [<switches>] <archive> [<files>|<@list>] [<source/output dir>]
[<path inside>]
<command>
a Add files to a new or existing archive
d Delete files
e Extract files without paths
l List files in archive - full: date, time, size, path & name
lb List files in archive - bare: path & name
* lt List all files in archive - tech: offset, size, name, timestamp, flags
Note: shows the real directory without any filter, sort or conversion
methods.
* m Move files to a new or existing archive (be carefully!)
Note: same like 'a' but will delete source files and folders after
packing.
x Extract files with full paths
<switches> - general
-re Use Regular Expression instead of simple pattern
-nh Show no header (not for command 'lb')
-na Show no actions (not for command 'lb')
-nl Show no file list (not for command 'lb')
-nt Show no table structure (not for command 'lb')
-ns Show no summary (not for command 'lb')
-nvp Add no .VP suffix if missing
-sim Simulate the operation (not for list commands)
Note: useful for testing parameters like RegEx
* -nvc No VP validity check (not recommended)
Note: for all operations which reads an existing archive
* -pt Print the current time with milliseconds at the begin of any line
Note: useful for debugging/testing
-nop No operation - this switch does simply nothing
Note: useful as placeholder in scripts
<switches> - Add/Move (a,m)
-ndd Add no top level directory 'data'
Note: useful if 'data' is already added by file pattern/RegEx
-o Overwrite existing files
-ovp Overwrite VP - delete an existing archive before packing
-nr No recursion - add only files from source dir without subfolders
Note: works only with file pattern/RegEx
-cl Convert folder and file names to lower case
Note: on existing archives it converts the complete directory to
lower case, not only the added files.
-cu Convert folder and file names to upper case
Note: on existing archives it converts the complete directory to
upper case, not only the added files.
-ih Include hidden files
Note: works only with file pattern/RegEx
-is Include system files
Note: works only with file pattern/RegEx
-il Include link/junction files
Note: works only with file pattern/RegEx
* -ie Include empty files (not recommended)
Note: most other VP tools doesn't support empty files
* -ndc No file date check
Note: if set then an invalid file date will change to timestamp 1
instead of stopping the process.
* -md5 Generate a MD5 checksum file for the archive
* -sha Generate a SHA256 checksum file for the archive
<switches> - Delete (d)
* -md5 Generate a MD5 checksum file for the archive
* -sha Generate a SHA256 checksum file for the archive
<switches> - Extract (e,x)
-o Overwrite existing files
-du Use UTC file date in archive instead of local timezone settings
-dl Ignore file date in archive and use the current local date
-cl Convert folder and file names to lower case
-cu Convert folder and file names to upper case
* -fls Sort file list - normally not needed
<switches> - List (l,lb,lt)
-du Use UTC file date in archive instead of local timezone settings
-cl Convert folder and file names to lower case (not for command 'lt')
-cu Convert folder and file names to upper case (not for command 'lt')
* -co Check directory overhead (only for command 'lt')
* -fls Sort file list - normally not needed (not for command 'lt')
<switches> - MultiArc (Total Commander plugin)
* -wp Show a window with progress bar
* -we Show error popups (use it with -ne switch)
* -ne No exit code
Note: useful to avoid multiple error popups from MultiArc
Note: multiple switches must be typed without spaces between
<archive>
Path and filename of the archive. The suffix '.vp' will added
automatically if it's not set. This behavior can be disabled by using the
-nvp switch. Path is created if not exists.
<files>
Multiple files can used with | as separator and all files must enclosed in
quotes like "file1|file2|file3". Simple file pattern allowed with ? and *
or use RegEx (-re switch). It will automatically set to * if it's empty.
Hint: The fastest way to list/extract a whole archive or to add a
complete directory to a new archive is to use * as file pattern without
-re switch. This disables all filter mechanism.
<@list>
A file which contains all files wanted to add/list/extract/delete. It must
have the same format like the list from command 'lb' (bare format). Simple
file pattern and RegEx (use -re switch) can also be used in this list.
<source dir>
Path from where files will be added recursively. It will automatically set
to current work dir if it's empty.
<output dir>
Path where files will be extracted. It will automatically set to current
work dir if it's empty. Path is created if it doesn't exists.
<path inside>
It's needed for adding files to an existing archive to put the files in an
existing folder inside the archive or to create this folder. This path can
contain multiple folders like "folder1\folder2\folder3...".
Type 'VPT -h' for help
Type 'VPT -h*' for help inclusive special commands/switches
Type 'VPT -hh' for examples
Type 'VPT -hh*' for examples inclusive special ones for advanced users
[+] 4.2 Hilfe - Beispiele, inklusive spezieller Beispiele für fortgeschrittene Benutzer.
>vpt -hh*
Volition Package Tool v1.1.0.1646 (c) 2014-2018 Luke (www.wcsaga.org)
EXAMPLES:
List example 1:
VPT l hermes_core.vp
List all content from 'hermes_core.vp' with long format.
List example 2:
VPT lt -nl hermes_core.vp
Show only tech summary for 'hermes_core.vp' without file list.
List example 3:
VPT l hermes_core.vp *.fc2
List all .fc2 files from 'hermes_core.vp' with long format.
* List example 4:
VPT l -re hermes_core.vp "^[^.]+$|\.(?!(tbl|fs2)$)"
List all files from 'hermes_core.vp' with long format but exclude
.tbl and .fs2 files.
Extract example 1:
VPT x -o hermes_core.vp * z:\temp
Extract all files with relative paths to 'z:\temp' and overwrite
existing files.
Extract example 2:
VPT e hermes_core.vp data\tables\strings.tbl
Extract 'strings.tbl' without path into current directory.
Extract example 3:
VPT e hermes_core.vp "*.fs2|*.fc2"
Extract all .fs2 and .fc2 files without paths into current directory.
Extract example 4:
VPT x -o-dl hermes_core.vp data\tables\*string* z:\temp
Extract all files from 'data\tables\' containing 'string' in filename with
relative paths to 'z:\temp' and overwrite existing files and ignore original
file date.
Extract example 5:
VPT x -o hermes_core.vp @extract.lst z:\temp
Extract all files listed in 'extract.lst' with relative paths to 'z:\temp'
and overwrite existing files.
Extract example 6:
VPT x hermes_core.vp "data\tables\tips.tbl|data\fonts\font01.vf" z:\temp
Extract 'data\tables\tips.tbl' and 'data\fonts\font01.fv' with relative
paths to 'z:\temp'.
* Extract example 7:
VPT x -o-re hermes_core.vp "data\\players\\(?!.*\\)" z:\temp
Extract all files only from 'data\players\' with relative paths to 'z:\temp'
and overwrite existing files but exclude all subfolders.
Create example 1:
VPT a new_core.vp
Add all files and folders from current directory with their relative paths
to the new archive 'new_core.vp'. The top level directory 'data' will
automatically added.
Create example 2:
VPT a -ih new_core.vp * d:\game\data
Add all files with their relative paths from 'd:\game\data' inclusive hidden
files to the new archive 'new_core.vp'. The top level directory 'data' will
automatically added.
* Create example 3:
VPT a -re-sim new_core.vp "movies\\(?!prologue.*)" d:\game\data
Add all movies from 'd:\game\data\movies' with their relative paths
but exclude all movies beginning with 'prologue' in filename. The top level
directory 'data' will automatically added. Packing is only simulated without
any write access.
* Create example 4:
VPT a -re-ndd new_core.vp "data\\(?!(cbanims|hud|maps|movies)\\)" d:\game
Add all files from 'd:\game\data' to the new archive 'new_core.vp' but
exclude the subfolders 'cbanims', 'hud', 'maps' and 'movies' and supress the
top level directory 'data'. The switch '-ndd' is needed here because
'data' will added already by file pattern.
* Create example 5:
VPT a -re new_core.vp "^(?!(cbanims|hud|maps|movies)\\)" d:\game\data
Variant of 'Create example 4' with the same result.
Add example 1:
VPT a -o core.vp @pack.lst
Add all files listed in 'pack.lst' with their relative paths from current
directory and overwrite all existing files.
Add example 2:
VPT a -o core.vp "*.tbl|*.fs2" d:\game\data data
Add all .tbl and .fs2 files from 'd:\game\data' (and subfolders) with their
relative paths into the folder 'data' inside the archive and overwrite all
existing files.
Add example 3:
VPT a -o core.vp *.fs2 d:\game\missionfiles data\missions
Add all .fs2 files from 'd:\game\data\missionfiles' (and subfolders)
into the folder 'data\missions' inside 'core.vp' and overwrite all
existing files.
[+] 4.3 Inhalt des Quellverzeichnisses für die nachfolgenden Beispiele
>dir "h:\WCS_BASE\patch" /b /s /ogn
h:\WCS_BASE\patch\interface
h:\WCS_BASE\patch\missions
h:\WCS_BASE\patch\tables
h:\WCS_BASE\patch\interface\2_OptionsMain.dds
h:\WCS_BASE\patch\interface\2_OptionsMain-M.pcx
h:\WCS_BASE\patch\missions\Demo-01-BG-Hermes.fs2
h:\WCS_BASE\patch\missions\Demo-02-BG-Hermes.fs2
h:\WCS_BASE\patch\missions\Demo-03-BG-Hermes.fs2
h:\WCS_BASE\patch\missions\Demo-04-BG-Hermes.fs2
h:\WCS_BASE\patch\missions\Demo-05-BG-Hermes.fs2
h:\WCS_BASE\patch\missions\M01-BG-Hermes.fs2
h:\WCS_BASE\patch\missions\M18-BG-Hermes.fs2
h:\WCS_BASE\patch\tables\messages.tbl
h:\WCS_BASE\patch\tables\strings.tbl
[+] 4.4 Beispiel-Ausgabe - VP erzeugen
>vpt a "z:\temp\hermes_42181_1_1_patch.vp" * "h:\WCS_BASE\patch"
Volition Package Tool v1.1.0.1646 (c) 2014-2018 Luke (www.wcsaga.org)
Create archive: "z:\temp\hermes_42181_1_1_patch.vp"
Mode : add files
Filter : "*"
Source dir : "h:\WCS_BASE\patch\"
Build filter list (1 lines)
Read source dir (11 files found)
Filter source dir (11 files left)
Build VP directory (17 records)
Write VP header OK
Add data\interface\2_OptionsMain.dds OK
Add data\interface\2_OptionsMain-M.pcx OK
Add data\missions\Demo-01-BG-Hermes.fs2 OK
Add data\missions\Demo-02-BG-Hermes.fs2 OK
Add data\missions\Demo-03-BG-Hermes.fs2 OK
Add data\missions\Demo-04-BG-Hermes.fs2 OK
Add data\missions\Demo-05-BG-Hermes.fs2 OK
Add data\missions\M01-BG-Hermes.fs2 OK
Add data\missions\M18-BG-Hermes.fs2 OK
Add data\tables\messages.tbl OK
Add data\tables\strings.tbl OK
Write VP directory OK
Rename temporary VP archive OK
Done
Bytes added : 4,201,103
Files added : 11
Directorys added: 4
Archive size : 4,201,867 bytes
Processing time : 00:00:00.030
[+] 4.5 Beispiel-Ausgabe - Dateien in VP löschen
>vpt d "z:\temp\hermes_42181_1_1_patch.vp" *.tbl
Volition Package Tool v1.1.0.1646 (c) 2014-2018 Luke (www.wcsaga.org)
Delete files: "z:\temp\hermes_42181_1_1_patch.vp"
Mode : standard
Filter : "*.tbl"
Build filter list (1 lines)
Read VP directory (11 files)
Filter VP directory (9 files left)
Sort file list
Build VP directory (13 records)
Write VP header OK
Rebuild archive...
Delete data\tables\messages.tbl OK
Delete data\tables\strings.tbl OK
Write VP directory OK
Rename temporary VP archive OK
Done
Bytes deleted : 627,177
Files deleted : 2
Archive size : 3,574,514 bytes
Processing time : 00:00:00.024
[+] 4.6 Beispiel-Ausgabe - Dateien zu VP hinzufügen
>vpt a "z:\temp\hermes_42181_1_1_patch.vp" *.tbl "h:\WCS_BASE\patch" data
Volition Package Tool v1.1.0.1646 (c) 2014-2018 Luke (www.wcsaga.org)
Update archive: "z:\temp\hermes_42181_1_1_patch.vp
Mode : add files
Filter : "*.tbl"
Source dir : "h:\WCS_BASE\patch\"
Path inside : "data\"
Build filter list (1 lines)
Read source dir (11 files found)
Filter source dir (2 files left)
Read VP directory (9 files)
Filter VP directory (9 files left)
Sort file list
Build VP directory (17 records)
Write VP header OK
Rebuild archive...
Add data\tables\messages.tbl OK
Add data\tables\strings.tbl OK
Write VP directory OK
Rename temporary VP archive OK
Done
Bytes added : 627,177
Files added : 2
Archive size : 4,201,867 bytes
Processing time : 00:00:00.033
[+] 4.7 Beispiel-Ausgabe - Dateien in VP überschreiben
>vpt a -o "z:\temp\hermes_42181_1_1_patch.vp" *.fs2 "h:\WCS_BASE\patch" data
Volition Package Tool v1.1.0.1646 (c) 2014-2018 Luke (www.wcsaga.org)
Update archive: "z:\temp\hermes_42181_1_1_patch.vp
Mode : add files
Filter : "*.fs2"
Source dir : "h:\WCS_BASE\patch\"
Path inside : "data\"
Build filter list (1 lines)
Read source dir (11 files found)
Filter source dir (7 files left)
Read VP directory (11 files)
Filter VP directory (4 files left)
Sort file list
Build VP directory (17 records)
Write VP header OK
Rebuild archive...
Add data\missions\Demo-01-BG-Hermes.fs2 OK
Add data\missions\Demo-02-BG-Hermes.fs2 OK
Add data\missions\Demo-03-BG-Hermes.fs2 OK
Add data\missions\Demo-04-BG-Hermes.fs2 OK
Add data\missions\Demo-05-BG-Hermes.fs2 OK
Add data\missions\M01-BG-Hermes.fs2 OK
Add data\missions\M18-BG-Hermes.fs2 OK
Write VP directory OK
Rename temporary VP archive OK
Done
Bytes deleted : 1,185,423
Files deleted : 7
Bytes added : 1,185,423
Files added : 7
Archive size : 4,201,867 bytes
Processing time : 00:00:00.036
[+] 4.8 Beispiel-Ausgabe - Inhalt des VP auflisten - kurz
>vpt lb "z:\temp\hermes_42181_1_1_patch.vp"
data\interface\2_OptionsMain.dds
data\interface\2_OptionsMain-M.pcx
data\missions\Demo-01-BG-Hermes.fs2
data\missions\Demo-02-BG-Hermes.fs2
data\missions\Demo-03-BG-Hermes.fs2
data\missions\Demo-04-BG-Hermes.fs2
data\missions\Demo-05-BG-Hermes.fs2
data\missions\M01-BG-Hermes.fs2
data\missions\M18-BG-Hermes.fs2
data\tables\messages.tbl
data\tables\strings.tbl
[+] 4.9 Beispiel-Ausgabe - Inhalt des VP auflisten - ausführlich
>vpt l "z:\temp\hermes_42181_1_1_patch.vp"
Volition Package Tool v1.1.0.1646 (c) 2014-2018 Luke (www.wcsaga.org)
List files: "z:\temp\hermes_42181_1_1_patch.vp"
Filter : "*"
Build filter list (1 lines)
Read VP directory (11 files)
Filter VP directory (11 files left)
List files
Date Time Size Path & Name
---------- -------- ---------- -------------------------------
2012-03-23 22:16:20 2359424 data\interface\2_OptionsMain.dds
2012-03-23 22:16:20 29079 data\interface\2_OptionsMain-M.pcx
2012-03-23 21:15:45 124909 data\missions\Demo-01-BG-Hermes.fs2
2012-03-24 01:09:26 178793 data\missions\Demo-02-BG-Hermes.fs2
2012-03-23 21:15:45 127914 data\missions\Demo-03-BG-Hermes.fs2
2012-03-26 15:30:50 150123 data\missions\Demo-04-BG-Hermes.fs2
2012-03-23 21:15:45 163317 data\missions\Demo-05-BG-Hermes.fs2
2012-03-24 19:14:05 125311 data\missions\M01-BG-Hermes.fs2
2012-03-26 15:30:50 315056 data\missions\M18-BG-Hermes.fs2
2012-03-21 23:53:32 390388 data\tables\messages.tbl
2012-03-24 19:14:06 236789 data\tables\strings.tbl
---------- -------- ---------- -------------------------------
Bytes total : 4,201,103 / 4,201,103 (100 %)
Files total : 11 / 11 (100 %)
Time base : Local timezone (file date from archive)
Processing time : 00:00:00.006
[+] 4.10 Beispiel-Ausgabe - Inhalt des VP auflisten - technisch
>vpt lt -co "z:\temp\hermes_42181_1_1_patch.vp"
Volition Package Tool v1.1.0.1646 (c) 2014-2018 Luke (www.wcsaga.org)
List archive: "z:\temp\hermes_42181_1_1_patch.vp"
Read VP directory
Check directory overhead
List directory
Pos Offset Size Name Timestamp Flags
------ ---------- ---------- ------------------------------- ----------- ---
1 0 0 data 0 D--
2 0 0 interface 0 D--
3 16 2359424 2_OptionsMain.dds 1332537380 -F-
4 2359440 29079 2_OptionsMain-M.pcx 1332537380 -F-
5 0 0 .. 0 --B
6 0 0 missions 0 D--
7 2388519 124909 Demo-01-BG-Hermes.fs2 1332533745 -F-
8 2513428 178793 Demo-02-BG-Hermes.fs2 1332547766 -F-
9 2692221 127914 Demo-03-BG-Hermes.fs2 1332533745 -F-
10 2820135 150123 Demo-04-BG-Hermes.fs2 1332772250 -F-
11 2970258 163317 Demo-05-BG-Hermes.fs2 1332533745 -F-
12 3133575 125311 M01-BG-Hermes.fs2 1332612845 -F-
13 3258886 315056 M18-BG-Hermes.fs2 1332772250 -F-
14 0 0 .. 0 --B
15 0 0 tables 0 D--
16 3573942 390388 messages.tbl 1332370412 -F-
17 3964330 236789 strings.tbl 1332612846 -F-
------ ---------- ---------- ------------------------------- ----------- ---
Bytes total : 4,201,103
Files total : 11
Directorys total : 4
Backdirs total : 2
Directory depth : 2
VP version : 2
Directory offset : 4201119
Directory records : 17
Directory size : 748 bytes
Directory overhead: 0 records, 0 bytes (0 %)
Archive size : 4,201,867 bytes
Processing time : 00:00:00.007
[+] 4.11 Beispiel-Ausgabe - VP entpacken
>vpt x "z:\temp\hermes_42181_1_1_patch.vp" * "z:\temp\"
Volition Package Tool v1.1.0.1646 (c) 2014-2018 Luke (www.wcsaga.org)
Extract files: "z:\temp\hermes_42181_1_1_patch.vp"
Mode : with paths
Filter : "*"
Output dir : "z:\temp\"
Build filter list (1 lines)
Read VP directory (11 files)
Filter VP directory (11 files left)
Extract files
Date Time Size RC Path & Name
---------- -------- ---------- -- -------------------------------
2012-03-23 22:16:20 2359424 0 data\interface\2_OptionsMain.dds
2012-03-23 22:16:20 29079 0 data\interface\2_OptionsMain-M.pcx
2012-03-23 21:15:45 124909 0 data\missions\Demo-01-BG-Hermes.fs2
2012-03-24 01:09:26 178793 0 data\missions\Demo-02-BG-Hermes.fs2
2012-03-23 21:15:45 127914 0 data\missions\Demo-03-BG-Hermes.fs2
2012-03-26 15:30:50 150123 0 data\missions\Demo-04-BG-Hermes.fs2
2012-03-23 21:15:45 163317 0 data\missions\Demo-05-BG-Hermes.fs2
2012-03-24 19:14:05 125311 0 data\missions\M01-BG-Hermes.fs2
2012-03-26 15:30:50 315056 0 data\missions\M18-BG-Hermes.fs2
2012-03-21 23:53:32 390388 0 data\tables\messages.tbl
2012-03-24 19:14:06 236789 0 data\tables\strings.tbl
---------- -------- ---------- -- -------------------------------
Bytes extracted : 4,201,103 / 4,201,103 (100 %)
Files extracted : 11 / 11 (100 %)
Files with error: 0
Time base : Local timezone (file date from archive)
Processing time : 00:00:00.028
5. Total Commander
[+] 5.1 Beispiele Total Commander
Mit ausgewählten Ordnern ein neues VP Archiv erstellen. Das übergeordnete Top Level Verzeichnis "data" wird automatisch erstellt.
tc_create_d.png
Einen Ordner zum VP Archiv hinzufügen.
tc_add1_d.png
Dateien zu einem noch nicht existierenden Ordner hinzufügen. Der Ordnername wird dabei direkt im Eingabefeld übergeben, hier "\tables".
tc_add2_d.png
Eine Datei im VP Archiv editieren ohne das Archiv manuell entpacken und wieder packen zu müssen.
tc_edit_d.png
Einen Ordner mit einem VP Archiv synchronisieren.
tc_sync_d.png
[+] 5.2 Integration in Total Commander mittels MultiArc
Hier wird der komplette Weg der Installation von MultiArc und VPT in Total Commander gezeigt. Die Schnittstelle von VPT wurde auf MA Version 1.4.2.144 ausgelegt. Ältere Versionen von MA können Probleme im Zusammenspiel mit VPT verursachen. Während der Entwicklung von VPT wurde Total Commander Version 9.0a verwendet.
1. Total Commander unbedingt "Als Administrator ausführen", da es sonst bei der Installation und vor allem Konfiguration von MultiArc zu Problemen kommt.
2. MultiArc herunterladen: MultiArc MVV
3. Auf das heruntergeladene MultiArc Archiv im TC doppelklicken oder auswählen und Enter drücken, dann erscheint folgendes Fenster. Dieses mit Ja bestätigen und den vorgeschlagenen Installationspfad im nächsten Fenster übernehmen.
ma_inst.png
4. Sobald MA installiert ist, müssen zwei Dateien in das MultiArc Verzeichnis kopiert werden. Hat man MA in den vorgeschlagenen Standardordner installiert, erreicht man den Ordner am einfachsten wenn man in die Kommandozeile von TC den folgenden Befehl einfügt und Enter drückt.
tc_ma_path.png
5. In diesen Ordner müssen VPT.exe
und Volition Package.addon
aus dem VPT Archiv kopiert werden.
tc_vpt_addon.png
6. Jetzt eine beliebige Datei im TC auswählen - z.B. die eben kopierte Datei VPT.exe
- und den Packvorgang starten. Entweder über das Menü, Symbolleiste oder einfach mit Alt + F5 . Dann sollte folgendes Fenster erscheinen. Hier muss rechts zuerst "MultiArc" über die Dropdown-Liste bei "->" ausgewählt werden. Dann direkt darunter konfigurieren klicken.
tc_pack.png
7. Im Fenster "MultiArc configuration" auf den Button Import types klicken.
ma_import.png
8. Dann die Datei Volition Package.addon
öffnen (importieren). Die anschliessende Frage "Are you sure to import..." bestätigt man mit Ja .
ma_addon.png
9. Das Fenster "MultiArc configuration" mit OK schliessen und erneut öffnen.
10. Dann bei "Type" den Packertyp "VP" auswählen. Anschliessend rechts im Fenster auf den Button Change klicken.
ma_main.png
11. Im Fenster "Format Capabilities" folgende Haken setzen und das Fenster mit OK schliessen.
ma_vp.png
12. Das Fenster "MultiArc configuration" ebenfalls mit OK schliessen.
13. Den Packvorgang abbrechen, TC beenden und erneut starten.
Jetzt sollte TC neue VP's erstellen sowie bestehende VP's öffnen und entpacken können. Startet man nun einen Packvorgang, sollte das Packformat "vp" über die Dropdown-Liste bei "->" ausgewählt werden können.
tc_pack_vp.png
6. Zusätzliche Informationen
[+] 6.1 Hintergrund und Entstehung
Meine ersten Versuche mit Spiele-Modding im allgemeinen und Modding von Wing Commander Saga im speziellen unternahm ich 2012. Damals hatte ich zum ersten Mal mit VP Archiven zu tun und setzte vor allem VPVIEW ein. Ende 2013, als unser eigenes Projekt Wing Commander Saga Deutsch startete, musste ein Skript-fähiges Tool zur Erzeugung von VP Archiven her. Das einzige Tool das es damals in dieser Richtung für Windows gab war VPMAKE, das wir dann auch während der gesamten Entwicklung und Betatest eingesetzt haben. Alle anderen Tools waren für unser Projekt untauglich, da sie nicht Skript-fähig waren und zudem teils gravierende Fehler aufwiesen.
Auch nach dem Release (Ende 2015) wurde für alle Updates von WCSD (bis einschliesslich Service Pack 1, Ende 2016) das Tool VPMAKE eingesetzt. VPMAKE kann jedoch VP's nur erzeugen, aber nicht entpacken. Also entwickelte ich bereits 2014 eine eigene VP Funktionsbibliothek (VPU UDF) für List und Extract für die Programmiersprache AutoIt3. Diese Bibliothek wurde dann von mehreren - meist internen - Tools verwendet, unter anderem auch von "WCS Base Auto Extract" sowie "VPU" (wurde nie veröffentlicht), ein Skript-fähiges Tool zum listen und entpacken von VP Archiven. Wir hatten VPU auch schon mittels MA in TC integriert. So konnte man VP's auch im TC öffnen, sichten und entpacken. {Bemerkung: TC ist der Standard Datei-Manager der beiden Programmierer unseres Teams.} Bereits damals (2014) beherrschte VPU das Entpacken mit einer Dateiliste als Parameter, Dateiliste aus einer Datei, Dateimuster sowie RegEx. Mit der Kombination VPMAKE und VPU hatte ich so alle wesentlichen Funktionen um Skript-gesteuert mit VP Archiven hantieren zu können. Die Funktionalität von VPMAKE war mir jedoch zu eingeschränkt und ich wollte alle Funktionen in nur einem Tool vereint haben. Ende 2016 begann ich also die Funktionsbibliothek und VPU zu erweitern, so das auch VP's erzeugt werden konnten, genau wie mit VPMAKE. Allerdings mit den Vorteilen von VPU (Dateimuster und RegEx). Dabei wurde das Tool in "VPT" umbenannt und die Funktionsbibliothek (UDF) in "VPPU". Anfang 2017 wurden zusätzlich die Funktionen Add und Delete eingebaut, um nachträglich Dateien hinzufügen und löschen zu können.
Somit bietet VPT inzwischen (2017) mehr als die Kombination VPMAKE und VPU. VPT hat sich zum universellen VP Tool entwickelt und wird bei uns VPMAKE ersetzen.
[+] 6.2 Danksagungen
Derek Meek - für VPMAKE welches mich inspirierte VPU zu erschaffen und später zu VPT zu erweitern
Rob Saunders - für seine UnixTime UDF
Malkey - für seine ArrayMultiSort UDF
Harold Siebenküttel - fürs testen
Jonathan Bennett - für AutoIt
7. Download
Getestet mit: Win XP Pro 32, Win 7 Ultimate 64, Win 10 Pro 64
Sprachen:
Geeignet für: Wing Commander Saga, Freespace 2, Diaspora, Babylon Project, Wings of Dawn, Blue Planet und alle anderen FS-Spiele die das VP-Format Version 2 nutzen.
Vorherige Downloads: 50
Sie haben keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.