-
Notifications
You must be signed in to change notification settings - Fork 0
Installer
fuse_installer.py installs mod packages from zip files into the base folder's
Mods directory. It is designed for a bundled FUSE-Installer.exe, so users can
drop zip files beside the executable and run it from the base folder.
The published FUSE-Installer.exe carries the FUSE framework inside it, so it
works two ways:
- Double-click it (no arguments): it installs FUSE. This is the easiest way for a player to get FUSE running.
-
Drag one or more mod
.zipfiles onto it: it installs those mods. A drag-and-drop run installs exactly the mods you dropped and does not touch FUSE.
A no-argument run also installs any loose .zip files sitting beside the exe (in
addition to FUSE), so the "drop several zips in the folder and run once" workflow
still works. FUSE is skipped by default if it is already installed; pass
--replace to back up and reinstall it. Pass --no-fuse to process only the
loose zips without (re)installing FUSE.
The published FUSE-Installer.exe is distributed via GitHub Releases:
https://github.com/F-U-S-E-E/FuseDevelopmentGroup/releases. The dist/ folder is gitignored,
so building locally produces a private copy at dist\FUSE-Installer.exe.
The installer inspects zip structure and manifest JSON only. It does not import, execute, or depend on any package code.
- UMM packages with
Info.json. - FUSE data packages with
Info.jsonand FUSE data markers such asFuseDataFiles,FuseAssetPacks, or a FUSE requirement. - Supported legacy data packages with
Definition.jsonplus data JSON containing world, track, operations, or progression entries. - Multi-package zips laid out as
Mods/PackageA/...andMods/PackageB/....
To install FUSE:
- Put
FUSE-Installer.exein the base folder. - Double-click it.
- FUSE is written to
Mods\FUSE.
To install a mod:
- Drag its
.zipontoFUSE-Installer.exe(or drop several at once). - Each package is written to
Mods\<package id>.
Existing folders are skipped by default. Run with --replace to move an existing
folder into Mods\ModBackups\FUSEInstaller\<timestamp> before installing the new
copy.
Install every zip in the current folder:
.\FUSE-Installer.exeInstall explicit zips:
.\FUSE-Installer.exe .\MyPackage.zip .\OtherPackage.zipInspect without writing:
.\FUSE-Installer.exe --dry-runInstall from a different location:
.\FUSE-Installer.exe --game-dir "D:\Games\BaseFolder" --inbox "D:\Downloads\Mods"Archive processed zips after successful installs:
.\FUSE-Installer.exe --archive-zipsFrom the repo root:
powershell -ExecutionPolicy Bypass -File .\tools\build_installer_exe.ps1If PyInstaller is not installed for the active Python environment:
powershell -ExecutionPolicy Bypass -File .\tools\build_installer_exe.ps1 -InstallPyInstallerThe output is dist\FUSE-Installer.exe.
Pass -FusePayload with the core FUSE mod zip (the FUSE-v*.zip produced by the
release build) to bundle FUSE inside the exe. A manual run of that exe then
installs FUSE:
powershell -ExecutionPolicy Bypass -File .\tools\build_installer_exe.ps1 -FusePayload .\FUSE-v1.0.2.zipThe release workflow does this automatically, passing the zip it just built. If
you build without -FusePayload, the exe still installs mods from dragged zips,
but a no-argument run has no FUSE to install and reports that instead. After a
bundled build, the script runs a --dry-run self-check to confirm a manual run
would install FUSE.
Mirrored from docs/FUSE_INSTALLER.md — edit there, not here.