Mods / ModsUpdater For macOS

Tags: #Other #QoL #Utility
Author: Laerinok
Side: Both
Created: Oct 14th at 8:01 PM
Last modified: Oct 14th at 8:23 PM
Downloads: 56
Follow Unfollow 0

Latest release:
Links_to_download.zip


Vintage Story ModsUpdater for macOS

Keep your mods in sync, effortlessly.

 

Tired of manually checking for mod updates? ModsUpdater is a standalone tool that automates the entire process. It checks, downloads, and backs up your mods, so you can spend less time managing and more time playing.

 

Linux Version | Windows Version | Project Wiki

 

Here is the macOS version of my ModsUpdater. It's provided 'as is' because I don't own a Mac, so I can't test it or verify the configurations. The binary was created by GitHub.

The zip file is too large for modDB, so the file must be downloaded from GitHub.

If you test this version, any feedback is greatly appreciated so I know if it runs well or if I need to make changes. If you'd like to be a tester, that would be wonderful.

 

Important - Please Read Before Use

  • This is a standalone program, not a mod. Do not put it in your mods folder. Unzip it anywhere and run the executable.
  • Always back up your save game before updating mods. A new mod version can sometimes cause issues with an existing world.
  • Use the Mod Exclusion feature for terrain generation mods. Once a world is created, these mods should generally not be updated.
  • For those cautious about executables, a VirusTotal analysis link is included in the changelog for each new release.

 

Key Features

  • Automatic Update Check: Scans your mods and compares them to the latest versions on the ModDB.
  • Smart Downloading: Downloads new versions automatically or lets you choose manually after reviewing changelogs.
  • Automatic Mod Downgrade: If a mod is too new for your game version, the updater finds and installs the latest compatible version.
  • Incompatibility Warnings: Alerts you if a mod is incompatible with your game version.
  • Safe Backups: Automatically backs up mods before updating, with a configurable limit.
  • Modlist Generation: Generates a shareable list of your installed mods in PDF, JSON, and HTML formats.
  • Detailed Logging: Creates comprehensive log files for easy troubleshooting.
  • Exclusion List: Easily prevent specific mods from being updated via the config file.
  • Multi-Language & Self-Updating: The tool is available in 13 languages and checks for its own updates at launch.

 

How To Use

On the first run, the application will guide you through a quick setup by asking for your mods folder path and other basic preferences. This creates the config.ini file for you.

After that, simply run the program to check for updates. For advanced changes, like adding mod exclusions, you can edit the config.ini file directly at any time.

 

Configuration Details (`config.ini`)

The config.ini file contains the configuration parameters for the application. Its location depends on your OS:

  • Windows: In the same directory as the .exe file.
  • Linux & macOS: ~/.config/VS_ModsUpdater/

[ModsUpdater]

version = 2.4.0

version: Current version of the ModsUpdater application (for information only).

[Logging]

log_level = DEBUG

log_level: Sets the detail level for logs (DEBUG, INFO, WARNING, ERROR, CRITICAL). DEBUG will display the most details.

[Options]

exclude_prerelease_mods = false
auto_update = true
max_workers = 4
timeout = 10
incompatibility_behavior = 0

exclude_prerelease_mods: `true` to ignore pre-releases, `false` to include them.

auto_update: `true` for automatic downloads, `false` to confirm each download manually.

max_workers: Maximum number of parallel downloads (up to 10). Increasing this may speed up downloads but also consumes more resources.

timeout: Network request timeout in seconds. A typical range is 5-30 seconds. Setting it too low might cause errors on slower networks.

incompatibility_behavior: Action for incompatible mods: `0` (Ask), `1` (Abort), `2` (Ignore).

[Backup_Mods]

backup_folder = backup_mods
max_backups = 3
modlist_folder = modlist

backup_folder / modlist_folder: Name of the backup and report folders. You can use a full path to store them elsewhere.

max_backups: Max number of backups to keep. `0` disables the limit.

[ModsPath]

path = D:\\Game\\VintagestoryData\\Mods

path: Full path to your Vintage Story `Mods` directory. This is essential.

[Language]

language = en_US

language: Language code for the interface (e.g., `en_US`, `fr_FR`).

[Game_Version]

user_game_version = 1.20.5

user_game_version: Target game version for mod updates. Leave empty or set to `latest_version` to get the newest mod versions, but use with caution as they may be incompatible.

[Mod_Exclusion]

mods = extraoverlays.zip, morefirewood.zip

mods: Comma and space-separated list of mod filenames to ignore.

Command-Line Arguments (for Advanced Users)

Use arguments to override config.ini settings for a single run.

--dry-run: Checks for updates and creates a report without downloading or changing any files.

--force-update: Forces re-download of mods, even if the version is the same.

--install-modlist: Reads modlist.json and downloads all mods listed in it.

--modspath "<path>": Overrides the mods directory path from `config.ini`. The path must be in quotes if it contains spaces.

--log-level <level>: Temporarily sets the logging level (e.g., `INFO`, `DEBUG`).

--max-workers <number>: Temporarily sets the number of parallel downloads.

--timeout <seconds>: Temporarily sets the network timeout.

--no-json / --no-pdf / --no-html: Disables the generation of the specified report file.

--no-pause: Prevents the console from pausing at the end of execution.

Usage Examples:

VS_ModsUpdater.exe --modspath "D:\Vintage Story\mods" --no-pdf

This command runs the script with a specific mods directory and disables PDF generation.

VS_ModsUpdater.exe --log-level INFO --max-workers 6

This command runs the script with the log level set to INFO and uses a maximum of 6 threads.

Known Issues

None at the moment.

Supported Languages & License

Supported Languages:

  • Deutsch, English, Español, Français, Italiano, 日本語, 한국어 (From gitHub. Thanks purple8cloud), Polski (From gitHub. Thanks MaLiN2223), Português (Brasil & Portugal), Русский, Yкраїнська, 简体中文.

License:

This program is distributed under the terms of the GNU General Public License v3.

 


mod, mods, mod updater, mods updater, updater, update, modupdater, mod update, mods updater, mods update

Mod Version Downloads Released Changelog Download
2.4.0 56 Oct 14th at 8:23 PM Links_to_download.zip

Added

  • Build Automation: Implemented a GitHub Actions workflow to automatically build and create releases for Windows (.exe), Linux (AppImage), and macOS (.dmg).
  • Platform-Specific Icons: The build process now automatically selects the appropriate icon format (.ico for Windows, .png for Linux, .icns for macOS).
  • Support for Directory-Based Mods: The updater can now detect and update mods that are managed in individual folders (e.g., by Mod Organizer 2), as long as they contain a modinfo.json file.
  • feat(update): Implement mod downgrade capability (thanks to Surdjak: https://github.com/Laerinok/VS_ModsUpdater_v2/pull/39). If an installed mod is too new for the selected game version, the updater will now offer to downgrade it to the latest compatible version.
  • feat(check): Add proactive incompatibility check. The application now warns the user if an installed mod is incompatible with the game version, even when no alternative version is available for download.
  • feat(config): Add 'incompatibility_behavior' option. Users can now configure how the application reacts to incompatible mods: ask to continue (0), abort automatically (1), or ignore (2).
  • feat (UX): Added display of the specific reason for mod exclusion in the final summary (e.g., 'Excluded by user in config.ini' or 'API data unavailable').
  • feat(UX): The summary displayed during the initial configuration now includes the user's choice for incompatibility behavior, improving clarity.
  • feat(UX): The dry-run report now includes the game version used for the simulation, providing better context.
  • Added: --dry-run command-line argument.
  • feat (i18n): Added language support for Polish (pl_PL) (thanks to MaLiN2223: https://github.com/Laerinok/VS_ModsUpdater_v2/pull/36).

 

Fixed

  • fix(linux): Corrected the backup directory path on Linux to use the user's data directory (~/.local/share/VS_ModsUpdater/backup_mods/) instead of the application's root.
  • Fixed a critical issue where mods installed as directories were detected but not actually updated.
  • Fixed a bug where mod icons were not displayed correctly (or at all) in the HTML and PDF reports.
  • Fixed a bug where local-only mods would have a broken link in the generated reports.
  • Fixed a bug where setting max_backups = 0 in the config file would incorrectly delete all backups instead of preserving them.
  • Fixed a crash that could occur during the update process.
  • Fixed a bug where some user prompts were case-sensitive.
  • fix(core): Overhauled update detection logic. The application now retrieves the game version of installed mods directly from the ModDB API, ensuring reliable update and downgrade decisions even when the local modinfo.json is missing compatibility data.
  • fix(core): Fixed a critical ValueError crash that occurred when processing local mods (mods not present on the ModDB) due to an incorrect number of return values in the API data fetching function.
  • fix(cli): Restored the --dry-run functionality, which was broken during a recent refactoring. The application now correctly displays the simulation report and exits as expected.
  • fix(UX): Restored the display of the exclusion reason in the final summary, which had disappeared during a refactoring.
  • fix(UX): Changelogs displayed in the console are now converted from HTML to Markdown for improved readability.
  • fix(config): Resolved a critical encoding issue (UnicodeDecodeError) during configuration migration that could corrupt paths with special characters (e.g., accents). The migration process now correctly reads the old configuration file using UTF-8.
  • fixed (Critical): Resolved a critical issue causing download failures for certain mods due to **double URL encoding** in download URLs retrieved from the Vintage Story mod API.
  • fixed (Critical): Fixed a fatal crash (AttributeError: 'NoneType') that occurred when the HTTP client failed to complete a download request after all retry attempts. Download failures are now logged and handled gracefully.
  • fixed: The application now correctly displays the changelogs for all intermediate versions when updating a mod, instead of only showing the changelog for the latest version. This provides a complete picture of the changes included in an update.
  • fixed (i18n): Resolved a critical issue where the 'Yes/No' prompts failed to accept universal ASCII input (like 'n' for No) when the locale used non-ASCII characters (e.g., Russian 'н'/'д').

 

 

Changed

  • Improvement: The application now correctly handles "yes/no" and "y/n" responses in English, in addition to localized answers, for all confirmation prompts. This improves consistency and user experience, especially during initial setup and when displaying the changelog.
  • Improvement: The yes/no confirmation prompts now explicitly display all valid inputs (e.g., (o/n, y/n)), making it clear that both localized and English responses are accepted.
  • Internationalization: Translated comments in setup.py to English for better maintainability.
  • Build System: Updated setup.py to support platform-specific icon selection.
  • docs: Clarified file and directory locations for Windows and Linux in the README and Wiki.
  • refactor(deps): Removed multiple unused Python dependencies (e.g., beautifulsoup4, Pygments, striprtf) from requirements.txt, reducing the final application size by ~15MB.
  • refactor(config): Dynamically generate the language selection list to improve maintainability. This removes the need for manual re-numbering when adding/removing languages and ensures the default language selection is always correct.
  • refactor (Logic): Reworked the mod update check logic (mods_update_checker.py) to sequentially pre-filter user-excluded mods. This centralizes exclusion logic and **prevents unnecessary network calls** during concurrent processing.
  • refactor (Core): Centralized the entire 'Yes/No' user input logic into the robust utils.prompt_yes_no function and removed the superfluous and rigid validation loop from main.py, making the application flow cleaner and more maintainable.
  • refactor (i18n): Reworked title string logic to use a dynamic variable ({ModsUpdater_author}) instead of hardcoding the author's name, preparing the codebase for easier redistribution or branding changes.
  • refactor (Data): Enriched the excluded_mods data in global_cache to store the specific Reason for exclusion, improving debugging and logging.
  • i18n: Added translation keys across all 12 supported languages to ensure full support for the new exclusion messages.

 

 

===============================================

SHA-256: 1165d794c51119495021dcae85fe1665812f65515b835ac2e2d366cbe3c430df

VirusTotal Scan


9 Comments (oldest first | newest first)

💬 eerino, Oct 26th at 4:23 AM

♡ 

💬 Laerinok , Oct 16th at 9:18 AM

Important Info:

I realized that I had forgotten to define the default path for the mods folder as well as the link for checking for script updates. Before publishing an official v2.4.1 version, I would like to be sure that it is functional. Here is the new release to test, please give me your feedback. Thanks and sorry ;)


VS_ModsUpdater.v2.4.1_macOS

 

eerino

💬 Laerinok , Oct 16th at 6:59 AM

eerino

I thought the file name 'Links_to_doanload' was explicit enough and that the orange paragraph was sufficient. But you are right, I can make it more prominent.

Your image is not accessible, what is the problem?

💬 eerino, Oct 16th at 3:05 AM (modified Oct 16th at 3:12 AM)

I got an error. vs_modsupdater error 

 

edit: I didnt see your comment at the bottem!! So I didn't know it needed to be downloaded from github! That comment should really be the first thing in the description.

edit: or maybe I did. I'm trying it again.

Edit: Same error. 

💬 Laerinok , Oct 15th at 11:18 AM

eerino

That's fantastic to hear! Thank you very much for the kind words, and for confirming that the macOS release is appreciated.

I'm genuinely happy to hear that it seems to be working for you. As a Windows user myself, I was highly aware of how frustrating it can be for other communities to miss out on such tools, so my main goal has always been to try and support as many platforms as possible. Linux was easier because I had some familiarity, but I don't own a Mac, so I was completely in the dark about how the program would actually behave!

Getting the macOS version ready took longer than expected because I first had to deepen my knowledge of Python itself, and then figure out the process for creating the macOS executable. It took a significant amount of effort to successfully implement the GitHub Actions workflow for the final build.

Your feedback, even just by confirming the need, is truly valuable. Happy mod-updating, and let me know if you run into any issues on macOS

💬 eerino, Oct 15th at 10:39 AM (modified Oct 15th at 10:40 AM)

Laerinok

Thank you!! I've been looking forward to this but didn't know if it would happen. I really appreciate the work you put into it. It's valuable to the community, the small minority of us macos users here. I used windows but this is what I've got. Thanks so much for making it happen. 

 

💬 Laerinok , Oct 14th at 8:45 PM (modified Oct 15th at 8:03 AM)

Radar5225

I have no idea how the binaries are created; GitHub takes care of it. But VirusScan shows no virus, so I'm relying on its analysis. You have the link of the scan in the changelog if you want.

💬 Radar5225, Oct 14th at 8:30 PM

Tried downloading this and Opera caught it saying that it detected a virus in it.

 

💬 Laerinok , Oct 14th at 8:24 PM

Here is the macOS version of my ModsUpdater. It's provided 'as is' because I don't own a Mac, so I can't test it or verify the configurations. The binary was created by GitHub.

The zip file is too large for modDB, so the file must be downloaded from GitHub.

If you test this version, any feedback is greatly appreciated so I know if it runs well or if I need to make changes. If you'd like to be a tester, that would be wonderful.

 (edit comment delete)
Основной веб-сайт | Почтовый сервер | FTP сервер | Административная панель | API интерфейс | Content Delivery Network | Статические файлы | Ресурсы сайта | Изображения | Файловое хранилище | Блог | Интернет-магазин | Техническая поддержка | Справочная система | Документация | Форум | Новости | Загрузки | Демонстрация | Тестовая среда | Приложение | Медиа контент | Разработка | Промежуточная среда | Бета версия | Безопасная зона | Вход в систему | Панель управления | Портал | Система управления контентом