Packaging Software

January 20, 2012 by Terry

In order to get Retrobooster to testers I decided to learn more about packaging software. I ended up making an installer for Windows with Nullsoft Scriptable Install System (NSIS) and an RPM for Linux. NSIS was an easy choice because I had already used it to make an installer Really Slick Screensavers, but RPM was new to me.

The article Linux Game Development is a good place to start if you want to learn about packaging software for Linux. From this introduction and some other advice I eventually settled on RPM (though I would still like to try MojoSetup, which appears to be popular among indie developers).

Unfortunately, most of the instructions and examples for RPM that I found were outdated or focused on making SRPMs, RPMs that contain source code instead of binaries. Plenty of experimentation was required to really get things working. Send me an email (mogumbo ‘at’ if you want to swap insight about making RPM .spec files or anything else.

I was also hoping to use Alien to convert my RPM to a Debian package. This didn’t work for me at all. Alien would not run on Fedora 14 due to missing and/or incompatible dependencies, and it failed to convert on SuSe 11.3 64-bit because the RPM was 32-bit. Maybe I just need a Debian-based distro so that I can build a Debian package from scratch.

Packaging software is just another gigantic black art, and I didn’t even mention the joys of deciding what libraries to package, writing run scripts, making icons, etc. There are enough details to make your head spin. It’s all good stuff to learn, but I can’t wait to get back to building levels and art assets.

4 Responses to “Packaging Software”

  1. Gamood

    In debian Stable version (6.0.1 named Squeeze for the moment) there is a package called RPM to let us install RPM packaged software.
    So you needn’t worry yourself with the point deb stuff and can focus on the devoleppement of your admirable invention of the moment: I mean Retrobooster.
    I’m myself not a developper but I know little about the Debian community and I would be astonished if no body proposes his help for maintaining a package for you.
    Que la force soit avec toi.

  2. Thank you. That’s good to know. I have already moved on to nastier problems: some Windows installations are now telling me “The system cannot execute the specified program” when I try to run Retrobooster. It’s probably one of those horrible Windows runtime library conflicts, so I need to get some time to sort it out. …I’m still dying to make more levels instead of all this packaging madness.

  3. I should have written a follow-up to this a long time ago. That error I had in my previous comment is explained here and here. It is a nightmare bug in Visual Studio 2008 (VS9) that I couldn’t find until I had dug deep enough to start searching the web for the numbers 21022 and 30729.

    The heart of the problem is that VS9 generates executables that look for runtime DLLs of a different version than the standard redistributable DLLs. I found some suggested solutions online, but none of them worked for me. My solution was to upgrade to Visual Studio 2010 (VS10). VS10 has some new issues, of course, but I haven’t found any problems anywhere near as ridiculous and nasty as that bug in VS9.

  4. akaper

    Perhaps you should use openSUSE Buildservice to build packages for all major linux distro’s? Including Ubuntu, Debian, etc.? I know from others that they build packages there with great ease of use.

Leave a Reply