-
-
Notifications
You must be signed in to change notification settings - Fork 334
Publishing your app
Publishing your app can be quite different depending on the OS you're publishing to.
Simply compile your Wpf or Winforms project in the IDE of your choice, or compile it with dotnet build
from the command line.
Compiling for Windows can only be done from Windows. Mac and Linux are unable to compile Wpf / Winform projects.
Simply compile your Gtk project in the IDE of your choice, or compile it with dotnet build
from the command line.
Please keep the following notes in mind:
- If you compile from Windows, due to NTFS not supporting executable file bits, users will first have to mark the application as executable. This can either be done via a command line with
chmod +x MyApp.Gtk
, or by right-clicking -> Properties -> Permissions -> Mark as executable. - On distros using GNOME as their DE (Ubuntu, Fedora etc.) your icon will not be displayed unless you provide a .desktop file along with it. For details on how to write one, consult the following documentation pages:
- Users will have to install dependencies to run your program first. This includes: the .NET Core runtime version of the project you're using or mono if you're using .NET Framework,
gtk3
,webkitgtk
,openssl
,icu
andlibappindicator
. The latter 4 should be preinstalled on most distros, but this isn't a guarantee.
NOTE FOR DEBIAN USERS: Debian 11 "bullseye" removedlibappindicator
from their package repos, and their alternativelibayatana-appindicator
currently does not work with Eto. They can circumvent this by going here to either installlibappindicator
from there or follow the instructions listed there to add the "buster" repos to their package manager - If you want to package the dependencies with your app, you have a few choices:
-
Create distro-specific packaging formats.
- For .deb's (Debian and Ubuntu based) packages, you can consult this guide: https://www.internalpointers.com/post/build-binary-deb-package-practical-guide
Note that you likely need different .deb files for Debian and Ubuntu, due to them having different package names - For .rpm's (Red Hat based) packages, you can consult Red Hat's documentation: https://www.redhat.com/sysadmin/create-rpm-package
- For .deb's (Debian and Ubuntu based) packages, you can consult this guide: https://www.internalpointers.com/post/build-binary-deb-package-practical-guide
-
Create a universal packaging format:
- For AppImage, a one file click-and-run distribution method, see their guides here: https://github.com/AppImage/AppImageKit/wiki/Bundling-.NET-Core-apps
- For Flatpaks, a sandboxed environment for your application, install-able via a package manger, consult their guide here: https://docs.flatpak.org/en/latest/first-build.html
Note that on Linux it's preferred to not have duplicate dependencies. So while universal packaging formats with .NET Core bundled might be tempting, try to create distro-specific package formats that specify .NET Core as a dependency if it's possible. Unfortunately, this isn't always possible as some distos (Debian or Ubuntu for example) don't have it in their package repos.
-
Simply compile your Mac project in the IDE of your choice, or compile it with dotnet build
from the command line.
If you use a Xamarin.Mac project, it can only be compiled from MacOS.
If you compile from Windows, due to NTFS not supporting executable file bits, users will first have to mark the application as executable. This can either be done via a command line with:
chmod +x MyApplication.Desktop.app/Contents/MacOS/MyApplication.Desktop
xattr -c MyApplication.Desktop.app
In order to distribute your apps to run on the Mac they should be code signed and notarized. Details on how to do that via command line are here for code signing and here for notarization.
You should also package your app in a .dmg or .pkg for distribution. This site has some good details on how to do that.