So remind me why you want to do this.

I wanted to be able to distribute a vm for Cuis, which is cross platform, and runs with a different icon and name in the menubar. The idea being to distribute everything except the image/changes, as a single zip file. The fact that it doesn't pick up the sources file from anywhere within the .app package, put the spanner in the works, but you have pointed me in the right direction.

The image/changes file can be combined into one if one felt the need, so Cuis becomes "normal" in the sense of having a document (the image) and an application.

The one-click plugins are usually assembled by a third party and contain a mixture of things, there could be or could not be the most recent plugins, or VM in the set of folders.
On the macintosh the info.plist could be altered and not actually have a version number that matches what version the VM is.

Secondly once I have this "universal vm" under scm with bazaar, I can keep it up to date easily everywhere it is deployed, irrespective of what vms are installed on the base machine.

Thirdly, using bazaar, we have a starting point for users to branch, forming derived vms, with different plugins, different icons for the dock, or classic one-click behaviour with the image/changes included. The branch can continue to merge in updates as they occur.

Finally, the ./Contents/Resources folder is looking pretty cluttered, and I tend to have enough clutter of my own. So I wanted to be able to have the working directory alongside the , or just inside it for one-click behaviour.

However if you wish to stuff the sources in the *.app/Contents/Resources you would have to change the Smalltalk code where it hunts for the sources file and have it hunt
where you think the sources file should be. This is not a function of the VM, it's a Smalltalk code problem.