Skip to content

11EJDE11/MixVFS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MixVFS

Mount C&C .mix archive files as virtual drives in Windows Explorer. Supports Red Alert 1, Red Alert 2, and Tiberian Sun. Files can be added, removed, renamed, and edited directly - changes are automatically saved back to the .mix file.

Installation

  1. Download the latest MixVFS-vX.Y.Z-win-x64.zip from Releases
  2. Extract anywhere (e.g. Downloads)
  3. Run MixVFS.exe — the Setup & Settings window opens
  4. Click Install/Update: this installs WinFsp if needed, copies MixVFS to %LocalAppData%\MixVFS\, registers Explorer shell integration, and optionally adds a Start menu shortcut

Requirements

  • Windows x64
  • .NET 10 runtime (bundled in the release zip — no separate install needed)
  • WinFsp runtime — bundled in the release zip and installed automatically when you click Install/Apply settings

Commands

Inspect

MixVFS <file.mix>
MixVFS list <file.mix> [--game <auto|td|ra|ts|ra2>] [--gmd <path>]

list prints the contents of a .mix file. Passing only <file.mix> triggers mount/unmount toggle (the same action used for Explorer double-click integration).

Mount

MixVFS mount <file.mix> <mount-point> [options]
MixVFS unmount <file.mix|mount-point>
MixVFS list-mounts

Mounts a .mix file as a virtual drive. mount-point can be a drive letter (X:) or an empty folder. The archive is unpacked to a workspace cache on first mount; subsequent mounts reuse the cache. Changes made through Explorer are debounced and saved back to the .mix automatically. Press Ctrl+C to unmount cleanly from the terminal.

Mount options:

Option Default Description
--force off Rebuild workspace cache even if one already exists
--debounce-ms <ms> 1000 Delay after last change before saving back to .mix
--no-explorer off Don't open Explorer after mounting
--game <auto|td|ra|ts|ra2> auto Force game variant for ID hashing
--gmd <path> auto Path to a global mix database .dat file for filename resolution

Unpack / Pack

MixVFS unpack <file.mix> <output-folder> [--force] [--game ...] [--gmd ...]
MixVFS pack <input-folder> <file.mix>

Extracts a .mix to a folder, or packs a folder back into a .mix. The folder contains a hidden MixVFS.json manifest that tracks file IDs, names, and header/encryption metadata for accurate repacking. If the name of a file is not known its ID is preserved as-is from the manifest; files named 0xXXXXXXXX.bin are treated as explicit hex IDs.

Setup & Settings

MixVFS settings
MixVFS          (no arguments — same as above)

Opens the Setup & Settings window. From here you can:

  • Install/Update — saves settings, installs WinFsp if missing, copies MixVFS to %LocalAppData%\MixVFS\, registers Explorer shell integration, and optionally creates a Start menu shortcut
  • Uninstall — removes Explorer shell integration and the Start menu shortcut
  • Configure workspace/backup paths, context-menu options, and auto-backup behaviour

Advanced CLI equivalents (rarely needed):

MixVFS shell-install [--exe <path>]
MixVFS shell-uninstall
MixVFS shell-toggle <file.mix>

Known issues

  • Windows Notepad cannot open files with content — Notepad fails to open non-empty files mounted via MixVFS with "Make sure a disk is in the drive you specified". No idea why. Other editors (Notepad++, VS Code, etc.) work correctly. As a workaround, use any editor other than Notepad.

How it works

MixVFS uses WinFsp to present the workspace cache directory as a virtual filesystem. When you open, edit, save, rename, or delete a file through Explorer, WinFsp calls back into MixVFS which performs the operation on the real files in the cache. A debounced timer then calls pack to rewrite the .mix from the current cache state.

The workspace cache is stored under %LOCALAPPDATA%\MixVFS\workspace\ by default, keyed by a hash of the .mix path so each file gets its own cache folder.

License

MixVFS is released under the GNU General Public License v3.

Acknowledgements

  • WorldAlteringEditor by Rampastring — portions of the .mix format parsing and file ID hashing code were referenced or adapted from this project (GPL v3)
  • ccmix by OmniBlade — additional reference for .mix format details and cryptography (GPL v2+)

.mix format notes

  • Old format (Tiberian Dawn): [fileCount:2][dataSize:4][index] - no flags prefix
  • New format (RA1 and later): [flags:4][fileCount:2][dataSize:4][index]
  • Flags: 0x00010000 = SHA1 checksum appended, 0x00020000 = header encrypted with Blowfish (TS/RA2)
  • Encrypted archives use an RSA-encrypted Blowfish key stored in an 80-byte block after the flags; the index is decrypted before reading.
  • Encrypted repack is supported when the archive was unpacked by MixVFS (the workspace manifest preserves the encrypted key blob and MixVFS reuses it).
  • Creating a brand-new encrypted archive from a non-encrypted source is still not supported (no key blob to reuse).
  • Checksum trailers are still not written on pack, so checksum flags are cleared during repack.
  • File IDs are CRC32 hashes of the uppercase filename (TS/RA2) or a rotate-and-add hash (TD/RA1). The local mix database embedded in most archives maps IDs back to filenames.

About

Mount C&C .mix archives as virtual drives in Windows Explorer.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages