Why so many steps to create

I have 3 C++ cli ( yes no desktop gui involved) applications I want to use on different linux machines.
The running targets are Debian stable, testing and fedora.

Once I cmake them, I get the binaries, as expected.

Now, I wonder why so many manual steps are required to create an Appimage from the fresh and running binary.

Why isn’t there an automatic tool
Doing like so:
Appimage -i my_executable -o myappimage ?

Too many steps, too many ways… you already have all the info as far as deps are involved.

A single line creation in the terminal would be great.

I don’t want to use docker.
I just would like a simple command and be done with it.

There are some very easy to use tools to create AppImages such as linuxdeploy. More information is needed as AppImage isn’t just an executable, it’s a distribution format, this requires a desktop file, icon, etc.

Docker tends to be used because AppImages are expected to work on old but still supported distros and as glibc lacks backwards compatibility, Docker makes it easy to fire up an older distro to build on. Other options would be to package everything (including glibc) or using Musl and building statically. I personally like using DistroBox for this as it’s very well integrated with your base system and easy to use for both building and testing.

If you want a very barebones AppImage, you could make a simple AppDir containing your icon and desktop file, then use a script in cmake to move your binary to AppDir/AppRun. Any distribution format whether it’s rpm, deb, AppImage or FlatPak requires setup of some sort.

Actually, the cli are binaries we develop in local and send to our servers, so we have total control of what’s going on and no need for a complex infrastructure.

It’s just that I don’t want to care about the system it’s sent to. The remote server just place it in a specific location and execute it in a thread.
I just want the app to behave exactly like in local.

I read about appimage builder. It looks interesting. It may be easier than linux deploy no?

I want a no headeache deploy logic for our specific use case.

I don’t really use any builder tools (besides AppImageTool) currently so I couldn’t tell you which ones are the easiest. Since in your case you’re keeping everything local, it might be easiest to just make an AppDir manually.

Here is a stub from the build script of one of my projects that you might be able to use for inspiration. Yours could be much simpler as the only required parts for the AppImage are the desktop file, “AppRun” (either a launch script or a link to your binary) and an icon that matches the information in your desktop file (eg: Icon=myapp) would require myapp.svg or myapp.png.

Thanks! I will try that.
Crossing fingers

1 Like

Did it end up working for you?

I ended up statically compiling my app directly, without Appimage :thinking:

For my needs, it was the cleanest actually…