Xojo plugin changes

For many years, the REALbasic plugin format has been a directory structure stored inside of a VirtualVolume. This has served us well, but isn’t ideal for a number of reasons I’m sure you’re all familiar with. For example, the fact that it’s a custom format and requires a custom tool to package can be a drawback for automated build systems.

Starting with the Xojo IDE, we’re introducing a new plugin format that uses the zip file format. The directory structure inside of the Xojo plugin format will be exactly the same as in the REALbasic plugin format, which should make migration simple. Here’s an example from one of our internal plugins:

[code][joe@Mac-Pro.local ~/] unzip -l RBRegEx.xojo_plugin
Archive: /Users/joe/RBRegEx.xojo_plugin
Length Date Time Name


    0  02-21-13 16:03   RBRegEx/
    0  02-21-13 16:03   RBRegEx/Build Resources/
    0  02-21-13 16:03   RBRegEx/Build Resources/Linux X86/

176464 02-19-13 19:38 RBRegEx/Build Resources/Linux X86/libRBRegEx.so
0 02-21-13 16:03 RBRegEx/Build Resources/Mac Carbon Mach-O Universal/
107752 02-19-13 19:38 RBRegEx/Build Resources/Mac Carbon Mach-O Universal/RegEx.dylib
0 02-21-13 16:03 RBRegEx/Build Resources/Mac Cocoa/
107752 02-19-13 19:38 RBRegEx/Build Resources/Mac Cocoa/RegEx.dylib
0 02-21-13 16:03 RBRegEx/Build Resources/Windows/
90112 02-19-13 19:38 RBRegEx/Build Resources/Windows/RegEx.dll


482080 10 files
[/code]

Xojo plugins can also be created using Finder’s “Compress” feature, though the result is a bit sub-optimal. Here’s the same plugin compressed with Finder:

[joe@Mac-Pro.local ~/] unzip -l RBRegEx.xojo_plugin 
Archive:  /Users/joe/RBRegEx.xojo_plugin
  Length     Date   Time    Name
 --------    ----   ----    ----
        0  02-21-13 16:07   RBRegEx/
     6148  02-21-13 16:07   RBRegEx/.DS_Store
        0  02-21-13 16:10   __MACOSX/
        0  02-21-13 16:10   __MACOSX/RBRegEx/
       82  02-21-13 16:07   __MACOSX/RBRegEx/._.DS_Store
        0  02-21-13 16:03   RBRegEx/Build Resources/
        0  02-21-13 16:03   RBRegEx/Build Resources/Linux X86/
   176464  02-19-13 19:38   RBRegEx/Build Resources/Linux X86/libRBRegEx.so
        0  02-21-13 16:03   RBRegEx/Build Resources/Mac Carbon Mach-O Universal/
   107752  02-19-13 19:38   RBRegEx/Build Resources/Mac Carbon Mach-O Universal/RegEx.dylib
        0  02-21-13 16:03   RBRegEx/Build Resources/Mac Cocoa/
   107752  02-19-13 19:38   RBRegEx/Build Resources/Mac Cocoa/RegEx.dylib
        0  02-21-13 16:03   RBRegEx/Build Resources/Windows/
    90112  02-19-13 19:38   RBRegEx/Build Resources/Windows/RegEx.dll
 --------                   -------
   488310                   14 files

In terms of specifics on the zip format itself, we the majority of features in the 2.0 specification, including both STORED and DEFLATE compression modes. The file extension must be ‘xojo_plugin’ in order for the IDE to load the plugin. Additionally, Xojo plugins are case sensitive and the required spelling of the Linux component is now “Linux X86”.

The Xojo IDE will continue to support the legacy REALbasic plugin format, but the future is definitely with the Xojo plugin format. Only Xojo plugins will be supported once we get to the point of having a 64-bit IDE.

We’re hoping that plugin authors will start shipping their plugins in both formats once the Xojo IDE is released. So please start testing it now so that we can get any problems resolved before the product ships and let us know what you think.

[h]Known issues in 2013r1b2[/h]

  • Comments at the end of zip files are not supported
  • .DS_Store files inside of the platform-specific build resources directory can cause compilation errors
  • HTML help is not loaded from Xojo plugins

[h]Edit 1[/h]

  • Fixed the Mac Carbon directory name in the example
  • Added a note about case sensitivity
  • Added a note about the Linux directory name

[h]Fixes in 2013r1b3[/h]

  • Comments at the end of the zip files are now supported
  • HTML help should work

[h]Known issues in 2013r1b3[/h]

  • .DS_Store files inside of the platform-specific build resources directory can cause compilation errors
  • Files that use the stored compression mode may sometimes fail to load due to the use of an uninitialized variable

[h]Fixes in 2013r1b4[/h]

  • Files that use stored mode compression will now reliably load

[h]Known issues in 2013r1b4[/h]

  • .DS_Store files inside of the platform-specific build resources directory can cause compilation errors

[h]Fixes in 2013r1b5[/h]

  • .DS_Store and other invisible files are ignored inside of the “Build Resources” directory
  • Files inside the “Build Resources” directory are sorted by name, so that the order of files in the zip does not matter

[h]Known issues in 2013r1b5[/h]

  • None! Please test everything out and let us know if there’s anything we missed.