
Mods / ModsUpdater For Linux
Author: Laerinok
Side: Both
Created: Sep 10th 2023 at 10:49 AM
Last modified: Aug 26th at 10:46 AM
Downloads: 3196
Follow Unfollow 78
Latest release:
VS_ModsUpdater.v2.3.0_Linux-x86_64.AppImage.zip
Vintage Story ModsUpdater for Linux
Your go-to buddy for always-up-to-date Vintage Story mods
INFO:
Since v2.2.2, the program comes with an appimage. I hope this time this is functional.
You can also find the "simple" zip-file on github
Tired of Messing with Vintage Story Mods? Let ModsUpdater Take the Wheel!
Keeping your favorite Vintage Story mods up-to-date can feel like a chore, right? Manually checking for new versions, downloading them one by one... it eats into your precious playtime!
ModsUpdater for Vintage Story is here to change that. Think of it as your personal mod management assistant, designed to make your Vintage Story modding experience smooth and hassle-free.
Stop wrestling with your mods – download Vintage Story ModsUpdater today and get back to playing!
IMPORTANT NOTE (updated 2025-08-25):
None
Important Warning/Point to Know - Read Before Use
- This program is not a mod! It's a separate program that allows you to update your mods. You do not need to put it in your mods folder, but in the location of your choice. This program needs to be unzipped, and you have to run the VS_ModsUpdater.exe file
- Whether you update your mods with ModsUpdater, another program, or manually yourself, it's always safer to make a backup of your save beforehand! A new version of a mod can break your save.
- There is a section to exclude certain mods from the update process, which is essential for terrain generation mods that, once installed, should not be updated.
- Finally, there is a WIKI, don't hesitate to read it. Although the program is autonomous and works without any intervention on your part, personalizing its configuration can make your life easier and avoid problems.
- For those who are cautious about running new executables, you can find a recent analysis of the zip-file by VirusTotal (Since v2.2.2 link is in the changelog)
What can ModsUpdater do for you?
- Stay Updated Effortlessly: Forget constantly checking ModDB. ModsUpdater compares the mods you have installed with the latest versions available, letting you know if an update is out there.
- Choose Your Update Style: Whether you prefer to sit back and let the magic happen with automatic downloads, or you like to be in control and see what's new with manual updates (including changelogs!), ModsUpdater has you covered.
- Safety First with Backups: Before any update happens, ModsUpdater can create a backup of your current mods. That way, if anything goes sideways, you can easily revert to your previous setup. You can even tell it how many backups to keep!
- Say Goodbye to Unwanted Updates: Got a mod you want to keep as it is? No problem! You can tell ModsUpdater to ignore specific mods during update checks.
- Keep Track of Your Collection: Want a neat list of all the mods you're running? ModsUpdater can generate a clear and shareable list in both PDF and JSON formats. Perfect for sharing your setup with friends!
- Plays Well with Others (CLI): For the more tech-savvy among you, ModsUpdater can even be run from the command line with special arguments to customize how it works.
- Speaks Your Language: The interface is available in multiple languages, making it accessible to a wider range of players.
- Keeps Itself Up-to-Date: ModsUpdater automatically checks for its own updates when you launch it, so you'll always have the latest and greatest version.
How it Works Simply:
When you run VS_ModsUpdater, it first looks at its settings (which you can customize in a config.ini file). Then, it checks for new versions of your mods.
- Automatic Mode: If you've set it to auto-update, it will download and update everything for you. You'll even get to see the changelogs afterwards!
- Manual Mode: If you prefer to be in control, it will show you what updates are available, let you read the changelogs, and ask you to confirm before downloading anything.
Before updating any mods, it makes a backup, just in case. And when it's all done (or even if there are no updates), it can create a handy list of your mods in PDF and JSON formats.
Take Control with Command Line Options (for advanced users):
You can also run ModsUpdater from your terminal or command prompt with special commands to change how it works for that specific run. For example, you can tell it to use a different mods folder, skip creating the PDF list, or change the logging level.
Ready to spend less time managing mods and more time enjoying Vintage Story? Give ModsUpdater a try!
Want to Customize?
ModsUpdater uses a simple configuration file (config.ini) that you can easily edit to fine-tune how it works. You'll find options for backups, download settings, language, and even the Vintage Story game version you're playing.
config.ini
) & ArgumentsThe config.ini
file contains the configuration parameters for the application. It is located in the same directory as the main script (Windows) or ~/.config/VS_ModsUpdater
(Linux). Here are the main sections and their options:
[ModsUpdater]
version: 2.0.1
version: Current version of the ModsUpdater application (information).
[Logging]
log_level: INFO
log_level: Level of detail for logs recorded by the application (e.g., DEBUG, INFO, WARNING, ERROR). DEBUG will display the most details.
[Options]
exclude_prerelease_mods: false
auto_update: true
max_workers: 4
timeout 10
exclude_prerelease_mods: true to exclude pre-release mod versions during update checks, false to include them.
auto_update: true to enable automatic downloading of updates (after checking), false to use manual mode where you confirm each download.
max_workers: Maximum number of threads to use for downloading mods in parallel. Increasing this value may speed up downloads but may also consume more system resources. The maximum value allowed for this setting is 10.
timeout: Timeout in seconds for HTTP requests during update checks and mod downloads. A typical useful range is between 5 and 30 seconds. Setting it too low might cause connection errors on slower networks, while setting it too high might make the application wait unnecessarily long if a server is unresponsive.
[Backup_Mods]
backup_folder: backup_mods
max_backups: 3
modlist_folder: Modlist
backup_folder: Name of the directory (created in the application directory by default) where mod backups will be stored. You can also specify a full path if you wish to store backups elsewhere.
max_backups: Maximum number of mod backups to keep. Older backups will be deleted when this limit is reached.
modlist_folder: Name of the directory (created in the application directory by default) where the mod lists in PDF and JSON format will be saved. You can also specify a full path if you wish to save the lists elsewhere.
[ModsPath]
path: ~/.config/VintagestoryData/Mods
path: Full path to the directory where your Vintage Story mods are installed on your computer. This is crucial for the application to find your mods.
[Language]
language: en_US
language: Language code to use for the application interface (e.g., en_US for English, fr_FR for French). This value must correspond to the name of a file (without the .json
extension) present in the lang
subdirectory of the application. Make sure the corresponding language file exists.
[Game_Version]
user_game_version: 1.20.5
user_game_version: Maximum game version target for mod updates.
- If you specify a version (for example, 1.20.5), the application will not download mod updates that are only compatible with Vintage Story versions higher than the one specified.
- If you haven't set a specific version when you created the config.ini file, it's set to 'latest_version'. In that case, the game will update the mods to the latest available game version. For ModsUpdater versions prior to v2.2.2, "None" and empty values should be changed to 'latest_version'. However, they remain functional.
[Mod_Exclusion]
mods: mod_a.zip, my_old_mod.cs
mods: List of filenames (without the path) of mods to ignore during update checks and downloads. Filenames should be separated by commas and spaces (e.g., mod_a.zip, my_old_mod.cs).
Command Line Arguments Usage
The script can be executed with arguments to customize its behavior:
--no-pause
: Disables the pause at the end of the script execution. Useful for non-interactive execution or in automated scripts.
--modspath "<path>"
: Allows you to specify the path to the Vintage Story mods directory directly during execution. The path must be enclosed in quotation marks if it contains spaces. This argument replaces the path defined in the config.ini
file.
--no-json
: Disables the automatic generation of the mod list in JSON format at the end of execution.
--no-pdf
: Disables the automatic generation of the mod list in PDF format at the end of execution.
--no-html
: Disables the automatic generation of the mod list in HTML format at the end of execution.
--log-level <level>
: Sets the level of detail for logs recorded by the application. Possible options are: DEBUG
, INFO
, WARNING
, ERROR
, CRITICAL
(in uppercase). This argument replaces the log level defined in the [Logging]
section of config.ini
.
--max-workers <number>
: Allows you to specify the maximum number of threads to use for mod processing. This argument replaces the max_workers
value defined in the [Options]
section of config.ini
.
--timeout <seconds>
: Sets the timeout in seconds for HTTP requests during update checks and mod downloads. This argument replaces the timeout
value defined in the [Options]
section of config.ini
.
--install-modlist
: Download mods from modlist.json to the mods folder.
--force-update
: Force a re-download and re-install of all mods, regardless of version.
Usage Examples:
./VS_ModsUpdater.vX.Y.Z.appimage --modspath "D:\Vintage Story\mods" --no-pdf
This command will execute the script using the specified mods directory and will disable the generation of the PDF mod list file. The mods path specified here will replace the one configured in config.ini
.
./VS_ModsUpdater.vX.Y.Z.appimage --log-level INFO --max-workers 6 --timeout 15
This command will execute the script by setting the log level to INFO
, using a maximum of 6 threads for mod processing, and a timeout of 15 seconds for HTTP requests. These parameters will replace those defined in the config.ini
file for this execution.
This tool is open-source under the GNU General Public License version 3, meaning it's free for you to use, share, and even modify!
- Deutsch
- English
- Español
- Français
- Italiano
- 日本語
- 한국어 (From gitHub. Thanks purple8cloud)
- Português (Brasil)
- Português (Portugal)
- Русский
- Yкраїнська
- 简体中文
mod, mods, mod updater, mods updater, updater, update, modupdater,modsupdater, mod update, mods updater, linux mod updater, linux mods updater,
Mod Version | Downloads | Released | Changelog | Download |
---|---|---|---|---|
2.3.0 | 194 | Aug 26th at 10:46 AM | VS_ModsUpdater.v2.3.0_Linux-x86_64.AppImage.zip | |
======================================================= SHA-256: 4b8a0452bc956d37e0a0c8aa4e3565ffe9fb50bd57dc896f3fd0abb5e2455a2c | ||||
2.2.2 | 35 | Aug 25th at 3:20 PM | VS_ModsUpdater.v2.2.2_Linux-x86_64.AppImage.zip | |
====================================================================================== SHA-256: dbcb1e9182795668f08837735992610eeb5f74079c8da1ee56f6d409257ee0b9 | ||||
2.1.2 | 340 | Apr 26th at 10:07 AM | VS_ModsUpdater.v2.1.2_Linux.zip | |
| ||||
2.1.1 | 143 | Apr 9th at 5:36 PM | VS_ModsUpdater.v2.1.1_Linux.zip | |
| ||||
2.0.2 | 73 | Apr 6th at 6:46 PM | VS_ModsUpdater.v.2.0.2_Linux.zip | |
1.4.2 | 244 | Feb 17th at 12:26 PM | VS_ModsUpdater_Linux.v1.4.2.zip | |
included v1.4.1
| ||||
1.4.0 | 576 | Apr 2nd 2024 at 3:31 PM | VS_ModsUpdater_Linux.v.1.4.0.zip | |
=================================================
| ||||
1.3.6 | 232 | Mar 26th 2024 at 3:32 PM | VS_ModsUpdater_Linux.v.1.3.6.zip | |
| ||||
1.3.5 | 219 | Mar 20th 2024 at 7:24 PM | VS_ModsUpdater_Linux.v.1.3.5.zip | |
=============================================================================
| ||||
1.2.0 | 358 | Oct 20th 2023 at 10:53 AM | VS_ModsUpdater_Linux.v.1.2.0.zip | |
This update is mainly for server use. You can now use some arguments to launch VS_ModsUpdater. cf Readme for more info.
| ||||
1.1.4 | 260 | Oct 3rd 2023 at 8:01 PM | VS_ModsUpdater_Linux.v.1.1.4.zip | |
INFO :
| ||||
1.1.3 | 252 | Sep 25th 2023 at 10:15 AM | VS_ModsUpdater_Linux.v.1.1.3.zip | |
| ||||
1.1.2 | 262 | Sep 10th 2023 at 10:51 AM | VS_ModsUpdater_Linux.v.1.1.2.zip | |
- Linux version |
Mobile
That's an idea
Could you please implement additional param (for ex: --dry-run) to just print list of mods which have updates?
Mobile
Thank you. That is indeed something I've been thinking about recently. My initial goal was to provide the list systematically, because people don't habitually read all the documentation. This allows them to discover the functionality. However, I admit that it's not necessarily the most logical approach. I'll probably change it later, but it's not a priority.
Great work, thank you, but for me is better to use another approach for ags: from `--no-*` to `--gen-*`
So, minimal work from scratch run
toyota
That's what I thought. I don't know if I made some mistakes when I created the AppImage or if it's because it's a console script (not a GUI), but I can't directly run the AppImage. You have to use the terminal first. But it's not a big problem.
Laerinok
I first tried to open as appimage, then open in console. What I did to fix it was open console then drag the appimage into the console for it to run
toyota
I'm glad you found the solution.
And just out of curiosity, and because it might be useful for others, what was preventing it from working, and what did you do to fix it?
(Maybe you wanted to launch the AppImage with a double-click, but it only worked from the terminal ?)
For some reason the appimage just doesn't open
edit: figured it out 5 seconds later becuase im an idiot
Yelb
Or maybe, it's not the problem... You think Mods have been updated, but they aren't. Check the version number.
Actually, I think you were just tricked by the ModDB changes. When you change something on a mod's page, the mod is "updated" and appears at the top of the list, even if the mod itself hasn't changed.
Fauna of the Stone Age: Machairodontinae:
Created: Jan 25th 2024 at 11:13 PM
Last modified: 3 hours ago but the last release is 1.0.25 from Apr 30th at 12:09 AM
Yelb
My first thought is that you didn't update the user_game_version: in the config.ini file, which prevents mods from updating for later versions.
[Game_Version]
user_game_version: 1.20.12
If you set the version in the config.ini you should update it each time you udapte your game.
If you don't want to have ti change it, then set it with latest_version
[Game_Version]
user_game_version: latest_version
In the older version of ModsUpdater, it was empty or "Non". By defaut it was set to to have always the latest version of the game, but the latest change in ModDB broke this feature. And the temporary solution was to set this value manually.
Why it doesn't see all updates at times ? Like now, all the Stone Ages Fauna have an update, but the AppImage says it's up to date.
I'm updating them manually.
Chumber
Hi!
Thanks so much for the detailed and positive feedback! It's great to hear the program is working so well on your Ubuntu setup.
I'm especially happy you noticed the speed improvements. That was a big goal, and it's awesome to know it's noticeable. It's also really cool that the HTML export is useful for your players. I actually added that feature after a request from another user for their server, so I'm happy it's proving useful!
Your comment is a huge motivation to keep going. Thanks again for the support!
thibeeus
That's great news!
I'm so glad you managed to find the solution. That's some serious debugging work!
And a huge thanks for taking the time to post the cause and the solution. Your post could save someone else a ton of time down the road.
Thanks and congrats again on your persistence!
usagirei
Hello,
That's something I can do. I put it on my todo list.
EDIT: Fixed my issue!
I tested on another, non-containerized, Ubuntu VM and didn't have any issues. I eventually stumbled across the "locale" settings for Ubuntu. The working VM had the following:
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
My container had all of the settings set to 'C'. I updated locale to en_US.UTF.8 and rebooted... the app now works!
Posting this here in the off chance it ever happens to someone else.
Thanks again for trying to look at this with me, Laerinok!
Would it be possible to output the supported game versions for the installed mods on the html/pdf/text outputs?
I'd like to have an overview of what I still need to wait for updates / can disable temporarily while waiting for it.
Laerinok
I've tried 3 methods:
(Here's an example from the zip with the same results)
lgsm@vintage:~/vsupdater/VS_ModsUpdater.v2.3.0_Linux$ ls -l
total 5828
-rwxrwxr-x 1 lgsm lgsm 372 Aug 25 22:11 AppRun
-rw-rw-r-- 1 lgsm lgsm 32428 Dec 4 2024 LICENSE.md
-rw-rw-r-- 1 lgsm lgsm 8598 Aug 25 08:33 README.md
-rwxrwxr-x 1 lgsm lgsm 5780336 Aug 25 08:56 VS_ModsUpdater
-rw-rw-r-- 1 lgsm lgsm 189 Aug 26 12:09 VS_ModsUpdater.desktop
-rw-rw-rw- 1 lgsm lgsm 23611 Apr 10 11:38 VS_ModsUpdater.png
drwxrwxr-x 2 lgsm lgsm 4096 Aug 26 12:07 assets
-rw-rw-r-- 1 lgsm lgsm 5039 Aug 26 12:05 changelog.txt
drwxrwxr-x 2 lgsm lgsm 4096 Aug 26 12:07 fonts
-rw-rw-r-- 1 lgsm lgsm 3253 Aug 25 08:56 frozen_application_license.txt
drwxrwxr-x 2 lgsm lgsm 4096 Aug 26 12:07 lang
drwxrwxr-x 37 lgsm lgsm 4096 Aug 26 12:07 lib
-rw-rw-r-- 1 lgsm lgsm 990 Aug 25 08:33 requirements.txt
drwxrwxr-x 5 lgsm lgsm 4096 Aug 26 12:10 usr
-rw-rw-r-- 1 lgsm lgsm 68690 Apr 2 12:12 vintagestory.ico
lgsm@vintage:~/vsupdater/VS_ModsUpdater.v2.3.0_Linux$ ./VS_ModsUpdater
ModsUpdater for Vintage Story / v2.3.0 (by Laerinok)
- No new version available -
Installed game version: 1.21
Traceback (most recent call last):
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/fetch_mod_info.py", line 354, in scan_and_fetch_mod_info
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/rich/progress.py", line 1639, in add_task
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/rich/progress.py", line 1549, in refresh
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/rich/live.py", line 266, in refresh
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/rich/console.py", line 870, in __exit__
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/rich/console.py", line 826, in _exit_buffer
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/rich/console.py", line 2038, in _check_buffer
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/rich/console.py", line 2107, in _write_buffer
UnicodeEncodeError: 'ascii' codec can't encode character '\u2022' in position 124: ordinal not in range(128)
*** You may need to add PYTHONIOENCODING=utf-8 to your environment ***
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/cx_Freeze/initscripts/__startup__.py", line 133, in run
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/cx_Freeze/initscripts/console.py", line 25, in run
File "main.py", line 231, in <module>
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/fetch_mod_info.py", line 345, in scan_and_fetch_mod_info
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/rich/progress.py", line 1189, in __exit__
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/rich/progress.py", line 1175, in stop
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/rich/live.py", line 162, in stop
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/rich/console.py", line 870, in __exit__
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/rich/console.py", line 826, in _exit_buffer
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/rich/console.py", line 2038, in _check_buffer
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/rich/console.py", line 2107, in _write_buffer
UnicodeEncodeError: 'ascii' codec can't encode character '\u2022' in position 124: ordinal not in range(128)
*** You may need to add PYTHONIOENCODING=utf-8 to your environment ***
lgsm@vintage:~/vsupdater/VS_ModsUpdater.v2.3.0_Linux$
I am running Ubuntu 24.04. I see the latest comment said that are having no issues... I'm running this inside of a LXC container which did require me to turn on something at the container host level for the Appimage (FUSE). I'm going to start focusing on the LXC nature of this Ubuntu instance and see if that could have anything to do with it. But if the zip version doesn't rely on the appimage process at all... I feel like that will be a dead end.
Again... thank you for looking at this with me when I appear to be an edge case.
Great to see how far this little program has come. Just gave it a whirl after being away from the game for a while, getting a new 1.21 server spun up in a Pelican panel and this works absolutely flawlessly through CLI (Ubuntu 24.04) using the AppImage. Really appreciate the inclusion of other modlist formats, too, as it makes it super easy to toss the HTML into an apache server so my players can just look for themselves.
And holy cow is it way faster than it was previously. Well done.
Thanks for all your work on this.
thibeeus
Just to be sure I've understood correctly, can you confirm that you tested this process:
download and extract VS_ModsUpdater.v2.3.0_Linux.zip (this is the "standard" version, not the AppImage)
then run VS_ModsUpdater
Because it seems the issue is only with the AppImage packaging.
thibeeus
I didn't realize you were talking about v2.1.2 (even though you wrote it out textually...). I didn't look at the file structure. It doesn't particularly "interest" me in the sense that I have no control over it. It's handled by the library I use to create the executables. V2.1.2 is old. In fact, since v2.2.0, I've noticed that the creation time for the executables has gone from about 10 minutes to just 2-3 minutes. Maybe there have been some updates and optimizations, and the result is that the final file structure is different.
Or... when you mention comparing structures, are you comparing the zip file from v2.1.2 with the files you extracted from the v2.3.0 AppImage? If that's the case, it's normal for them to be completely different. The AppImage creation library has its own file organization. It's completely different from the original structure of my program.
The contents of VS_ModsUpdater.v2.3.0_Linux.zip and the extraction of VS_ModsUpdater.v2.3.0_Linux-x86_64.AppImage are not the same at all. So if you tried the content extracted from the AppImage, I suggest you try from the VS_ModsUpdater.v2.3.0_Linux.zip file. It's more likely to work because the encoding should use your environment's, whereas the AppImage uses its own. That's actually the next point to look at; I'll try to modify it so it's always available.
What distribution are you using? That can have an influence.
Ok, here's what I've tried (with the current AppImage):
PYTHONIOENCODING=utf-8 ./VS_ModsUpdater.v2.3.0_Linux-x86_64.AppImage
env PYTHONIOENCODING=utf-8 ./VS_ModsUpdater.v2.3.0_Linux-x86_64.AppImage
And modifying /etc/environment to include PYTHONIOENCODING=utf-8, then rebooted.
Unfortunately, no change.
I'm with you Laerinok. It's the blind troubleshooting with the blind... but I greatly appreciate you taking the time! I'll keep digging into this and let you know. As for the zip file from Github, yes, no difference. That's why I noted the file structure being so different. Version 2.1.2 was a zip from github but you can see the file structure is VERY different from the Appimage / current zip.
thibeeus
This is an unfamiliar field for me, I'm just feeling my way. Based on what I've seen/read, try running the application with
PYTHONIOENCODING=utf-8
as a command prefix, and not by doingexport PYTHONIOENCODING=utf-8
beforehand```PYTHONIOENCODING=utf-8 ./VS_ModsUpdater.v2.3.0_Linux-x86_64.AppImage```
Did you try using the zip file from GitHub? Are you having the same issue?
I'm not sure if this is due to my code or the way the AppImage was made.
I still have one or two leads to explore, but I won't be able to check right now.
Also wanted to add, the file structure is very different between the zip file versions.
2.3.0 which is just the basically extracted appimage:
-rw-rw-r-- 1 lgsm lgsm 32428 Dec 4 2024 LICENSE.md
-rw-rw-r-- 1 lgsm lgsm 8598 Aug 25 08:33 README.md
-rwxrwxr-x 1 lgsm lgsm 5780336 Aug 25 08:56 VS_ModsUpdater
-rw-rw-r-- 1 lgsm lgsm 189 Aug 26 2025 VS_ModsUpdater.desktop
-rw-rw-rw- 1 lgsm lgsm 23611 Apr 10 11:38 VS_ModsUpdater.png
drwxrwxr-x 2 lgsm lgsm 4096 Aug 26 2025 assets
-rw-rw-r-- 1 lgsm lgsm 5039 Aug 26 2025 changelog.txt
drwxrwxr-x 2 lgsm lgsm 4096 Aug 26 2025 fonts
-rw-rw-r-- 1 lgsm lgsm 3253 Aug 25 08:56 frozen_application_license.txt
drwxrwxr-x 2 lgsm lgsm 4096 Aug 26 2025 lang
drwxrwxr-x 37 lgsm lgsm 4096 Aug 26 2025 lib
-rw-rw-r-- 1 lgsm lgsm 990 Aug 25 08:33 requirements.txt
drwxrwxr-x 5 lgsm lgsm 4096 Aug 26 2025 usr
-rw-rw-r-- 1 lgsm lgsm 68690 Apr 2 12:12 vintagestory.ico
And 2.1.2 with a very different set of files:
drwxrwxr-x 2 lgsm lgsm 4096 Apr 26 11:27 PIL
-rw-rw-r-- 1 lgsm lgsm 8422 Apr 26 08:41 README.md
-rwxrwxr-x 1 lgsm lgsm 54461472 Apr 26 11:27 VS_ModsUpdater
-rw-rw-r-- 1 lgsm lgsm 38709958 Apr 26 10:07 VS_ModsUpdater.v2.1.2_Linux.zip
-rw-rw-r-- 1 lgsm lgsm 78896 Apr 26 11:27 _asyncio.so
-rw-rw-r-- 1 lgsm lgsm 35720 Apr 26 11:27 _bz2.so
-rw-rw-r-- 1 lgsm lgsm 161384 Apr 26 11:27 _codecs_cn.so
-rw-rw-r-- 1 lgsm lgsm 165712 Apr 26 11:27 _codecs_hk.so
-rw-rw-r-- 1 lgsm lgsm 34648 Apr 26 11:27 _codecs_iso2022.so
-rw-rw-r-- 1 lgsm lgsm 276128 Apr 26 11:27 _codecs_jp.so
-rw-rw-r-- 1 lgsm lgsm 145000 Apr 26 11:27 _codecs_kr.so
-rw-rw-r-- 1 lgsm lgsm 120424 Apr 26 11:27 _codecs_tw.so
-rw-rw-r-- 1 lgsm lgsm 17408 Apr 26 11:27 _contextvars.so
-rw-rw-r-- 1 lgsm lgsm 144136 Apr 26 11:27 _ctypes.so
-rw-rw-r-- 1 lgsm lgsm 321344 Apr 26 11:27 _decimal.so
-rw-rw-r-- 1 lgsm lgsm 70672 Apr 26 11:27 _hashlib.so
-rw-rw-r-- 1 lgsm lgsm 57448 Apr 26 11:27 _lzma.so
-rw-rw-r-- 1 lgsm lgsm 62008 Apr 26 11:27 _multibytecodec.so
-rw-rw-r-- 1 lgsm lgsm 27472 Apr 26 11:27 _multiprocessing.so
-rw-rw-r-- 1 lgsm lgsm 18040 Apr 26 11:27 _posixshmem.so
-rw-rw-r-- 1 lgsm lgsm 22960 Apr 26 11:27 _queue.so
-rw-rw-r-- 1 lgsm lgsm 236704 Apr 26 11:27 _ssl.so
drwxrwxr-x 2 lgsm lgsm 4096 Apr 2 11:12 assets
drwxrwxr-x 2 lgsm lgsm 4096 Apr 26 11:27 certifi
-rw-rw-r-- 1 lgsm lgsm 1753 Apr 26 08:41 changelog.txt
drwxrwxr-x 2 lgsm lgsm 4096 Apr 26 11:27 charset_normalizer
drwxrwxr-x 2 lgsm lgsm 4096 Apr 2 08:41 fonts
drwxrwxr-x 2 lgsm lgsm 4096 Apr 10 11:25 lang
-rw-rw-r-- 1 lgsm lgsm 25592 Apr 26 11:27 libXau-154567c4.so.6.0.0
-rw-rw-r-- 1 lgsm lgsm 79568 Apr 26 11:27 libbz2.so.1.0
-rw-rw-r-- 1 lgsm lgsm 4611672 Apr 26 11:27 libcrypto.so.3
-rw-rw-r-- 1 lgsm lgsm 199808 Apr 26 11:27 libexpat.so.1
-rw-rw-r-- 1 lgsm lgsm 51360 Apr 26 11:27 libffi.so.8
-rw-rw-r-- 1 lgsm lgsm 832177 Apr 26 11:27 libjpeg-0f8d89bf.so.62.4.0
-rw-rw-r-- 1 lgsm lgsm 529008 Apr 26 11:27 liblcms2-cc10e42f.so.2.0.17
-rw-rw-r-- 1 lgsm lgsm 274008 Apr 26 11:27 liblzma-65fbbc38.so.5.8.0
-rw-rw-r-- 1 lgsm lgsm 176296 Apr 26 11:27 liblzma.so.5
-rw-rw-r-- 1 lgsm lgsm 596512 Apr 26 11:27 libopenjp2-56811f71.so.2.5.3
-rw-rw-r-- 1 lgsm lgsm 50120 Apr 26 11:27 libsharpyuv-60a7c00b.so.0.1.1
-rw-rw-r-- 1 lgsm lgsm 697336 Apr 26 11:27 libssl.so.3
-rw-rw-r-- 1 lgsm lgsm 755024 Apr 26 11:27 libtiff-5df1d27b.so.6.1.0
-rw-rw-r-- 1 lgsm lgsm 735816 Apr 26 11:27 libwebp-5f0275c0.so.7.1.10
-rw-rw-r-- 1 lgsm lgsm 34064 Apr 26 11:27 libwebpdemux-efaed568.so.2.0.16
-rw-rw-r-- 1 lgsm lgsm 64784 Apr 26 11:27 libwebpmux-6f2b1ad9.so.3.1.1
-rw-rw-r-- 1 lgsm lgsm 272408 Apr 26 11:27 libxcb-55eab65a.so.1.1.0
-rw-rw-r-- 1 lgsm lgsm 36112 Apr 26 11:27 mmap.so
-rw-rw-r-- 1 lgsm lgsm 349 Apr 26 10:14 requirements.txt
-rw-rw-r-- 1 lgsm lgsm 39464 Apr 26 11:27 termios.so
drwxrwxr-x 2 lgsm lgsm 4096 Apr 26 11:27 zstandard
Unfortunately, 2.3.0 still not working Laerinok
lgsm@vintage:~/vsupdater$ export PYTHONIOENCODING=utf-8
lgsm@vintage:~/vsupdater$ ./VS_ModsUpdater.v2.3.0_Linux-x86_64.AppImage
ModsUpdater for Vintage Story / v2.3.0 (by Laerinok)
- No new version available -
Installed game version: 1.21
Traceback (most recent call last):
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/fetch_mod_info.py", line 354, in scan_and_fetch_mod_info
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/rich/progress.py", line 1639, in add_task
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/rich/progress.py", line 1549, in refresh
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/rich/live.py", line 266, in refresh
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/rich/console.py", line 870, in __exit__
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/rich/console.py", line 826, in _exit_buffer
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/rich/console.py", line 2038, in _check_buffer
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/rich/console.py", line 2107, in _write_buffer
UnicodeEncodeError: 'ascii' codec can't encode character '\u2022' in position 124: ordinal not in range(128)
*** You may need to add PYTHONIOENCODING=utf-8 to your environment ***
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/cx_Freeze/initscripts/__startup__.py", line 133, in run
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/cx_Freeze/initscripts/console.py", line 25, in run
File "main.py", line 231, in <module>
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/fetch_mod_info.py", line 345, in scan_and_fetch_mod_info
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/rich/progress.py", line 1189, in __exit__
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/rich/progress.py", line 1175, in stop
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/rich/live.py", line 162, in stop
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/rich/console.py", line 870, in __exit__
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/rich/console.py", line 826, in _exit_buffer
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/rich/console.py", line 2038, in _check_buffer
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/rich/console.py", line 2107, in _write_buffer
UnicodeEncodeError: 'ascii' codec can't encode character '\u2022' in position 124: ordinal not in range(128)
*** You may need to add PYTHONIOENCODING=utf-8 to your environment ***
2.1.2 continues to work as long as I have exported the PYTHONIOENCODING=utf-8 variable.
Yelb
Glad to hear it !
Hi, stable 1.21 and your AppImage 2.2.2 seem to work well now, no visible issue so far. Thanks.
Thanks for the repport.
I've made a new appimage. This should fix thibeeus's issue.
Please, download it again and tell me if it's OK.
(You can also find the "simple" zip-file on github)
I don't know what the deal with the new appimage and a problem I'm encountering. I was previously using the zip version of your Linux package.
I would get this:
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/cx_Freeze/initscripts/__startup__.py", line 133, in run
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/cx_Freeze/initscripts/console.py", line 25, in run
File "main.py", line 194, in
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/fetch_mod_info.py", line 335, in scan_and_fetch_mod_info
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/rich/progress.py", line 1189, in __exit__
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/rich/progress.py", line 1175, in stop
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/rich/live.py", line 162, in stop
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/rich/console.py", line 870, in __exit__
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/rich/console.py", line 826, in _exit_buffer
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/rich/console.py", line 2038, in _check_buffer
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/rich/console.py", line 2107, in _write_buffer
UnicodeEncodeError: 'ascii' codec can't encode character '\u2022' in position 124: ordinal not in range(128)
*** You may need to add PYTHONIOENCODING=utf-8 to your environment ***
So then I'd run
export PYTHONIOENCODING=utf-8
...and everything would be working. That's not working now. I've even tried extracting the appimage, still happens. I'm also not an advanced Linux user so I'm not sure what to change here. Nothing seems to be working.
smt923
Glad to hear it! Since I'm not an advanced Linux user, I sometimes have a bit of a hard time.
There are still a few bugs to fix, but it should be easier to use with the AppImage now.
thank you! this is really useful - the appimage seems to have worked, picked up and converted my old config file etc
V2.2.2
That's it. Most of the bugs are fixed. There are still a few remaining, and I still have some additions to make, but the most urgent work is done. Everything should now be functional.
A priori, only the use of certain arguments might not work optimally in some cases.
I hope the appimage will work as intended... If not I will give the orignal files.
Yelb
Hello,
Thanks for the feedback. I'm currently fixing this bug. I was about to publish v2.2.1 when I saw it. For now, all you need to do is edit the config.ini (~/.config/VS_ModsUpdater) file and set the game version:
[Game_Version]
user_game_version = 1.20.12
or
[Game_Version]
user_game_version = 1.21.0-rc.7
(or any version you want.)
Hello,
i tried the Linux appImage 2.2.0 and this :
Fetching mod info from API... - 0:00:21 - ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 0% • •
Traceback (most recent call last):
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/cx_Freeze/initscripts/__startup__.py", line 133, in run
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/cx_Freeze/initscripts/console.py", line 25, in run
File "main.py", line 194, in <module>
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/fetch_mod_info.py", line 388, in scan_and_fetch_mod_info
File "/usr/lib/python3.12/concurrent/futures/_base.py", line 449, in result
File "/usr/lib/python3.12/concurrent/futures/_base.py", line 401, in __get_result
File "/usr/lib/python3.12/concurrent/futures/thread.py", line 59, in run
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/fetch_mod_info.py", line 291, in get_mod_api_data
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/fetch_mod_info.py", line 197, in get_compatible_releases
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/packaging/version.py", line 202, in __init__
packaging.version.InvalidVersion: Invalid version: 'None'
For those who are interested, v2.2.0 is almost ready. I have to fix some bugs (specific to Linux) with the arguments, but I'm making the AppImage available if you want to test it. It should be functional for "standard" use.
I can't launch it by double-clicking, only from the terminal (I'm on Mint 21). If you have any clues for me, I'd appreciate it.
Hey everyone,
DilanRona Dewey
I was away for a bit and will be back soon. I'll look into all these issues once I'm fully up and running again.
I have yet to fix some issues and then test with linux.
For interested users there is a v2.1.4-rc.1 but not tested on Linux and there is no compiled version, only the python code.
Not a crash, just some interesting behaviour that doesn't have an explination in the Comments from what I can see.
Recently had this as my latest traceback when running the script.
Traceback (most recent call last):
File "/home/username/VS_ModsUpdater.v2.1.2_Linux/main.py", line 205, in <module>
File "/home/username/VS_ModsUpdater.v2.1.2_Linux/mods_auto_update.py", line 120, in download_mods_to_update
TypeError: unsupported operand type(s) for /: 'PosixPath' and 'NoneType'
Might be nothing, might be something, could also just be that there are no mods to update and there just isn't a message for that or a case for it before the script stops.
Got a crash now for some reason
Traceback (most recent call last):
File "/home/rupert/Vintage/VS_ModsUpdater.v2.1.2_Linux/main.py", line 234, in <module>
File "/home/rupert/Vintage/VS_ModsUpdater.v2.1.2_Linux/export_pdf.py", line 433, in generate_pdf
File "/home/rupert/Vintage/VS_ModsUpdater.v2.1.2_Linux/export_pdf.py", line 292, in create_pdf_with_table
File "/home/rupert/Vintage/VS_ModsUpdater.v2.1.2_Linux/reportlab/platypus/tables.py", line 287, in __init__
ValueError: <Table@0x7FB0182A9D90 0 rows x unknown cols>... must have at least a row and column
TurtleFrom
The config.ini file is located at ~/.config/VS_ModsUpdater.
It is created after the first launch.
i dont have a .config file (or i just cant find it)
PerpetualGamer
Ok, I understand the context better now, thank you. So I will add an argument to modify the config.ini path. I will also take the opportunity to define one for each option in config.ini, I suppose that could be useful. In the meantime, there are already a few, I don't know if they are useful to you, but if you don't have already looked, check the "Configuration (
config.ini
) & Arguments" in "Want to Customize?" section in the description on the page above. There are some infos about arguments you can use.I have permission but the flow of how the server is run/booted doesn't easily allow me to do the interactive config setup. It's using Pelican Panel and the user has no way of getting into their home directory, just the game directory. I was able to work around this by hard coding a config.ini into the server install script. So I don't NEED a solution, but having one would be nice for the future.
PerpetualGamer
I'm not a Linux user, nor am I very knowledgeable about it, but shouldn't a user be able to write to their
~/.config/
folder? That's the standard location on Linux for personal configurations, and the system is designed for you to own it with write permissions.I could add a new argument to modify the config path, but I won't be home for a week. I'm not sure I can do anything until I get back.
Is there a way to run this without a config.ini, or a way to force it to use a config.ini in a different location? I do not have the ability to add a file to the directory it's looking at for the config.
DilanRona
The latest changes on ModDB broke part of how I was managing the maximum game version used when no max version was specified. To avoid this issue, you need to specify the version in the config.ini file (
~/.config/VS_ModsUpdater
).[Game_Version]
user_game_version = 1.20.11
I'll fix that once the ModDB changes are stable.
When updating the mods, it gives me the following.
Maximum game version for mod updates: .4.4-dev.2
Got the following error now...
Traceback (most recent call last):
File "/home/rupert/Vintage/VS_ModsUpdater.v2.1.2_Linux/main.py", line 187, in
File "/home/rupert/Vintage/VS_ModsUpdater.v2.1.2_Linux/fetch_mod_info.py", line 393, in scan_and_fetch_mod_info
File "/home/rupert/Vintage/VS_ModsUpdater.v2.1.2_Linux/concurrent/futures/_base.py", line 449, in result
File "/home/rupert/Vintage/VS_ModsUpdater.v2.1.2_Linux/concurrent/futures/_base.py", line 401, in __get_result
File "/home/rupert/Vintage/VS_ModsUpdater.v2.1.2_Linux/concurrent/futures/thread.py", line 59, in run
File "/home/rupert/Vintage/VS_ModsUpdater.v2.1.2_Linux/fetch_mod_info.py", line 297, in get_mod_api_data
File "/home/rupert/Vintage/VS_ModsUpdater.v2.1.2_Linux/fetch_mod_info.py", line 212, in get_compatible_releases
File "/home/rupert/Vintage/VS_ModsUpdater.v2.1.2_Linux/packaging/version.py", line 202, in __init__
packaging.version.InvalidVersion: Invalid version: '.4.4-dev.2'
There is no option to specify max version.
Laerinok
I sent to you my script on your discord PV, take a look
Yskar
Thanks for the info. I will look at this.
A GUI is not planed for now. Maybe in a v3... Adding a fancy graphical interface would definitely make the app look nicer and be easier on the eyes. But the original idea was to keep things super simple: you just run it, it does its thing automatically, and then you're done. No need for the user to click buttons or do anything extra. A GUI would mean more steps for the user, which isn't what I was aiming for.
Plus, there's the issue of file size. The place where I'm hosting it, ModDB, has a 40MB limit, and I'm already getting pretty close to that. I really want to keep the main program under that limit so it can stay on ModDB. And honestly, I don't have the time or feel right now to manage and update multiple versions of the same app, like one with a GUI and one without. So for now, sticking with the simple, command-line approach makes the most sense.
But, indded, I'm curious to see how it would look on your example Python script. I did some very basic gui exercises with Tkinter a while ago (same pseudo in discord).
ok, i'm gonna revise the BR translation and if anything needs to be changed i will repport it on github, bro 👍😁
You can look at the Vita3K appimage and see how it deal with stuff, probably will give you ideas to do what you need for the script to run (and what you think in using GTK5 to provide a desktop interface for the terminal window? it would make the appimage being executed in a window making it even more elegant, i did it with one of my python scripts using chatgpt and it looked very nice and i can provide it to you via discord if you want analyze it.)
Yskar
Cool that it's working on Arch Linux now. Though I gotta admit, it wasn't exactly on purpose... I just changed how I build the binary, and it probably handled the dependency better.
My biggest issue with the AppImage is that I can't seem to handle the internal paths. Even though I get the concept, in reality something always gets in the way. To be more precise, it's the .desktop and AppRun stuff... I can't find a clear example of how to build it that I can learn from.
P.S. I added your language, since you did the translation for version 1. But, the translations are done by AI, so if you've got the time and feel like making it sound better, go for it! :)
Thanks for trying appimage Laerinok (i will test it and repport here when you fix it)
I tried the 2.1.1 release binary and for the first time it worked correctly on Arch Linux as you provide the static dependency libraries. Very good! 👍😁
GaylordZap
The AppImage is still experimental. I'm still discovering the system... My VM is also on Mint Cinnamon. Similarly, I noticed that I can't double-click on it to launch it, but no problem in the terminal. I read that it's an issue with the configuration of the Linux distribution in general. But I still have no idea if that's the cause. I did, however, put a
.desktop
file inside the AppImage.That being said, I have other issues with the AppImage, so I'm going to try another way to create it. That's the reason why I didn't create an appimage for the v2.1.1
But not being a big Linux user, I spend more time looking for information than fixing the issue...
EDIT: Actually, I think it's the internal structure of my AppImage that isn't right... 🤔
I'm having troubles getting the AppImage to run (Mint Cinnamon), and I couldn't find anything in the Troubleshooting guide or FAQ on github about the issue. Even if I give it permission to run as an executable, giving it the big fat double click does nothing. I am being tempted to just try and do the Advanced Installation since my Python is already up to date but I don't know if that will be worth it, for all I know the issue here could be painfully obvious.
Changelog:
if not args.no_pdf:
condition was moved within theexport_pdf
module to wrap only the PDF generation steps. This ensures that the icon extraction logic, which runs before PDF generation, is always executed, making icons available for other export formats (like HTML) even if PDF export is skipped.--no-html
to disable HTML mod list export.--no-html
option.PS: I need to fix the appimage creation. So no release for appimage for now, sorry...
ZippyWonderdust the app needs Python 3.12 to work properly, 3.10 is not sufficient. The reason is that Laerinok uses a format string that is only now allowed in 3.12 and even on 3.11 that gives this error:
File "/home/_vintagestory/VS_ModsUpdater_v2/./main.py", line 93
print(f"\n- {language_cache["main_language_set_to"]}[dodger_blue1]{language[1]}[/dodger_blue1]")
^^^^^^^^^^^^^^^^^^^^
SyntaxError: f-string: unmatched '['
A better explanation can be found in the changelog: https://docs.python.org/3.12/whatsnew/3.12.html#pep-701-syntactic-formalization-of-f-strings
As for the zip file you can use the main.py file instead but indeed I was surprised to.
Last news: Here is the list of the latest fixes that have been implemented.
There are still new bugs during the export of modlists for manual downloads. This only affects the export of the mod list, so it's not too bothersome for the moment. I also still need to fix the AppImage.
No ETA for the v2.0.3 yet , but it should not be too long
ZippyWonderdust
I'm sorry, I completely missed your message. But thank you for this script! I'm trying to make an AppImage, I hope it can simplify the usage. But it seems it's not fully functional yet.
Menelos
😊
Laerinok you did all that in such a small amount of time it was impressive.
1. if you know the whole list of names in advance, which you may know in the "Scanning mods" phase, then you can count the longest string and then pad with spaces when you display then in the next phase
2. "Limit mod updates to the game version : 1.20.7"
3. the JSON has all the information but it's not meant for humans. I could add some kind of viewer but then I'm not a webdesigner and the page would stop being static (or use lots of JS). In this case I'd simply stick with the PDF since Firefox has a viewer embedded, but I just don't know how that work in other browsers, most probably they ask to download the file.
Menelos
Glad to see that this new version works well and is faster. That was the goal, but it's nice to see that the effect is noticeable :) It was also an opportunity to make it visually less austere. V1 was initially designed for my personal use (and with the limited knowledge I had), this version aims to be truly useful and pleasant to use for as many people as possible.
I don't use a server, so I don't really have an idea of what information might be useful or not. Feel free to submit ideas/needs. If it's within my capabilities, I can add them.
Quack Laerinok
The new version looks nice and is much faster (expecially on my server with lots of mods), thank you :-)
Just a few remarks:
With this new version, I hope most of the old issues are fixed. I even could make an AppImage. Tell me if all work as intented.
INFO : Version 2 - is done!
The update is a bit too big to upload here. I would try to manage it to reduce the size. The Appimage is available ont GitHub.
While you wait, feel free to check out the new wiki and readme.
Hoping you'll like this new version!
I want to thank SturgeonFish for their helpful post regarding NixOS, as I am apparantly one of the 5 users! 😁
Thank you also, and so, so much, to Laerinok. This software is such an incredible time-saver.
Time, and software versions, move on. On NixOS 24.11, Python 3.9 now spits out a pip compatibility error.
The following updated shell.nix fixes it by requesting Python 3.10 instead:
{ pkgs ? import <nixpkgs> {} }:
pkgs.mkShell {
name = "vs-mods-updater-env";
buildInputs = [
pkgs.python310
pkgs.python310Packages.virtualenv
];
shellHook = ''
export PYTHONPATH=$PYTHONPATH:.
virtualenv venv
source venv/bin/activate
pip install -r requirements.txt
echo "VS Mods Updater environment loaded"
'';
}
Two other things:
Laerinok
I even forgot about this, LOL, lemme test it again and i will report editing here.
EDIT: NOPE, the steps in this readme procedure stills break the same way:
source venv/bin/activate
venv/bin/activate (line 40): “case” builtin not inside of switch block
case "$(uname)" in
^~~^
from sourcing file venv/bin/activate
source: Error while reading file “venv/bin/activate”
AAAND their step 5 doesn't work on Arch 'cause it doesnt exists pip for Arch and pipx don't work quite right, we could workaround it if we resolve the step 4, i will look it using perplexity and will repport any fix on github. 👍
Yskar
I am sorry I missed your comment. 😅
I guess this is solved with the pre-release ?
Thanks, bro! 👍
INFO :
New pre-release version is available on GitHub.
Should be the last before uploading here.
Changelog:
Yskar
Yeah, I'm too stupid for .desktop files. I can't even figure out how to escape spaces in them, because none of the online references seem to work (\ does not, \s does not work either). Ended up just going with a different file path, which recognizes the updater, but still can't seem to get it to work with activating the virtual environment first, which seems to be necessary before every launch. I tried myself at .desktop files in the past but gave up after several hours of fumbling around and this is already bringing back memories...
DarkThoughts
You can create a .desktop file with this command: "distrobox enter --name CONTAINERNAME -- python /~/VSUpdaterDIRECTORY/VS_ModsUpdater.py" and make it run using Konsole and put it in ~/.local/share/applications and fix it in the KDE app launcher (or you can leave it on the Desktop).
Yskar
I do have a few Distroboxes set up, including an Arch one with some Python shit for my local LLMs where I tried to run it in, but honestly I also don't want having to constantly remember running specific tools in specific distrobox terminals with specific commands, because that's not just a lot of extra steps but when I do some other shit and come back some months later I won't remember any of those steps either.
Edit: I did get the latest version to run in a distrobox like that, and my above point still stands, but at least I can say that the certificate issue seems to be resolved - or it's specific to the release builds.
Laerinok
sTiKyt very kindly made a guide to use the script regardless of the distro. cf description above or readme.md on github.
It didn't worked on Arch, it gave this error on step 4:
❯ source venv/bin/activate
venv/bin/activate (line 40): “case” builtin not inside of switch block
case "$(uname)" in
^~~^
from sourcing file venv/bin/activate
source: Error while reading file 'venv/bin/activate'
DarkThoughts
Well, firts you need to look the requeriments.txt file and install the libs it's described there (and as you uses Bazzite i recommend running the updater over UBUNTU on DISTROBOX and learning how to use Distrobox, the other alternative you have is using NIX, but i personally find it harder to do so), with all requeriments installed it will EVENTUALLY run (it takes like 3 to 5 minutes to start updating the mods), this distro is problematic as it is immutable, so you can't install system libs this script requires.
The problem with Bazzite is this distro is maded to be ran a Steam Deck OS and not well devised to anything else (even if it have a KDE desktop mode), if you're using in a laptop or desktop i recommend you changing your distro do CachyOS so you will have less limitation, BUT if you're using a Steam Deck you will REALLY have to learn how to use Distrobox, there's CachyOS for Steam Deck, BUT it have the same limitations Bazzite have as they're Linux for enbeded system.
OR you can run the windows version over WINE/Proton if you don't want all this hassle.
sTiKyt very kindly made a guide to use the script regardless of the distro. cf description above or readme.md on github.
The workaround I've found (Ubuntu 24.04, should work anywhere) is just to run the Windows version of the program through Wine. Unless you know your way around python and can set up your environment exactly the same as his, which I wasn't able to do, seems like the best way until Laerinok gets it figured out.
I just installed Wine on my server and ran the exe, everything updated perfectly.
Yskar
That gives a bunch of syntax warnings for invalid escape sequences and then errors out due to a lack of module dependencies. So, the usual Python shit. lol
DarkThoughts Execute in the terminal the following "python VS_ModsUpdater.py" inside the program folder.
Laerinok maybe i messed something in the repport, i will try to recreate the GPT o1 suggestion and i will link for you in the repport.If Appimage is too much for you, you really don't really NEED to, just providing the python script instead the compiled binary is enought for us average Linux enjoyers. 😄
Yskar
As said before, I have no idea what to do with the source files.
I guess by the time this updater maybe starts working, the VSLauncher app is going to have all that functionality already anyway.
Yskar
Hello
Indeed, I'm slowly realizing that there's an issue with the unlinked dependencies. I'm not familiar with all this at all... I'll look into AppImage, but I have no idea what it is yet.
I checked your report, and I don't get that warning. However, it's possible that I accidentally disabled it when I first started. That being said, part of your fix shouldn't work because using
r''
converts the string to raw text (which is intended to avoid escape issues), but it also converts variables to raw format. They are no longer recognized as variables and therefore don't pass their value.r''
should only be used for static strings.However, I think I can use
rf''
for these specific cases with variables. I'll have to check.I won't publish a new release only for this, but it will be in the next.
thanks
DarkThoughts The python source is working correctly (at least on Arch), it just doesn't start downloading fast, but run the script and wait, it will work probably.
Laerinok
The Binary never worked on Arch 'cause you don't link the dependencies statically, but the python script works, what is preferable anyway, so just drop the binary in the Linux release and just ship with the python script anyway of use appimage instead a compiled binary, it would be more elegant.
This release alerted some syntax errors, i fixed it using GPT O1, i'll write a report for you on GITHUB, but it is small stuff, the script worked correctly anyway, the script in this version aren't starting as fast the older released did, maybe it would be best alerting it to the user so they won't think the script just froze.
DarkThoughts
Logical! It's just the release of v1.4.2 that I added to GitHub. 😉
I haven't had time to look into a new release yet.
The release on Github from 3 hours ago has the same issue unfortunately. :/
Sits Yskar
Indeed, I must have messed up somewhere when creating the archive. But since it was working on my end, I didn’t realize it. I need to try creating the archive again.
And yeah, why not add the .py file to the archive (but yes, it's still available in the sources ;))
Laerinok pls bro, always add the python source into the zip here, sometimes the binary doesn't work (and you forgot to update into github this time), thanks as always. 😉
Also, maybe it's for the better you do a appimage instead compiling binary, it would work better on Linux.
Edit: i got confused 'cause you didn't do a "release" this time, but i found the updated python source, thanks.
I have the library installed, but it's looking for the temp packaged version and I'm not smart enough to fix it ;;
Sits Chumber
It seems that the library was not packaged correctly; therefore, if it is not already installed on your system, this causes the error. I will check that.
Having the same issue as the below commenter.
[PYI-85589:ERROR] Failed to load Python shared library '/tmp/_MEIZNIdKE/libpython3.11.so.1.0': dlopen: /tmp/_MEIZNIdKE/libpython3.11.so.1.0: cannot open shared object file: No such file or directory
Not sure what happened, but the last version was working for me on Ubuntu 24.04, but in this version I'm getting the following error when trying to run the program:
[PYI-2427325:ERROR] Failed to load Python shared library '/tmp/_MEIz6TuKM/libpython3.11.so.1.0': dlopen: /tmp/_MEIz6TuKM/libpython3.11.so.1.0: cannot open shared object file: No such file or directory
I unfortunately do not have the knowledge to work off the .py alone, nor diagnose the root issue.
Edit: Just saw your last comment about maybe finding a way to provide other versions. Hope it goes well, been using this for a long time and would like to do so again.
DarkThoughts
Yep, some issues with coments.
"For others distros, you can find the .py file in the source tab."
I only said that the source file was available on GitHub for those who want to compile it for other distros, not that they were on GitHub ;)
If I find another way to create the executables, I might be able to provide them for other distros, but for now, I can only make the sources available.
But as I said, my knowledge is limited. I'm learning as I go.
🧐
PS: I may have discovered a way to provide other versions today, but I'll need to look into it further.
Laerinok
Huh? Your mod description states that this is a Debian based version, and that we should go to the Github page for other releases. And I have no idea what to do with the source files.
Edit: Moddb comments are acting weird again.
DarkThoughts
What do you mean by "the 1.4.2 release isn't on GitHub"? Because the sources for version 1.4.2 are on GitHub. I haven't uploaded the release yet, but it's the same as the file on ModDB.
Again, I’ll repeat myself, but I’m neither a programmer nor a regular Linux user, so my knowledge is very limited and mostly based on the information I gather here and there. That said, if you want us to explore the issue further, feel free to contact me on Discord. If we can solve this problem that seems to affect only a handful of users, that would be great.
Laerinok
I don't use a Debian based distro (I use Bazzite, which is an immutable distro based on Fedora Atomic Desktops) and the 1.4.2 release isn't on Github.
I tried it without my VPN connection to rule it out already at the time I was trying your updater. I generally cannot imagine it being a connection issue or outdated certificates on my end since everything else works, including other Python based scripts that download things from some servers, and I have not heard of my distro having outdated certificates either. If the certificates are stored within the immutable system files then it would affect every single user of that distro.
DarkThoughts
Version 1.4.2 includes the latest SSL certificate updates. I’m not sure if that fixes the issue. There can be many possible causes (from what I’ve read), especially outdated certificates on the user’s side, a proxy, VPN, or firewall blocking/intercepting or modifying the certificates.
One possible solution on my end would be to disable SSL verification, which I won’t do for obvious security reasons.
As it stands, I don’t have the knowledge to do better, sorry.
Invataksi338472
The reason is simple: PyInstaller, which I use to generate the executable, needs to be run on the target system. This was the first solution I found in the beginning. I'm neither a coder nor a programmer, so I didn’t look further.
My media server runs Mint as well (though I use it very little), but my main work PC is on Windows 10, where I have multiple systems in VMs. For now, that’s the easiest setup for me.
That said, what you’re saying is interesting—I’ll take a look!
Hello! I'm reading the comments here, and got wondering why exactly are you using a VM to make this? There is a more straight forward method using WSL2 (Windows Sub-system For Linux) that could also work, and doesn't require as much expertise as setting up a VM and using an actual Linux distro.
In summary, it literally just downloads the selected distro onto Windows, and allows you to do all the things that distro can on Windows. It comes as default on Windows 11, and Microsoft has good documentation on how to use it!
Though I'm a Linux (Mint) user my self, so dunno why I'm recommending a method that keeps you on Windows for longer :P
PS: On the website where Microsoft hosts the documentation for WSL2, there is also documentation on how to actually switch to Linux, for anyone interested :^)
Is the 2.0 version fixing the SSL certificate issue?
The issue is fixed. Unfortunately, I can't create the executable for Linux tonight. I need to reinstall my virtual machine. But if needed, you can grab the .py file from the sources.
File "VS_ModsUpdater.py", line 631, in update_mods
TypeError: int() argument must be a string, a bytes-like object or a real number, not 'NoneType'
The issue has been identified. The new ModDB server no longer returns the
Content-Length
value that I was using to retrieve the file size for downloading.I'll fix it as soon as possible, but probably not today.
Friestvalker Chumber deadtom04
Indeed the ModDB update from yesterday should have changed something. The issue is due to a failing request to get the file size, before downloading the zip file.
I will investigate but I am not at home today.
I too am having the issues that deadtom and chumber are describing
Can confirm deadtom's reported issue. Every update attempt spits out the same error.
I think the latest update may have broken something. Any mod that the script tries to update throws the below error:
2025-02-15 17:03:49 : Gourmand
Traceback (most recent call last):
File "VS_ModsUpdater.py", line 631, in update_mods
TypeError: int() argument must be a string, a bytes-like object or a real number, not 'NoneType'
Maquin
Thank you so much for your feedback and enthusiasm! I'm glad this tool is helpful to some players :)
I ran this and it worked like a dream. I wept tears of joy knowing that I am finally forevermore free of the burden of hunting down fifty mods to install individually every time the game updates. Thank you.
Maquin
👍
Laerinok
I figured out the problem, it was because I didn't have the working directory opened in the terminal since I used the keyboard shortcut to open it instead. Rookie mistake on my part.
Maquin
FileNotFoundError: [Errno 2] No such file or directory: 'lang/en_US.json'
The script doesn't find the language file.
Did you extract all the files and folders from the archive? You must have this folder structure (it's from the windows version, but structure is the same):
Every time I try to run this in the terminal, all I get is "An error occured. Please see the debug-log file in logs folder for more
information." After checking the logs, it just says
2025-01-26 18:03:14 : Traceback (most recent call last):
File "VS_ModsUpdater.py", line 887, in <module>
File "VS_ModsUpdater.py", line 80, in __init__
FileNotFoundError: [Errno 2] No such file or directory: 'lang/en_US.json'
Not really sure what I'm supposed to do to fix this.
SalazarWindriver
It occurs only in some rare case, but it can happen. I don't know if you use SpearAndFand's Primitive Survival, but it had made a small disclaimer about multiple mods and how to keep a clean mod folder (troubleshooting section).
This script was my first one in Python. I learn and I didn't think every issues (or I didn't know how to deal with them). Now I feel more confortable, and the next version should be better.
Yeah I ran it without reading the wiki, that was my fault.
I have only ever had problems with multiple copies when I come back after a while and it has multiple copies enabled. disabling has always solved that. It was some of the reason I was looking for this updater. I was going through and cleaning up and updating my mods when I found this.
SalazarWindriver
Sorry for your game but:
You have to set:
[Game_Version_max]
version = 1.19.8
All infos about config.ini are in the wiki or on the page for windows (advanced operation - via config.ini).
You should not have so many versions. When you manually download a mod or if you use the install method from ModDB you MUST DELETE old versions by your own. I cannot (and I don't want) check if users have a mess in their mods folder. Having multiple versions of a mod can cause many issues. You were lucky if you hadn't yet.
But whatever, the v2 will be a little bit "safer". Mods to update will be saved in a zip file before updating. I am also working on a way to downgrade to another game version, but I meet some issues for now.
This just broke my entire game. It updates to the latest version without checking compatibility. The newest version of automap markers is for 1.20 only and I'm still running 1.19.8 but it downloaded it anyway. Love the idea but for 2.0 it should check the flags to make sure the new version will work with the installed version of the game. It also downloaded multiple copies of some mods cause I still had older versions in the folder.
INFO V2.0.0:
I’ve learned a lot from this project, and now I’m ready to move on to an entirely new version 2.0.
I started the code from scratch and added new features:
These features are complete. I still have a lot to work on; I don’t have an estimated release date yet, but progress is being made.
If you have any suggestions, now is the time to share them. If it’s within my abilities, I’ll see what I can do.
hron84
Hello,
I made a little break but I am going to dive into this script soon. I am working on a new version, I will try to fix this.
As you may have read, I am not a linux user (and only on Mint in a virtual machine) so my knowldeges are pretty low. Moreover, I am not a programmer. I made this script because I needed it and because I wanted to learn Python. It's the only script I've made.
That said, I know there is an issue with the ~home somewhere. But as I cannot reproduce it on my VM, it's hard to make test. I guess Debian version have some differences with Arch or others distros.
Moreover the script is made with Python 3.11.4. and I know that 3.12 brings some new features because there are some depreciation alerts.
Feel free to send me / contact me (here, on github or on Discord - same pseudo). I appreciate any help but keep in mind that I add/modify code only if I can understand it. As I said, I am learning, and I must understand what I change to be able to update it later.
It either does not work, or does not print out anything for me. I running the latest updater package you uploaded to the site (1.4.0) with the following parameters: ./VS_ModsUpdater --modspath "${HOME}/.config/VintagestoryData/Mods" --language en_US --nopause true and it prints out nothing, does nothing, just exits.
Please add more messages about the operations and the potential errors.
The situation was happened on latest Arch Linux, with VS 1.19.8-1 package (installed from AUR) and with Python 3.12.4.
EDIT: I went to the GitHub and fetched the very latest code, it is also not working, not emitting any error messages besides the SyntaxWarning. I managed to fix them by following this guide for it: https://stackoverflow.com/a/77531416/182474 but the script still does nothing. The script itself is too complex to my Python knowledge so I cannot point out where could be the error.
EDIT2: I found the issue. You silently abort the script if the mods path is not exists. However, the problem is a bit deeper. In the arg_modspath() function somehow you duplicate the username in the path (so it become /home/hron/hron) if it is given by the absolute path. I was not able to decipher what the code is actually doing (because it uses Python magics), but I worked it around by checking if the path is planned to be returned is exists, if not, I check if the raw (original) path is exists and returning with that or returning a hardcoded nonexistent path. I also added an error message to inform the user about the not existing mods path. If you are interested in the fix, I can send you a PR with that.
Wolfraider
The script is made with python 3.11.4 that may be the cause of these warnings. I am working on a new version, but I didn't yet test on Linux. I will have a look at these issue. Does it stop the script or it goes on ?
EDIT: Indeed "SyntaxWarning: invalid escape sequence" was introduced with Python 3.12. I will have a look at this.
I get a number of syntax warnings such as this one:
SyntaxWarning: invalid escape sequence '\{'
self.file_lang_path = f'lang\{args.language}.json'
It appears you have invalid backslash in your strings in a couple of places in your code.
This is using Python 12.
SturgeonFish
Indeed I noticed it was for another linux distribution. That's why I asked. As some users asked me for some other distributions it will be a good thing I that I group all info I can.
Thanks ;)
Laerinok Those files are only going to work for nixos, which is a linux distribution that does things a bit differently. You're free to add them to the desc/repo as you like.
SturgeonFish
Thanks for the share.
Can I ping it to the description or it's something specific to you and your friends ? I guess it's for all but I prefer to be sure ;)
For the 5 or so of you that I know play this game on nixos, here's my shell.nix and requirements.txt files. This got VS_ModsUpdater.py from the repo working.
>shell.nix
# shell.nix
{ pkgs ? import <nixpkgs> {} }:
pkgs.mkShell {
name = "vs-mods-updater-env";
buildInputs = [
pkgs.python39
pkgs.python39Packages.virtualenv
];
shellHook = ''
export PYTHONPATH=$PYTHONPATH:.
virtualenv venv
source venv/bin/activate
pip install -r requirements.txt
echo "VS Mods Updater environment loaded"
'';
}
>requrements.txt
requests
fpdf2
wget
semver
bs4
rich
Pop these in the dir you extracted everything and it's just $nix-shell followed by $python VS_ModsUpdater.py
c1charge
👌 glad to see it's OK.
@Laerinok
I got it working now, I thought it was looking for a folder named "Mods" so had the path specified to one level up. Once I included the Mods folder in the pathing it worked perfectly in my setup! Thank you!
c1charge
Can you give me your pathmods name and the config.ini file ? I guess you put mods in the mod's server folder. right ?
And I guess you didn't change the mods path in the config.ini ?
I never put mods in the game's folder but in the the VintageStoryData folder.
I think you have two choices :
Laerinok
The modpath is correct, and the only other files in the folder are the default surival, creative, and essentials files. Otherwise there are plenty of .zips in there!
c1charge
Hello,
This message should occurs only if there is no .zip file in the mods folder which seems not being your case. Strange.
Do you have other files than the .zip in the mods folder ?
Just to be sure, the modpath in the config.ini file is the good one that leads to server's modspath ?
Hello, not sure what I am doing wrong here. I got the program to load on my Linux Server, and when I point it to my Mods folder for the server I only get a "No mods in the Mods folder" error. Is it looking for something else in that folder other than the .zips? Thank you!
😀
This is so nice for a linux server. Thank you very much for it.
effgee
Versioning issue for Xlib and Xskills is fixed. It will be in the next update. I want to fix another issue I met with pdf creation with cyrillic font. I could add an argument to be able to create a pdf file of the mods in the server. Don't know if it will be useful, but it is quite easy to make.
According to your suggestion, I can add too an argument to force update. The easiest way is either to force updating all the mods or only one. But if you need to force updating several mods, you will have to add as many argument as mods. Don't know if it will be easy to use.
I will think about it. ModsUpdater grow with user's suggestions 😀
@Laerinok
Hello! Glad to hear back from you!
Yes I am running this on a dedicated server, Debian 12/Bookworm based.
It worked without any difficulties whatsoever, I just used the command line (binary) and pointed it to my mod folder.
If you would like a feature suggestion, perhaps being able to force update a mod to most recent release.
It seems your retreival function for most recent mod release works perfect, being able to say, force install a certain mod would be useful in some cases as well. ex. Suspected corruption or undoing modification/testing. Maybe something for the future! ;)
effgee
Glad to see this version is useful. As I am not a great Linux user, it was not easy for me ^^.
Thanks for your feedback. Indeed it's another versioning issue I've never met before... I'll fix it as soon as possible. And in the same time I will try to update to 1.3.4 too. I should have done it by now...
I notice too there is a small issue with the new version link. It links to the Windows version.
Moreover I see "Cairns 1: ERROR !!! The modder did not fill in the modid in the modinfo.json file. Unable to get the update.". I thought I've fixed this issue and it should be able to update. I will have a look into this.
PS : I didn't really have any kind of feedback on use on servers. Do you use it on servers ?
Hey great to see linux support. Really useful on servers.
Came across an "edge" case where the script fails to understand there is an update, have a look at the log.
If you notice, the script while it sees the updated versions for
Xlib and Xskills it does not update them. Probably a parsing issue due to using the rc.X on their versioning. :P
----------------------------------------------
Vintage Story Mod Updater - v.1.2.0 by Laerinok
New version of ModsUploader available !! https://news.kalataka.ru/download?fileid=19584
Limit mod updates to game version : Latest version
A Tad More Charcoal: installed version : 1.0.0 - last version : 1.0.0
Accessibility Tweaks: installed version : 3.6.1 - last version : 3.6.1
Anvil Metal Recovery+: installed version : 0.1.19-pre.1 - last version : 0.1.19-pre.1
Arrownd: installed version : 1.0.0 - last version : 1.0.0
Better-Drifters: installed version : 2.1.3 - last version : 2.1.3
BetterMoisture: installed version : 1.0.0 - last version : 1.0.0
BetterPoultice2: installed version : 1.0.2 - last version : 1.0.2
Blacksmith Enhancements: installed version : 1.0.4 - last version : 1.0.5
File size : 0.1 MB
Blacksmith Enhancements v.1.0.5 download in progress...
100% [............................................................................] 105888 / 105888
Blacksmithname: installed version : 1.1.6 - last version : 1.1.6
Butchering: installed version : 1.5.4 - last version : 1.5.4
Buzzy Bees: installed version : 1.0.1 - last version : 1.0.1
Cairns 1: ERROR !!! The modder did not fill in the modid in the modinfo.json file. Unable to get the update.
Chiseltools: installed version : 1.10.5 - last version : 1.10.5
ColoredTorchesRedux: installed version : 1.1.0 - last version : 1.1.0
Config lib: installed version : 1.0.2 - last version : 1.1.1
File size : 0.17 MB
Config lib v.1.1.1 download in progress...
100% [............................................................................] 175723 / 175723
Configure Everything: installed version : 1.1.0 - last version : 1.1.0
Cooperative Combat: installed version : 1.1.1 - last version : 1.1.1
Creatures & Critters (Unofficial): installed version : 1.0.6 - last version : 1.0.6
Entities Interact: installed version : 1.0.3 - last version : 1.0.3
Fantasy Creatures Mod: installed version : 0.7.1 - last version : 0.7.1
History of existence: installed version : 0.0.3 - last version : 0.0.3
Icecold: installed version : 0.5.1 - last version : 0.5.1
Immersive Wood Chopping: installed version : 0.7.1 - last version : 0.7.1
Immersive Wood Sawing: installed version : 0.1.1 - last version : 0.1.1
Instand Drifter Drops: installed version : 1.1.0 - last version : 1.1.0
Just An Arrowhead Mold: installed version : 1.0.1 - last version : 1.0.1
Lumber Sling: installed version : 1.1.0 - last version : 1.1.0
Bows: installed version : 1.0.4 - last version : 1.0.4
More Bags: installed version : 1.2.0 - last version : 1.2.0
MoveLikeKaji: installed version : 0.0.5 - last version : 0.0.5
The Night Watcher: installed version : 2.0.0 - last version : 2.0.0
NoCharcoalLost: installed version : 1.0.0 - last version : 1.0.0
Normalizer: installed version : 1.0.1 - last version : 1.0.1
Outlaw Mod: installed version : 1.2.2 - last version : 1.2.2
Pick Up Fast: installed version : 1.0.2 - last version : 1.0.2
Primitive Survival: installed version : 3.4.9 - last version : 3.4.9
PropickFix: installed version : 1.0.0 - last version : 1.0.0
Re: ERROR !!! The modder did not fill in the modid in the modinfo.json file. Unable to get the update.
SilentSave: installed version : 1.0.4 - last version : 1.0.4
Simple Footsteps: installed version : 1.1.7 - last version : 1.1.7
Nat's Survival Nutrition: installed version : 1.0.0 - last version : 1.0.0
Temporal gears stack: installed version : 1.0.0 - last version : 1.0.0
The Critters Pack: installed version : 0.9.1 - last version : 0.9.1
EasyTorchLight: installed version : 1.0.0 - last version : 1.0.0
Vanity: installed version : 2.1.1 - last version : 2.1.2
File size : 0.04 MB
Vanity v.2.1.2 download in progress...
100% [..............................................................................] 39041 / 39041
Dear ImGui: installed version : 1.1.2 - last version : 1.1.2
Wild Farming Revival: installed version : 1.1.8 - last version : 1.1.8
Xandus Inventory Tweaks: installed version : 1.5.9-rc.1 - last version : 1.5.9-rc.1
XLib: installed version : 0.8.0-rc.1 - last version : 0.8.0-rc.2
XSkills: installed version : 0.8.0-rc.1 - last version : 0.8.0-rc.2
End of search.
The following mods have been updated:
- Blacksmith Enhancements :
Changelog v1.0.5 :
* Fixed - noticeable z-fighting when player is wearing armor.
* Fixed - when player is using bellow and moves it to the chest at the same time it would make player animator get stuck.
* Fixed - sometime when player is using bellow it would get stuck and so would player animator
*
*
*
*
*
- Config lib :
Changelog v1.1.1 :
* Fixed nullref bug
- Vanity :
Changelog v2.1.2 :
* <span style="font-weight: 400;"><strong>Tweak:</strong> Removed ‘requiredOnClient: false’ from modinfo.json to prompt auto-download when connecting
to server with Vanity installed.</span>
Press the ENTER key to continue...^[[B
I have not yet made a binary file for the v1.3.2. I have to be sure before it works as expected with linux. But for those who desire, the .py file is available in the github release. And thanks to a suggestion, there is also now a requirements.txt file.
Drathek
Thanks for the help and instructions. No doubt it will be useful for users.
Also ran into similar problems using this on Manjaro, so needed to download the .py from the github and then use venv to set up a virtual enviorment so pip could be used to install python dependencies.
Assuming you have python3 installed and have placed the VS_ModsUpdater.py file from the github, this is the batch file I've been using to run/setup:
cd "$(dirname "$0")"
if ! [ -d .venv ]
then
python3 -m venv .venv
source .venv/bin/activate
python3 -m pip install wget semver requests rich bs4
else
source .venv/bin/activate
fi
python3 VS_ModsUpdater.py
The cd is to resolve issues if you set up a .desktop to run this batch file. The test for a .venv folder is to determine if this is a first time setup. "source .venv/bin/activate" is to tell it to use that virtual enviorment. Other dependencies may be required, but those are the ones I needed to have it install. Can probably streamline it if it has a requirements.txt instead.
8Helio8
Hello,
Is it a fresh installation or you updated from an old version ? Is it the latest version ? Didn't you forgive to extract the lang directory ? Did you "just" run the VS_ModsUpdater file or or you use the command line ?
It doesn't seem it's missing any dependancies. You can check the VS_ModsUpdater.py if you want to see what dependencies are used. Or even run the py.
I believe Yskar had the same issue (cf: link - link2) but he was on Arch Linux. And finally got it work with the .py file.
For your information: I tried it on Linux Mint 21 on VIrtualBox. Python 3.11
@Laerinok
I have find an issue with an SSL certificate.
Dont know what to do with it. I ran the latest version. Am I missing some dependency? I ran it on Fedora Linux (the newest everything). I will try it on linux mint as I host my dedicated server on that while fedora is my personal laptop.
SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self-signed certificate in certificate chain
(_ssl.c:1006)
Traceback (most recent call last):
File "urllib/request.py", line 1348, in do_open
File "http/client.py", line 1286, in request
File "http/client.py", line 1332, in _send_request
File "http/client.py", line 1281, in endheaders
File "http/client.py", line 1041, in _send_output
File "http/client.py", line 979, in send
File "http/client.py", line 1458, in connect
File "ssl.py", line 517, in wrap_socket
File "ssl.py", line 1108, in _create
File "ssl.py", line 1379, in do_handshake
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self-signed certificate in certificate chain (_ssl.c:1006)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "VS_ModsUpdater.py", line 123, in check_update_script
File "urllib/request.py", line 216, in urlopen
File "urllib/request.py", line 519, in open
File "urllib/request.py", line 536, in _open
File "urllib/request.py", line 496, in _call_chain
File "urllib/request.py", line 1391, in https_open
File "urllib/request.py", line 1351, in do_open
urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self-signed certificate in certificate chain (_ssl.c:1006)>
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "VS_ModsUpdater.py", line 589, in <module>
File "VS_ModsUpdater.py", line 393, in accueil
File "VS_ModsUpdater.py", line 141, in check_update_script
NameError: name 'err_lang' is not defined
[96539] Failed to execute script 'VS_ModsUpdater' due to unhandled exception!
No ;) there's no missing files. the .py is no needed to run the script. It was only for test in the pre-release you might have.
But it's avalaible in the Source page if needed.
@laerinok there may be an issue with your files, on the two last versions it is missing the .py script
Kaofan
Can you join me at Discord ? It will be easier. (my pseudo is laerinok)
Laerinok
[Pterodactyl Daemon]: Finished pulling Docker container image
container@pterodactyl~ dotnet --version
7.0.402
:/home/container$ ./VS_ModsUpdater/VS_ModsUpdater.sh && ./VintagestoryServer --dataPath ./data --port=${SERVER_PORT} --maxclients=${MAX_CLIENTS} ${OPTIONS}
./VS_ModsUpdater/VS_ModsUpdater.sh: 8: /home/container/VS_ModsUpdater: Permission denied
container@pterodactyl~ Server marked as offline...
[Pterodactyl Daemon]: ---------- Detected server process in a crashed state! ----------
[Pterodactyl Daemon]: Exit code: 126
[Pterodactyl Daemon]: Out of memory: false
[Pterodactyl Daemon]: Aborting automatic restart, last crash occurred less than 60 seconds ago.
Kaofan
You must also change the '/Path_To_VS_ModsUpdater/VS_ModsUpdater' with the path were you put VS_ModsUpdater.
Path_To_VS_ModsUpdater is the path to the directory where is VS_ModsUpdater.
But I don't know if a relative path is enough or if you must write the absolute path.
Laerinok
I don't know if I've done it right
imgur.com/a/fW1whyP
[Pterodactyl Daemon]: Finished pulling Docker container image
container@pterodactyl~ dotnet --version
7.0.402
:/home/container$ VS_ModsUpdater.sh && ./VintagestoryServer --dataPath ./data --port=${SERVER_PORT} --maxclients=${MAX_CLIENTS} ${OPTIONS}
/entrypoint.sh: line 20: VS_ModsUpdater.sh: command not found
container@pterodactyl~ Server marked as offline...
[Pterodactyl Daemon]: ---------- Detected server process in a crashed state! ----------
[Pterodactyl Daemon]: Exit code: 127
[Pterodactyl Daemon]: Out of memory: false
[Pterodactyl Daemon]: Aborting automatic restart, last crash occurred less than 60 seconds ago.
Edit1:
I guess I'm really stupid?
[Pterodactyl Daemon]: Finished pulling Docker container image
container@pterodactyl~ dotnet --version
7.0.402
:/home/container$ ./VS_ModsUpdater/VS_ModsUpdater.sh && ./VintagestoryServer --dataPath ./data --port=${SERVER_PORT} --maxclients=${MAX_CLIENTS} ${OPTIONS}
./VS_ModsUpdater/VS_ModsUpdater.sh: 8: /Path_To_VS_ModsUpdater/VS_ModsUpdater: not found
container@pterodactyl~ Server marked as offline...
[Pterodactyl Daemon]: ---------- Detected server process in a crashed state! ----------
[Pterodactyl Daemon]: Exit code: 127
[Pterodactyl Daemon]: Out of memory: false
[Pterodactyl Daemon]: Aborting automatic restart, last crash occurred less than 60 seconds ago.
EDIT : Erratum - I'd forgotten to put the executable file in the archive. Sorry.
Download the Source code archive (zip or tar.gz) and the VS_ModsUpdater file.
Extract the Source code archive and put the VS_ModsUpdater file in the directory.
I've made a new pre-release. Hope this could solve your problem : VS_ModsUpdater v1.2.0-pre2
This is the compiled version. You don't have to bother with Python. But you should run it in a different way :
@Kaofan
Vintage Story no, but my script does. It is writen with Python.
Can you run a terminal ? or you only have acces to the pterodactyl's pannel ?
Laerinok
Let me tell you that no Vintage Story server uses the Python module
Laerinok
This is a personal Server that is on the Pterodactyl panel which this panel is used with a VPS
Kaofan
I think the problem is that some Python modules are not installed on the server. I guess it's a paid server, or is it a personal server ? I don't know if it's possible to install new Python modules on a paid server. I will look for a way to automatically install missing dependancies (I don't know how to do this at the moment), and it's without any guarantee.
Laerinok
I tried it and it doesn't help either
Kaofan
Not sure, but try to run with starting by python3 (or maybe python. Depends on your config)
python3 ./VS_ModsUpdater.py --language en_US --modspath "./Mods" --nopause true && ./VintagestoryServer --dataPath ./data --port=${SERVER_PORT} --maxclients=${MAX_CLIENTS} ${OPTIONS}
But it seems the module is not installed on your system. If it is so, I don't know how to do without admin privilege. Some modules are included by default in the Python library. Some other must be mannually installed. In this case you must own admin privileges. I guess it's not possible if you don't own the server. But I did not have many knowledges with Linux, so maybe other users can tell if it's the case.
Help!
:/home/container$ ./VS_ModsUpdater.py --language en_US --modspath "./Mods" --nopause true && ./VintagestoryServer --dataPath ./data --port=${SERVER_PORT} --maxclients=${MAX_CLIENTS} ${OPTIONS}
Traceback (most recent call last):
File "/home/container/./VS_ModsUpdater.py", line 31, in <module>
import requests
ModuleNotFoundError: No module named 'requests'
I made some changes in the script. Now you will be able to run it in command line and you should use it to run on dedicated servers. It's a pre-release so I don't yet upload here but you can get and try it by downloading it from my Git. pre-release of the script for VintageStoryServer
You can run the script with the following arguments:
VS_ModsUpdater.py [-h] [--modspath MODSPATH] [--language LANGUAGE] [--nopause {false,true}] [--exclusion EXCLUSION [EXCLUSION ...]]
options:
-h, --help show this help message and exit
--modspath MODSPATH Enter the mods directory (in quotes). Quotes are needed only if there is some space in the path-name.
--language LANGUAGE Set the language file (as it is named in the lang directory, without extension)
--nopause {false,true} Disable the pause at the end of the script. You NEED to set it to true if not the script prompts and wait your intervention.
--exclusion EXCLUSION [EXCLUSION ...] Write filenames of mods with extension (in quotes) you want to exclude (each mod separated by space). It's not really useful as you can set it later in the config.ini file.
Exemple of use :
VS_ModsUpdater.py --language en_US --modspath "/home/VintagestoryData/mods" --nopause true
You could write this kind of command before the command for running the server. It may be something like that:
VS_ModsUpdater.py --language en_US --modspath "YourModsFolderPath" --nopause true && ./YourVintagestoryServerPath/VintagestoryServer --dataPath ./YourModsFolderPath --port=XXXXX --maxclient=X
I don't have any dedicated server, so I only can guess how it will work. Vlammar (thanks to you) gave me many clues. The script runs, but you will need probably to do some tweak before to use it.
It's a python script, I guess it's already installed with Linux. You may need to install dependancies before.
I am working to a way to automatically install missing dependancies but it will be for later.
Don't hesitate to tell me what is working or not, but please be as precise as possible.
Vlammar
OK. Je vois mieux. Enfin je crois. Merci. J'ai vu que je pouvais faire passer au script des arguments en ligne de commande. Les seules éventuelles interventions humaines sont au premier lancement (la saisie du chemin dossier des mods et la création du config.ini) Et la pause finale. Donc si j'arrive à faire un truc du genre : VS_modupdater.py --ModPath --Language --ModsException et à supprimer la pause, ca correspondrait ?
Vlammar
And you can do it, because I don't know anything about bash or .py scripts
@Laerinok tu peux créer un bash qui lance d'abord le .py qui mets à jour les mods sans demander de validation puis qui lance le server (pour le bash c'est simple mais pour le script python je ne sais pas comment il marche exactement. Par exemple sur pterodactyl tu as ce genre de command que tu peux éditer
Vlammar
Salut. Qu'entends-tu exactement par "lancer le script avec une option derrière" ? Je suis un utilisateur de Linux très occasionnel, et débutant en Python. Donc très probalement en manque de pas mal de notions ;)
@kaofan On pterodactyl you execute a startup command. If you add the python script into your File Manager folder it is possible to execute the python script then the server start script. @Laerinok Is it possible to run your script only with command line with something like python3 VS_modupdater.py -SomeOptionToForceUpdate ?
Thanks for your feed back. Glad to know it is useful :)
Thank you for this, makes my life so much easier.
Working perfectly on Ubuntu 22.04 LTS
Laerinok, thanks bro, the VS_ModsUpdater.py i got your github just worked on Arch Linux when i installed the prerequisites using "sudo pacman -S python-rich python-semver", it look like the compiled binary didn't works outside Debian-based distros but don't fret, everything is working awesomelly using just the script or using steam proton to run the windows version, thanks A LOT.
PS: If you want to automate this kind of Linux distribution detection you can get the distro name variable reading the files "/etc/os-release" and/or "/etc/os-release".
Yskar
I answer your message here as it's for linux ;)
It seems an issue with a SSL certificat ? I don't really know how to deal with. I will look for this but my knowlegdes in linux are quite low.
"NameError: name 'err_lang' is not defined" It seems it didn't find the language file. It happens when the script is launched but the lang directory is not beside.
As I said, you can find the .py in the source tab. ;)
You can pm me on discord : username: laerinok (display name : Jay)
Thanks a LOT, Laerinok, i will test right now! o/ 👍
Well I have no idea how Pterodactyl works. I'll see if I can do something.
Would you make a Pterodactyl version?
Yeah. Good news ! 😃
Thanks
I love you.
Works perfectly on Ubuntu 23.04