The project structure is admittedly a little confusing and could be better.
Here's an overview:
📁 .
├── 📁 Docs ⇨ Documentation
│
├── 📁 Additional files ⇨ Additional files that need to be copied to the bin folder.
├── 📁 Fo76ini
│ └── 📝 Fo76ini.sln ⇨ Main solution. Open this.
├── 📁 Fo76ini_Updater
│ └── 📝 Fo76ini_Updater.sln ⇨ Solution for the auto-updater.
├── 📁 ObjectListView ⇨ Extends the built-in ListView control. Used in the Mod Manager.
│
├── 📝 VERSION ⇨ Contains the current version.
├── 📝 What's new.md ⇨ What's new? - Changelogs, etc.
├── 🐍 pack_tool.py ⇨ Python script that is used to prepare and pack the release.
└── ...
📁 ./Fo76ini
├── 📁 Controls ⇨ Holds custom UserControls
├── 📁 Forms ⇨ Holds Forms and UserControls used in a specific Form
│ ├── 📁 FormMain ⇨ The main form
│ │ └── 📁 Views ⇨ All the views of the main form
│ ├── 📁 FormMods ⇨ The "Mod Manager" form
│ ├── 📁 FormWelcome ⇨ Form that opens when the tool is launched for the first time.
│ ├── 📁 FormExceptionDialog ⇨ Opened when an unhandled exception occures.
│ └── 📁 FormIniError ⇨ Opened when the *.ini files can't be parsed.
│
├── 📁 API
│ ├── 📁 NexusMods ⇨ Accessing the NexusMods API and storing data.
│ ├── 📁 GitHub ⇨ Accessing the GitHub API.
│ └── 📁 BethesdaNet ⇨ Accessing the Bethesda.net API: Primarily to retrieve the server status of Fallout 76.
│
├── 📁 Ini ⇨ Ini parsing and handling (load, change, save, etc.)
├── 📁 Interface ⇨ Translation, theming, and other interface related code
├── 📁 Mods ⇨ Loading, saving, and manipulating mods.
├── 📁 Profiles ⇨ Loading, saving, and editing profiles.
├── 📁 Properties ⇨ Project settings and resources.resx
├── 📁 Resources ⇨ Contains images, icons, fonts, text (html/rtf), etc.
├── 📁 Tweaks ⇨ *.ini tweaks (=game settings) sorted into subdirectories
├── 📁 Utilities ⇨ Any class that can be used everywhere and doesn't have it's own place.
├── 📁 languages ⇨ Translations that are downloaded by the tool through GitHub.
│
├── 📝 Configuration.cs ⇨ Easily accessible Props for the tool's configuration.
├── 📝 Initialization.cs ⇨ Init: Creating folders, reading configuration, etc.
├── 📝 Program.cs ⇨ Program entry point (static void Main).
├── 📝 Shared.cs ⇨ Containing constants, such as version, user agent, or URLs.
└── ...
The tool downloads or requests information from GitHub's API for various reasons.
Checking for updates, "What's new", and translations:
📁 .
├── 📝 VERSION ⇨ Downloaded on startup to check for updates on versions prior to v1.12.4.
├── 📝 What's new.rtf ⇨ Downloaded and displayed on versions prior to v1.11.
│
└── 📁 Fo76ini
└── 📁 languages ⇨ *.zip archives containing the translations.
├── 📝 list.iso.txt ⇨ List of available translations for download.
└── 🗃️ xx-XX.zip ⇨ Translations
Checking for updates:
GET
https://api.github.com/repos/FelisDiligens/Fallout76-QuickConfiguration/releases/latest
Compares the tag_name
with the installed version.
Updates:
GET
https://api.github.com/repos/FelisDiligens/Fallout76-QuickConfiguration/releases/latest
Any file that is a zip file. Downloaded and extracted by the auto-updater.
Checking for updates to translations (as of v1.11.4):
GET
https://api.github.com/repos/FelisDiligens/Fallout76-QuickConfiguration/commits?path=Fo76ini%2Flanguages&page=1&per_page=1
Checks if any commit to the path ./Fo76ini/languages
has happened since the last update to the translations.
Displays felisdiligens.github.io/Fo76ini/whatsnew.html and /whatsnewdark.html in a web browser control.
The older files (
What's new.html
andWhat's new - Dark.html
) are now symlinks that point to 'whatsnew.html' and 'whatsnewdark.html'