The module I work on, VASL, makes extensive use of extensions. It would not be unusual for players to have a dozen or more extensions loaded.
Many of these extensions are in use widely across the player base. Their presence triggers an array of messages at start up, a message for each extension loaded (also displayed on the About VASL splashscreen).
When a saved game is loaded, another array of messages (one for each extension) is triggered, indicating that the game was saved with a particular extension which is not found and recommending that it be added. The extensions referred to in these messages may or may not have been used in creating the saved game. In some rare instances, I have seen a message indicating that a new version of an extension is available.
While I would like to see the volumes of messages reduced or suppressed, these messages are not the problem. They simply illustrate the problems.
In particular, we have no automated way of managing extension updates. If a new version of an extension is installed, it is not clear to me that the saved game will recognize that and use the new version if required. Testing suggests that it happens sometimes but not always.
Any advice or suggestions as to places to start to:
The file where the check happens is vassal-app/src/main/java/VASSAL/build/module/ModuleExtension.java. The key for the message string is ModuleExtension.wrong_extension_version.
As I continue this work, it has been suggested to me that extensions should be placed in “secure” areas of devices, where program files are located. As opposed to being in the data areas (such as C:\username\Documents in Windows).
If this were the case, then auto-dating extensions would be impossible, just as it is for mapboards if users put their VASL mapboards in those directories - Windows will no longer let VASSAL save files to those folders.
Do you have any advice as to where extensions should be placed on local devices?