Foxlider / FASTER

Full rebuild of Flax's tool for installing and updating Arma 3 server with built in features for managing Steam Workshop mods.
GNU General Public License v3.0
121 stars 34 forks source link

Better Arma profile file parsing, Multi-mod import #81

Closed theace0296 closed 2 years ago

theace0296 commented 2 years ago

App Changes

Use the built-in XML parser to parse Arma profile files, this gives us much better access to the properties of the mods, making determining mod names and ids much easier. Part of this also means we can use a utility for comparing mod names, this allows mods with functionally-equivalent names to be interchangeable (Ex: "@CBA" == "CBA").

I also added the ability some basic logic for selecting a folder containing mods, this isn't perfect, but it means you can load multiple mods at once. The logic for this is really "dumb" for now, it just checks if the folder you selected contains at least one folder that starts with "@". It then assumes the folder you selected contains folders of mods, rather than being a mod folder itself.

Also added the ability to delete all mods, this isn't really necessary but was helpful when developing this 😅.

Dev Environment Change

Don't optimize Debug build, optimize Release build. This doesn't affect Debug really, but for Release it means you can run the app with the VS debugger and it won't crash attempting to load non-existent debug symbols (this is a bug in VS).

Motivation and Context

People (myself included) want the ability to load multiple mods at once. Personally, I also wanted the profile file parsing to be a bit smarter so I could use a single folder to contain my mods for both my dedicated server and my client, the smarter parsing and name compare allows for this.

How Has This Been Tested?

I've been using these changes for the last few months with no issues and have been able to iron-out things that were wrong over that time. I've also added a unit test for testing the profile file parsing and the compare name functions.

Types of changes

Checklist: