Skip to content

Publishing your app

Miepee edited this page Jan 18, 2022 · 6 revisions

Publishing your app can be quite different depending on the OS you're publishing to.

Publish for Windows

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.

Publish for Linux

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 and libappindicator. The latter 4 should be preinstalled on most distros, but this isn't a guarantee.
    NOTE FOR DEBIAN USERS: Debian 11 "bullseye" removed libappindicator from their package repos, and their alternative libayatana-appindicator currently does not work with Eto. They can circumvent this by going here to either install libappindicator 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:

Publish for Mac

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.