Похоже, вы уже решили проблему упаковки для Mac.
В Ubuntu вам нужно создать пакет .deb, содержащий ваше приложение и требующий в качестве зависимостей другие пакеты (Mono, Mono.WebServer2, GTK #, GTK + и т. Д.). Следующая ссылка поможет вам начать сборку пакетов Ubuntu:
https://wiki.ubuntu.com/UbuntuDevelopment
Для Windows вы, вероятно, уже знаете, как создать установщик, если у вас есть опыт работы с .NET. Я бы сказал, что вы захотите запустить свое приложение поверх .NET вместо Mono. Именно этим и занимается команда Mono (для примера MonoDevelop). Внедрите специфические для Mono биты, такие как Mono.WebServer2, в свое приложение.
Ваша самая большая проблема здесь заключается в том, что GTK # требует установки библиотек GTK + C. Вероятно, проще всего определить, установлен ли GTK # как часть установщика, и попросить пользователей установить GTK #, если он им нужен. В любом случае вам придется выполнить такое же обнаружение для требуемой версии .NET. Вы можете получить GTK # для Windows здесь .
У меня нет хороших инструкций для этого, но проекты Banshee и MonoDevelop делают это хорошо. Я бы посмотрел на эти проекты, так как они покажут вам, что именно нужно сделать.
https://github.com/mono/monodevelop
http://git.gnome.org/browse/banshee
EDIT:
Я только недавно понял, что код для установщика GTK # находится на GitHub здесь .