Pack mono gtk-sharp application as AppImage

Hello everybody,

I’m developer of AudioCuesheetEditor https://sourceforge.net/p/audiocuesheet and would like to pack my application as an AppImage, but don’t know, where to start. I use fedora 28 with KDE environment.
To the application: It’s a mono gtk-sharp application, which also needs external libraries (SFML,CSFML,etc).
I’m not completely new to packaging, I also provided fedora RPMs some time ago, but now I would like to do the packaging more distribution open, so that’s why I’m here. I would like to deploy pre build binaries, what is the best way to do so? Is there some kind of spec to write? How do I get an AppImage?

Thanks for your help.
Sven

I haven’t packaged anything myself in AppImage format, but unless I’m wrong, AppImageKit is where you should start, specifically the appimagetool section on the Readme.

As for Mono, I am really not an expert on it but there are some notes on https://github.com/AppImage/AppImageKit/wiki/Bundling-Mono-apps.

Perhaps @Juniorsnet knows more.

Well thanks for your response. I’m not familiar with AppImage, so where do I start? I also read about the appimagetool, but how do I install it? And how do I use it? There must be some kind of specification, to tell the tool how to bundle my binaries, or am I missing something?

Please see https://github.com/AppImage/appimagekit/wiki and please let’s know here if you are missing any information thereafter. Thanks.

Maybe this script can help: https://gist.github.com/darealshinji/67b7705d186a5e4bc8e0438aa339b7a1
I have also mentioned this here: https://github.com/AppImage/AppImages/issues/332#issuecomment-393499284

Thank you. Very helpful.

To everyone packaging Mono/Gtk# applications as AppImages, please let us know here.

Maybe using dotnet publish would work?

See this .NET Core AppImage example of how to deploy .NET Core (Mono) applications as an AppImage using dotnet publish -f netcoreapp3.1 -r linux-x64 from within a .cs program.

If someone would like to try Mono/Gtk# application, it would be nice to package Pinta image editing program from https://www.pinta-project.com/releases/

It is already available as Snap and Flatpack package, but no AppImage yet.

Hey everyone I made SDL2-CS with Dotnet 3.1 ( netcoreapp3.1 ) = it works fine without requirements like ( filename ).so not found

If you want know to copy from installed or compiled libSDL2 libraries

Example: cp -a /usr/lib/(arch)-linux-gnu/libSDL2^ PATH-TO-AppDir/lib/(arch)-linux-gnu/

For published minimal Dotnet final application as
mkdir PATH-TO-AppDir/DotNetApp
And copy file contents from publish directory to DotNetApp than you know how did somebody like mono’s appimage LD_LIBRARY_PATH for finding with libSDL2 libraries.

It is really easy to bundle with AppImage

Hi @DeafMan1983, welcome to AppImage.

So you succeeded in making an AppImage of your project? Is it available for download somewhere? Then I can put it through our automated compatibility test.

Hey @probono, thanks for welcome!

Oh sorry I forget that. I will create one and I will show ok… sorry for late time.

UPDATED: I want show an example MonoRuntime ( 5.20.1 include Gtk#2 and Gtk+2 packages ( without themes and Stock images ) But I want try if it works as well. Check Google Drive

// EDIT: Remember that if you want completed Gtk2 runtime then you need share folder for themes, icon and stick images and make default theme like

Gtk.Settings.Default.ThemeName = "Xamarin-Dark";

And make sure compile and bundle in AppImage. Thanks!

// EDIT 2:
Yaaayyy I am very excited to make AppImage with Pinta = SUCCESSFULLY = Click Here!
PS Please tell Pinta Development! I made simple AppImage ( Include Package installation from Ubuntu or newest version with Pinta and Mono Runtime 5.20.1 with Mono.Addins 3 files and Gtk2 Packages with Icons ) If you have problem then you can try with appimage file --mount … If youz can change icons and theme as default…

Enjoy bundling and embedding AppImage

@DeafMan1983, I downloaded Pinta from your “EDIT 2” link from your above post and then on Ubuntu 20.04 I executed commands:
chmod a+x Pinta
. /Pinta
and I’ve got error message:

/tmp/.mount_Pinta2GPOIa/MonoRuntime/bin/mono: symbol lookup error: /tmp/.mount_Pinta2GPOIa/MonoRuntime/bin/mono: undefined symbol: clock_getres, version GLIBC_2.2.5

Do I need anything else to do?

Ah you use Ubuntu 20.04. Mono need compatible for Ubuntu 20.04 because I use Momo for Ubuntu 18.04.x. You should unpack to Pinta.AppDir and download Mono Runtime Raw version ( Minimal package ) for Ubuntu 20.04 x64 then you copy 3 bin, etc and lib to Pinta.AppDir/MonoRuntime then download appimagetool and type ,/appimagetool Pinta.AppDir Pinta and try your Pinta

I am not very familiar with AppImage, but if I understand correctly AppImage is Linux distribution and version dependent? For example Pinta’s AppImage should be build for multiple Linux distributions/versions in separate process one for each distribution/version?

AppImages will run on all systems that are as new as or newer than the system the binaries that went into the AppImage were built on.

Exception: AppImages that bundle everything, including glibc. Those can also run on older distributions than the one that was used for building what went into the AppImage.

[quote=“DeafMan1983, post:13, topic:402”]
Yaaayyy I am very excited to make AppImage with Pinta = SUCCESSFULLY = Click Here !
PS Please tell Pinta Development![/quote]

Great success! :+1:

Best contact them directly:

Build on Ubuntu xenial, which is currently the oldest still-supported Ubuntu release.

Is this also the case in Pinta build by @DeafMan1983? He build Pinta on Ubuntu 18.04 where allegedly working fine, but I am using Ubuntu 20.04 and appimage package does not work. Am I missing something?

Can someone build Pinta to work on Ubuntu 20.04? I am not a developer, just end-user.