An interesting issue has turned up (Bug #2735630).
We had got a couple of IllegalArgumentExceptions lately with this signature:
java.lang.IllegalArgumentException
at java.util.zip.ZipInputStream.getUTF8String(Unknown Source)
at java.util.zip.ZipInputStream.readLOC(Unknown Source)
at java.util.zip.ZipInputStream.getNextEntry(Unknown Source)
at VASSAL.tools.ArchiveWriter.write(ArchiveWriter.java:316)
when saving an extension. I originally though it was a corrupted extension until another one turned up, this one with an email address.
The author claimed that Vassal was crashing when he used card names that included unicode characters (accented Euro or Chinese). I did not believe this to be the case.
I got a copy of the module, and sure enough it crashes. However, when I extracted one of the files causing the problem and loaded it via VASSAL, it ended up with a different name and did not crash VASSAL! VASSAL correctly encodes the name files that include Unicode characters, as I expected.
On querying the author, it turns out there is a 3rd party Deck Builder program for the Star Wars Epic Duels module (epicduels.pbwiki.com/Deck-Designer) that creates Extensions containing Decks. It is written in C# with .NET and is not encoding the file names correctly. I am chasing up the developer now.
However, it does raise the issue of non-english developers who may want to refresh the entire counter set of a module. The structure is already created, so normally, a developer can just open the module archive, delete all the old images and copy the new ones in.
You cannot do this if the file names contain unicode characters. Windows Vista will not physically allow you to, displaying an error message about a file name with illegal characters. Other tools like 7zip (or the Deck Builder) happily copy the files into the archive, but with the non-encoded file names that cause Vassal to crash.
It seems to me that we need a tool in the Editor to allow a designer to bulk import a whole folder of images into the Archive in one go. It could be part of a tool that displays the current images in the Archive, sortable in different ways, and allows you to tag images to be deleted?
Thoughts?
B.