Monthly Archives: March 2016

Linux Merge Packaging

This is a different project at Github.
Like the one for Windows, this merges your Shoes App into a copy of Shoes, removes things you don’t want users to get to or know about like the manual, or Cobbler or packaging. For linux this means your app will installed in /usr/local/[lib|bin] or /usr/[lib|bin|]. Your choice. Any gems need by your script will be inside the ruby in your app. Because you decided what gems to include. No need to code Shoes.setup and have your users wait for it to download – you’ve included them. If you want a menu entry and and an Icon to match, it’s your choice.

There are implications you may not have thought of and there’s a long list of bewares and much testing for you because you have choices and responsibilities for those choices. Neither I nor Shoes will make those choices for you. There’s no GUI to make it appear simple. Because it’s not simple. It’s not overly hard but it’s not simple.

Currently it only builds .deb and Ubuntu 14.04 likes them but Ubuntu 15.10 whines about something in the maintainer field (and then installs it if you tell it too). That’s a setting you control and obviously you have to test for the platforms you care about. Maybe you need a .ppa and an account with Ubuntu. Every platform and distribution now days has it’s rules. Shoes can’t do that for you. You may have to modify the scripts to do what you want. ‘rpm’ is an easy option. Other formats (arch, suse …) just slightly more difficult once you know the packaging tools and read the script – it’s only 210 lines of ruby.

Shock! Another 3.3.1 Beta

Early release aficionados rejoice! There is a new beta (dated 2016-03-20) here which fixes a crash in some situations in the video handling. (memory pointer free at the wrong place in time)

Speaking of video, we’ve slightly simplified the use. Now, only require 'shoes/videoffi' is required so delete Vlc.load_lib in your scripts after installing the new beta. There are code attempts in there to not do it twice but why tease the Gods?

A problem has been reported for Video on OSX 10.9.5 (Mavericks) but seems to be localized to that OSX version. The audio plays, but no video is shown, just the black box. OSX 10.10 doesn’t have that problem.

LASTLY, as stated before, using 3.3.1 BETA to package is just asking for confusion. I’ll also note that packaging is now 100% ruby code, albeit very confusing code which you can read for yourself to see what’s going on. It’s just scripts included in every Shoes.

Merge Packaging

You might be familiar with Packaging a Shoes script or directory (.shy). You had two choices Should Shoes be included or should Shoes download itself on the users system. I call those repack (include) and dnlif (download if needed). It a way to Install Shoes on the users system and then run your script (or .shy) You could do it from any platform for any platform (a 5x5x2 matrix)

You might notice that is kind of what virus do, only they don’t ask for permission. Windows 10 does not like the repack style and they probably only tolerate dnlif because no one has flagged it (and because the Mozilla/Firefox installer does the same thing). There are voodoo dead chicken dances that users could go through and it might work.

From a slightly different direction, some folks would prefer Shoes would not be shown to their end user (and side installed for all to see). They’d like to to have some control over the Windows installer (images, shortcuts and so on). That was only possible if you built Shoes from source which was never easy for Windows or OSX and full of hidden gotcha’s since Ruby 1.9.3. The old HacketyHack program( aka HH) did a style of packaging where it copied/replaced/modified Shoes source and build a new program but that packaging style disappeared in Shoes 3.2. It had it’s own rakefiles the used arcane entry points in the Shoes rakefiles. It had it’s own NSIS installer script for Windows.

Do you see two vecters pointing into one solution? I did and I call it merge packaging. If you have Shoes installed on your Windows machine and all them gems you want the end user to have then that could be merged with your scripts and your nsis installer scripts. Voolah! . Which only works if use Shoes/Windows 3.3.1 (the beta) or better. It’s not really a part of Shoes because it’s platform specific. It only runs on Windows and only builds for Windows. And it’s not GUI – you’ll have to use the Windows command line. But, It works!! It solves the Win-10 problem and you can exert as much control of the install experience as you’re will to do.

There’s no GUI although you could write one buts its kind of low benefit/high cost to you or me since you’ll be modifying the installer to do what you want. As an example, the exe-shoes project has a copy of my YTM sample code which requires the ‘rubyserial’ native gem installed on the packaging system. Just to demonstrate.

One could imagine an OSX version (mostly creating the dpg/dmg and the plists) and Linux versions (.deb, .rpm …. the fpm gem can do that). Like Windows, those would only be a template for you to start with because if you want to hide Shoes you need to do it your way, not mine. Your name, your webserver, your installer, your credentials at the app stores(s) or linux repo’s. Shoes can’t provide that for you script. That’s on you. I’m happy to work with anyone trying to do those things or fill in the missing pieces (OSX & Linux) but it not really Shoes infrastructure so it not going to happen unless there willing contributers.

Beta or Release 3.3.1

What is the difference? For Shoes, not much. It’s pretty arbitrary. In the case of 3.3.1 there are a few bugs/features that we want to fix before we say done. But there’s some features we think you want to look at so, 3.3.1 is available for beta download.


  1. Video Widgets. You must have a recent VLC downloaded and installed in it default location, versions 2.1.x or 2.2.x. If Shoes finds it, it enables you to use the new code. Please try the sample/expert-video-play.rb for a great example of what it can do. Since its Shoes/Ruby code you’ll want to study it before you write your own.
  2. Secondary Packaging – This is too odd to describe here so read the wiki
    articles This one and this too.
  3. For Windows, a better way of dealing with Fonts. This needs some more testing so you can help. Aside from a faster install it will be easier/faster to test packaged scripts on the same box. This is a precursor to a way to package apps and pretend to hides Shoes from the user. As always, uninstall older Shoes first before installing 3.3.1
  4. Ruby 2.2.4 – Beware this may require you to update binary gems that you installed into Shoes.

The Changelog is always the last thing to get updated. Or is it the manual? One of them is the last.

There is one gotcha with betas. If you package a Shoes app or script with the beta, it’s going use the older 3.3.0 unless you know how to change it (you can but then have to remember to undo that when you get the real Release.

It happens

I got busy chasing Shiny Things like new bug reports and then went even deeper into some long standing ‘if only you knew’ arcane things and I forgot I’m supposed to release 3.3.1. In my defense, I am becoming more Windows knowledgeable and some of those arcane bugs are really hard. None of which would actually matter to getting Shoes 3.3.1 out of the door, usable for most people.

That’s a personal failing. I was trying to make it perfect and get some other bugs fixed. That and the new features like Video and secondary packaging are not so easy to understand, document or debug. But it is documented in the manual (thanks to passenger94) and at the wiki and I’m always going to get lost chasing shiny things.