v1.2.3 released

Distribute .NET MAUI Apps on Linux Effortlessly

One command from csproj to distributable: openmaui-appimage --project ./MyApp publishes your app, fetches the tooling, and produces a universal AppImage with a built-in installer — plus host-dependency checks, GPG signing, self-update support, and AppStream metadata when you want them.

terminal
$ dotnet tool install --global OpenMaui.AppImage && openmaui-appimage --project ./MyApp
1 Command
Csproj to AppImage
Zero Root
Access Required
Zero Setup
Tooling Auto-Fetched
103
Automated Tests

Why AppImage for .NET MAUI?

One Command, Zero Configuration

openmaui-appimage --project ./MyApp runs dotnet publish itself, derives the name and version from your csproj, auto-detects the executable and icon, and downloads appimagetool on first use. No AppDir hand-crafting, no config files.

Universal Linux Compatibility

A single AppImage runs on virtually any distribution — no dependency conflicts, no root, no installation. Works in FUSE-less containers and CI out of the box, and can package existing .deb contents or FHS trees too.

A Real Installation Experience

First-run installer dialog with install, reinstall, and uninstall. Launcher entry with a right-click Uninstall action, icons, taskbar integration — and an optional launch-time check that tells end users exactly which host packages to install if something is missing.

Features

One-Command Packaging

Point at a csproj and get an AppImage: publish, asset detection (ELF or runtimeconfig, MauiIcon compositing), AppDir, desktop file with correct StartupWMClass, and installer — in a single invocation. Two-step --input mode remains for custom publish flags.

Host Dependency Intelligence

Scans your app for OpenMaui feature packages and reports the host libraries each needs — GStreamer for MediaElement, libcups for printing, appindicator for tray, WPE WebKit for the WebView and BlazorWebView (required when the Blazor package is present) — with exact Fedora and Debian package names, including the Fedora COPR step WPE needs. Optionally bakes a friendly launch-time check into the AppImage.

Self-Updating AppImages

Embed zsync update information with --update-info and shipped AppImages can update themselves via AppImageUpdate — binary-delta downloads, no reinstall.

Signing and AppStream Metadata

GPG-sign releases with --sign, and generate AppStream metainfo with --metainfo for software-center listings — reverse-DNS app-id validation included.

CI-Ready by Design

Auto-detects missing /dev/fuse and switches appimagetool to extract-and-run; --no-fetch forbids network for locked-down runners. Also packages .deb contents and FHS trees (Tauri, Electron) via --appdir, and outputs Flatpak with --format flatpak.

Written for Humans and AI Assistants

A copy-paste-exact packaging guide ships in the repo — commands, options, recipes, verification steps, and troubleshooting — designed so an AI coding assistant working in your project can package your app correctly on the first try.

Ready to simplify your Linux distribution?

dotnet tool install --global OpenMaui.AppImage, then one command packages your app with installer, dependency checks, signing, and self-update. MIT licensed.

Install the Tool

How it compares

General-purpose AppImage tooling is excellent at what it does — openmaui-appimage builds on appimagetool and specializes the whole workflow for .NET MAUI, so the .NET-specific steps disappear.

openmaui-appimage appimagetool (manual) linuxdeploy appimage-builder
.NET workflow
One command from csproj Yes - - -
Runs dotnet publish itself Yes - - -
Name/version derived from csproj Yes Manual Manual Recipe
Executable and MauiIcon auto-detection Yes Manual Partial Recipe
OpenMaui host-dependency report and launch check Yes: GStreamer, CUPS, tray, WPE WebKit (WebView, Blazor), with distro package names and the Fedora COPR step - - -
End-user experience
Built-in installer dialog Yes - - -
Install / reinstall / uninstall flags Yes - - -
Right-click Uninstall launcher action Yes - - -
Desktop entry with correct StartupWMClass Generated Manual Generated Generated
Distribution and CI
zsync self-update embedding One flag Manual flag Env var Recipe
GPG signing One flag Manual flag Manual Recipe
AppStream metainfo generation Generated Manual Manual Manual
FUSE-less containers/CI Auto-detected Manual flag Manual Yes
Tooling auto-fetch Yes - - -
.deb / FHS tree repackaging Yes Manual AppDir Manual AppDir Yes
Flatpak output Yes - - -
Guide written for AI assistants Yes - - -