Installer for Linux?

Started by
16 comments, last by Sik_the_hedgehog 9 years, 9 months ago

Hi everyone,

I have an application that we've sold for Windows for years, but we are just now launching a Linux version. It's a graphical .NET/mono application. We've released to partners/testers as a plain .zip containing just our application files. This means the users have had to run "mono <ourapp>.exe" in order to start it. This seems suboptimal.

What is the best way to release a closed source commercial app for Linux? What about adding entries to their application launcher of choice (ie kickstart menu on KDE or whatever)?

Advertisement

there are some different package managers out there that are used in various distributions.

So you should support these package managers.

debian/ubuntu

redhat

suse

are the one I know in a hurry.

As mentioned above, there are a few different package manager in use. You should at least support .deb, .rpm to target the most widely used distros (i.e. Ubuntu and Fedora). You can also provides packages for archlinux based distributions through the AUR.

For debian packages, I recommend using a PPA. There might be an equivalent service for building and distributing rpm but I personally don't know any (I am an arch linux user)

What about adding entries to their application launcher of choice (ie kickstart menu on KDE or whatever)?

You do that with desktop entries: http://standards.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html. This will work regardless of the desktop environment.

What is the best way to release a closed source commercial app for Linux? What about adding entries to their application launcher of choice (ie kickstart menu on KDE or whatever)?

Firstly, don't try to force a Windows-centric view of software distribution onto a non_window platform. That's like a book publisher finding they have a monster hit of English literature and look to expand their market to South America and ask how they can get all those people to learn to read English so they will buy the book. It tends to be the wrong question.

Part of the problem stems from the misbelief that Linux is an operating system. It's not, it's a OS kernel. The think people think of as 'Linux' is actually the distribution like Red Hat, Fedora, Debian, Ubuntu, SuSE, and myriad others: they're the OSes. You don't target to 'Linux' you target to a distribution. Few distributions are truly compatible at the package or binary level. Following the book simile, the publisher now wants to translate the work into South American to improve sales. The next step will be to complain that there should a central authority in South America to dictate what language people speak and that it should look and sound like English, just like Jesus used in the Bible.

Anyway, there are two approaches to commercial distribution on Linux.

(1) Use the native package manager for your target distribution. You'll want to specify a limited set of distributions you target, and make debs/rpms available. Users download and install the software using their native package manager, and your software uses the local version of dependent libraries. The package managers take care of making sure dependencies are installed and configured correctly. You still need to test on all your supported platforms. This is generally the preferred method.

(2) Use the Macintosh approach of creating a standalone bundle of everything you need (all binaries, executables, assets, shared libraries, the works). You will still need to specify a limited set of distributions you target and make the bundles available for download. You will probably need to write a bespoke installer, or at least a custom wrapper, and integrate it into the OS. You will still need to test on all your supported platforms. This is the method Steam uses for its games.

You should follow the freedesktop.org standards for integrating your stuff into the launch system(s). See ColinDuquesnoy's reply above.

Stephen M. Webb
Professional Free Software Developer

While I have not created installers with it, as a user I'm always happy to install software that's using http://nixstaller.sourceforge.net/. Works on every distro and can even create native packages for most of them so it plays well with the native package manager! Also handles dependencies in a slick way, only installing them if needed and putting them into their own directory to avoid conflicts on the host OS.

IMO it's very slick. Hopefully it's easy to use too smile.png

I'm preeety sure you can just get away with putting your stuff in /usr/share and /usr/bin. Then make a .desktop file so the application appears in the menu. It should work on most distros out there. Provide the regular .zip if the installer doesn't works on the user's *nix flavour.

"I AM ZE EMPRAH OPENGL 3.3 THE CORE, I DEMAND FROM THEE ZE SHADERZ AND MATRIXEZ"

My journals: dustArtemis ECS framework and Making a Terrain Generator


I'm preeety sure you can just get away with putting your stuff in /usr/share and /usr/bin.

I would hunt you down and kill you if you did that. The contents of /usr are exclusively the province of my package manager, and if you go mucking around in there, you will break something.

Realistically, your two options are to either (a) integrate properly with my package manager, or (b) provide your software as a stand-alone zip/tar archive with no system dependencies.

Tristam MacDonald. Ex-BigTech Software Engineer. Future farmer. [https://trist.am]


I would hunt you down and kill you if you did that. The contents of /usr are exclusively the province of my package manager, and if you go mucking around in there, you will break something.
Lets reach a compromise here, /opt ?

"I AM ZE EMPRAH OPENGL 3.3 THE CORE, I DEMAND FROM THEE ZE SHADERZ AND MATRIXEZ"

My journals: dustArtemis ECS framework and Making a Terrain Generator

I don't suppose there's by any chance some tool to create native packages from Windows/cygwin? That would have made my life soooooo much easier.

Installing into /opt currently seems like a rather reasonable approach since we currently need all files in the same directory. nixstaller seems pretty nice, but it bothers me somewhat that it hasn't really been updated since 2009. It also borders on the issue Bregma brought up, seems a bit like the Windows way of doing stuff.

I should probably mention that it's a development tool for rather advanced users, so it doesn't have to be super fool-proof.

Installing into /opt currently seems like a rather reasonable approach since we currently need all files in the same directory. nixstaller seems pretty nice, but it bothers me somewhat that it hasn't really been updated since 2009. It also borders on the issue Bregma brought up, seems a bit like the Windows way of doing stuff.

It is the Windows way of doing stuff, but most people won't care. The purists will, but they'll either reject your product because it's not Free or they'll be really vehemently vocal in forums on the internet but can be safely ignored. The rest just want to install and use your software and don't care about such issues.

The real danger/disadvantage to having a complete bundle is (1) you will have to take care of your own security updates -- only really an issue if you have networked functionality or protect user assets in some way, and (b) if you have any external dependencies at all (eg. C or other language runtimes) your product could break on the next system upgrade. Unlike Windows, most Linux distros upgrade on a regular basis.

It really sounds like the single bundle is your best option. It does work well for Steam, although they have their own installer and automated update mechanism to alleviate the problems I outlined above. Have you considered going through Steam?

Stephen M. Webb
Professional Free Software Developer

This topic is closed to new replies.

Advertisement