Seite 1 von 1

Volition Package Tool - Mit MultiArc Addon für Total Commander

Verfasst: 31. Mai 2018, 14:17
von Luke
Verwendete Abkürzungen in diesem Thema

KürzelBedeutungErklärung/Link
AI3AutoIt3Programmiersprache in der VPT geschrieben wurde
CLICommand-Line InterfaceKommandozeile
FSFreeSpaceFreeSpace 2
GUIGraphical User InterfaceGrafische Benutzeroberfläche
MAMultiArc MVVPlugin für Total Commander um Konsolen-Packer einzubinden
RegExRegular ExpressionRegulärer Ausdruck
TCTotal Commanderprofessioneller Datei-Manager
UTCUniversal Time CoordinatedKoordinierte Weltzeit
VPVolition PackageArchiv/Container-Format von Freespace
VPTVolition 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.
  • 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.
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.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. 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.

Bild

Einen Ordner zum VP Archiv hinzufügen.

Bild

Dateien zu einem noch nicht existierenden Ordner hinzufügen. Der Ordnername wird dabei direkt im Eingabefeld übergeben, hier "\tables".

Bild

Eine Datei im VP Archiv editieren ohne das Archiv manuell entpacken und wieder packen zu müssen.

Bild

Einen Ordner mit einem VP Archiv synchronisieren.

Bild
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.
Bild

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
Bild

5. In diesen Ordner müssen VPT.exe undVolition Package.addon aus dem VPT Archiv kopiert werden.

Bild

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.

Bild

7. Im Fenster "MultiArc configuration" auf den Button [Import types] klicken.

Bild

8. Dann die Datei Volition Package.addon öffnen (importieren). Die anschliessende Frage "Are you sure to import..." bestätigt man mit [Ja].

Bild

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.

Bild

11. Im Fenster "Format Capabilities" folgende Haken setzen und das Fenster mit [OK] schliessen.

Bild

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.

Bild
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 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
7. Download

Getestet mit: Win XP Pro 32, Win 7 Ultimate 64, Win 10 Pro 64
Sprachen: Bild
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.

Re: Volition Package Tool - Mit MultiArc Addon für Total Commander

Verfasst: 19. Jun 2018, 11:15
von Luke
@Novachen
Hatte es bislang nicht geschafft, mich hier neu zu registrieren, was ich nun endlich nachgeholt habe.
Novachen hat geschrieben: 31. Mai 2018, 14:17
 ! Nachricht von: Novachen
Dieses Thema wurde im alten Forum von Luke erstellt und für so erhaltenswert betrachtet, dass es direkt ins neue Forum übertragen wird. Ich habe keinerlei Rechte an diesen Beitrag und falls es Luke als eigentlicher Urheber wünscht, dann wird dieses Thema unwiderruflich gelöscht. Falls er sich in diesem Forum wieder anmeldet, dann wird das Thema ihm übertragen, damit er selbst darüber verfügen kann.

Dieses Thema steht nur bis auf Weiteres zur Verfügung.
Das Thema hier kann definitiv so bleiben, danke für die saubere Migration vom alten Forum. :) Es steckt doch einiges an Arbeit in diesem Thema. Nur wenn ich künftig ein Update zu VPT veröffentlichen sollte, würde ich das Thema dann gerne wieder übernehmen. Dann melde ich mich aber nochmal.

Re: Volition Package Tool - Mit MultiArc Addon für Total Commander

Verfasst: 10. Aug 2018, 23:44
von Luke
  • Neue Version 1.1.0.1646
  • In den letzten 14 Monaten seit Release hat sich vieles getan. Alle Änderungen/Neuerungen sind wie üblich im beigefügten Changelog aufgeführt.
  • Der Artikel im Startbeitrag wurde umfangreich überarbeitet. Unter anderem ist der Unterpunkt 2.2 hinzugekommen sowie 4 weitere Punkte beim Abschnitt 4.