This project aims to provide an easy and unified way of installing and updating community mods for MS Flight Simulator from various sources.
- Graphical user interface and command line interface applications
- Lists all installed mods/packages
- Installing from GitHub releases or branches possible
- Checks and downloads dependencies for packages during installation (if a package source for the dependency is known, installation will abort if dependencies cannot be satisfied)
- Uninstalling packages possible (checking and uninstalling for depending package as well)
- Automatic batch updating of packages with newer releases
- Supporting popular mod database websites as package sources
- dependency resolution only considers packages to be installed and does not check whether updating dependencies might break installed packages
The graphical user interface executable is built from the MSFSModManager.GUI
project as fsmodm.gui
. Refer to the quick start guide for instructions:
The command line interface executable is built from the MSFSModManager.CLI
project as fsmodm
. It currently supports the following commands
fsmodm list [--includeOfficial] [--filterType <PackageType>]
Lists all currently installed community packages. Optional arguments are:
includeOfficial
: List also official asobo packages and their version numbers.filterType
: Show only packages of the given type.
fsmodm add-source [<PackageId>] <SourceURL> [<SourceOptions>]
fsmodm remove-source <PackageId>
Adds/removes a source from which packages can be installed.
PackageId
is an identifier for the package (and will be used as the folder name for the package in the Community mod folder of MSFS). It is an optional argument as the program will usually detect it automatically from the package source. However the user can choose to specify it explicitly if they so choose, e.g., to overwrite the automatically detected id or in case automatic detection fails.
SourceURL
specifies the URL from which the package (and package metadata) are obtained and SourceOptions
are additional arguments depending on the source type.
Current source types are:
Obtains packages from the 'Releases' page of a Github repository. In this case, SourceURL
is https://github.com/<Author>/<Repository>
.
As an optional SourceOption
the user can supply a regular expression that is used to select the correct archive file to download from the release.
Example: fsmodm add-source B78XH https://github.com/Heavy-Division/B78XH B78XH-v.*\\d-wo.zip
registers a source for releases of the B78XH mod but in the variant without optional content.
Obtains packages from a development branch of a Github repository. In this case, SourceUrl
is https://github.com/<Author>/<Repository>@<BranchName>
.
This source type does not have any SourceOption
s.
Example: fsmodm add-source B78XH https://github.com/Heavy-Division/B78XH@main
registers a source for the latest development state in the main
branch of the B78XH mod.
Note: Installing from github branches only works if the branch contains a correct package manifest file (manifest.json
) and will install only the contents of the folder containing the manifest file (including all subdirectories).
Uses a local ZIP file of a package as a package installation source. In this case, SourceURL
is a local file path.
Example: fsmodm add-source B78XH Downloads\B78XH-v0.1.12.zip
.
Note: This will automatically locate the relative path of the manifest.json
file within the archive and install all files under that path during package installation, i.e., it will ignore all files in the archive that are not under the same directory as the manifest file and remove path prefixes.
fsmodm install <PackageId>
fsmodm uninstall <PackageId>
Installs/removes a package (mod). This requires an installation source to have been added for the package identified by PackageId
.
Installation will always select to last compatible available version of the package. If the package is already installed, it will be replaced if a newer version is found.
fsmodm install [<PackageId>] <SourceURL> [<SourceOptions>]
Installs a package (mod) from the given installation source without persisting information about the source.
fsmodm update
Updates all packages for which installation sources have been added to the latest compatible available version.
fsmodm show-available <PackageId>
Shows all versions that are available for the package PackageId
. This requires an installation source to have been added for the package.
fsmodm export [--onlyWithSource] [--ignoreVersion]
Prints information on all installed community packages in JSON format, including the package id and version as well as details on the package source, if one was added for a package. Optional arguments are:
onlyWithSource
: Print only information for packages for which a package source was added.ignoreVersion
: Print only package names and source information but skip version information.