I like: Shoes 3.2.15 downloads are a lot smaller for Linux and Windows (almost half) and slightly smaller for OSX.
Before I go launching off into the wild blue yonder doing things just because I can, it’s usefull to I collect my thoughts. Packaging is weird and fun and frustrating so we always need to keep the goal in mind and not get sidetracked in what can be done and stick to what should be done.
Packaging means different things to different people and Shoes folk use the term loosely. I’ll use 3 examples below.
- Isp.rb is a Shoes script that pings a website and logs the results. One file, one form.
- Ytm is a more complicated script and has data files that persist across invocations
- Hackety Hack is a very complicated system of scripts, direcotories, images, help pages and so on
They are all ‘apps’ and they can be packaged with Shoes IF NEEDED.. Packaging means creating a ‘container’ that is cross platform. isp.rb is simple, any Shoes can run it. Just point the shoes command line at it or open it from the Shoes splash screen. If you want your friends or workplace associates to run it, just tell them to install Shoes and put the script somewhere they can download it and run from their copy of Shoes.
Ytm (Yield to Maturity) has a .csv files you (pretend) have put some working into popluating and you want to share the script and that data file of precomputed results. So the container should include the script and the data file in that directory. You could copy both of them to the file server or send them in an email with a long explantion of how to put them together.
Or you could create .shy (a glorified tar ball or zip file thing) and you tell every one to install Shoes if they don’t have it, then they can use Shoes to open it. Easy peasy until the other person wants to write to that csv file with their own information. That will only appear to work. Shoes expands (inflates) the .shy in a tempory directory. The next time you run the .shy it inflate its original contents. Clever programmers, if they know whats happening can work around this problem if they are willing to and they understand what’s happening. Some folks consider .shy useless because of this problem.
Consider Hackety Hack which has a butt load of directorys,images,scripts and help text. I’ve got hh.shy for you and a hh.tar.gz. Shoes will handle the .shy (expand and run it and the os may delete it) but it knows nothing about the tar.gz. Still with me?
The Shoes packaging menu (or command line
~/.shoes/federales/shoes -p allows you to create a container and installer for your chosen operating systems. The container includes all of Shoes and your script (just one file) 8MB upto 15MB in size. It creates a .run and when the user downloads that, a temporary copy of Shoes will be expanded and that be used to execute that one script and when your user quits or crashes, the temporary copy of Shoes will vanish and the next time you execute my.run, it’s all brand new again. Think about, it might be a good thing for some folks. That’s Linux behaviour. It’s even more different behaviour for my.exe and my.app.
Are you still awake? Here’s an important fact. Shoes is/was/never/maybe-not-really designed to package complicated apps other than Hackey Hack (and that app broke packaging long ago and still doesn’t work).
Bottom Line: Packaging probably does not do what you want. It may never do what you want. I might fix some of the Linux issues and I may not. Ultra Bottom Line: don’t use packaging.