даже в винде привязка к расширениям делается в меню настроек системы. в инсталляторах это просто "удобняшка", не необходимость.
это тривиальная операция, одинаковая для любых программ. ее достаточно декларировать в манифесте, а не писать в каждом приложении какой-то код, имеющий право произвольно копаться в системных настройках.
если говорить конкретно о расширениях, привязка к обработчиков к расширениям -- следствие концепции "коммунальной" для всего софта "файловой системы", отраженной на уровне пользовательского интерфейса. то есть, к такой практике, когда все данные в системе представлены в виде разрозненных файлов, которые пользователь произвольно "просматривает" и "запускает".
люди давно привыкли к этой дряхлой парадигме, и даже воспринимают ее как единственно-возможную, а она ведь далеко не адекватна реальным потребностям, и создает массу проблем.
пользователь-то, фактически, имеет дело не с файлами и директориями, а с логическими комплексами прикладных данных, которые эти файлы худо-бедно пытаются представлять. с программными пакетами, с медийными или книжными библиотеками, с архивами переписки, с исходниками проектов, базами знаний и т.д.
в IT давно придумано множество более совершенных абстракций для этих задач, но на уровне ОС они до сих пор не поддерживаются. в силу косности разработчиков, массовые ОС в этом плане застряли в 60-х годах.
любой функционал, потребный программе, или предоставляемый самой программой, декларируется в манифесте (простого тектового формата). "даю/беру": название API, номер версии. все, ничего лишнего.