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
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.
- 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.
- Bietet viele Schalter um alle Vorgänge flexibel an verschiedene Situationen anpassen zu können.
- Kann Prüfsummen-Dateien (MD5, SHA256) für das VP Archiv erzeugen.
- 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.
- 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.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.025
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.022
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.028
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.031
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.004
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.006
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.023
5.1 Beispiele Total Commander
Mit ausgewählten Ordnern ein neues VP Archiv erstellen. Das übergeordnete Top Level Verzeichnis "data" wird automatisch erstellt.
Einen Ordner zum VP Archiv hinzufügen.
Dateien zu einem noch nicht existierenden Ordner hinzufügen. Der Ordnername wird dabei direkt im Eingabefeld übergeben, hier "\tables".
Eine Datei im VP Archiv editieren ohne das Archiv manuell entpacken und wieder packen zu müssen.
Einen Ordner mit einem VP Archiv synchronisieren.
Einen Ordner zum VP Archiv hinzufügen.
Dateien zu einem noch nicht existierenden Ordner hinzufügen. Der Ordnername wird dabei direkt im Eingabefeld übergeben, hier "\tables".
Eine Datei im VP Archiv editieren ohne das Archiv manuell entpacken und wieder packen zu müssen.
Einen Ordner mit einem VP Archiv synchronisieren.
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.
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.
5. In diesen Ordner müssen VPT.exe undVolition Package.addon aus dem VPT Archiv kopiert werden.
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.
7. Im Fenster "MultiArc configuration" auf den Button [Import types] klicken.
8. Dann die Datei Volition Package.addon öffnen (importieren). Die anschliessende Frage "Are you sure to import..." bestätigt man mit [Ja].
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.
11. Im Fenster "Format Capabilities" folgende Haken setzen und das Fenster mit [OK] schliessen.
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.
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.
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.
Code: Alles auswählen
cd %commander_path%\plugins\wcx\multiarc
5. In diesen Ordner müssen VPT.exe undVolition Package.addon aus dem VPT Archiv kopiert werden.
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.
7. Im Fenster "MultiArc configuration" auf den Button [Import types] klicken.
8. Dann die Datei Volition Package.addon öffnen (importieren). Die anschliessende Frage "Are you sure to import..." bestätigt man mit [Ja].
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.
11. Im Fenster "Format Capabilities" folgende Haken setzen und das Fenster mit [OK] schliessen.
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.
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.
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 sein 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
Rob Saunders - für seine UnixTime UDF
Malkey - für seine ArrayMultiSort UDF
Harold Siebenküttel - fürs testen
Jonathan Bennett - für AutoIt
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.
Download aus dem original Thema von forum.wcsaga.org
Der gleiche Beitrag wurde auch in unserem Forum veröffentlicht: Volition Package Tool - Mit MultiArc Addon für Total Commander
Updates zum Startbeitrag sowie später zum Tool selbst, werde ich in beiden Foren bekanntgeben. Diskutieren kann man natürlich ebenfalls in beiden Foren.
Updates zum Startbeitrag sowie später zum Tool selbst, werde ich in beiden Foren bekanntgeben. Diskutieren kann man natürlich ebenfalls in beiden Foren.