Automating Strategies for Managing Extensions

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:

  1. reduce the number of messages in the chat window
  2. better manage extension updates

Thanks

Further to my OP, here is an example of messages that appear when a VASL saved game is loaded.

extensionssnip4

In particular I am interested in the message “Game saved with version 0.1 of extension, . . . Please upgrade to the latest version of this extension”.

Can you point me to where in the VASSAL code the test that generates this message is performed?

My goal would be to trigger an automatic update of the extension just as VASL does for mapboards.

TIA

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.

Thanks for the reply. Very helpful.

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?

Doug

I would absolutely not do that. You will have endless complaints about file permissions if you try to write extensions to C:\Program Files.

From the point of view of Windows, they are program data, not a program. The place you should put them is in the user directory.

2 Likes