Спрятать панель инструментов
Вспомогательный блок сверху Вспомогательный блок слева Вспомогательный блок cправа Спрятать вспомогательный блок
Вспомогательный блок сверху Вспомогательный блок слева Вспомогательный блок cправа Спрятать вспомогательный блок
Показаны сообщения с ярлыком универсальные инсталляторы. Показать все сообщения
Показаны сообщения с ярлыком универсальные инсталляторы. Показать все сообщения

пятница, 11 декабря 2009 г.

Размышление о разных форматах исполняемых файлов и инсталляционных пакетах для разных платформ, и способе их унификации для всех платформ

Вы никогда не использовали одну и ту же программу одновременно под разные Операционные Системы?

Если да, то вам тоже наверно приходило в голову как хорошо было бы,если бы нашлись добрые люди и создали мультиплатформенный бинарный формат, мультиплатформенный инсталлятор программных пакетов(пакетный менеджер) и мультиплатформенные пакеты с драйверами.

Вначале о мультиплатформенных бинарниках.Представьте себе что бинарник программы(или динамической библиотеки) - это файловый контейнер в котором для каждой из процессорных архитектур есть свой каталог, в котором с свою очередь находятся модули написанные под разные ОС + код общий для разных ОС в особом бинарном формате.

Тогда всё что нужно пользователю для запуска такой программы - это установить один раз некую программную платформу для запуска таких мультиплатформенных бинарников.

В роли контейнера вполне сгодится zip архив с директориями и XML(или JSON) файлом для служебной информации.

Платформа для запуска нужна нужна чтобы:

  1. Открыть файловый контейнер.
  2. Прочитать служебную информацию из XML файла.
  3. Если есть модули с совместимой с нашим железом и ОС архитектурой, переходим к п.4
  4. Если есть все необходимые пакеты и модули для запуска системы - запускаем программу, нет переходим к п.5
  5. Открываем пакетный менеджер и предлагаем установить необходимые модули с подключенного носителя с ПО или сайтов с репозиториями.
Так же можно создавать инсталяционные пакеты, где будут дополнительные  служебные данные о системных требованиях, лицензии и входящих в состав программного продукта пакетах и сторонних зависимостях и рекомендованном дополнительном ПО.

При запуске такого инсталлятора можно запустить инсталляционную программу из недр пакета, установить в изолированное окружение для избежания проблем с безопасностью и конфликтом версий библиотек и пакетов , и наконец просто запустить пакетный менеджер для того что бы пользователь выбрал только  необходимые ему пакеты и модули или доустановил что нибудь для своего пользователя или всей системы.

О драйверах.
Как известно драйвера делятся на  модуль ядра и(или) юзерспейс слой, а также утилиты для конфигурирования данного драйвера с набором документации.

Драйвера режима ядра собственно содержат код специфический для устройсва,файловой системы и т.п. и код специфичный для ядра ОС.

Так вот чисто машинный код можно теоретически использовать отдельно от специфического для ядра/ОС кода. Он практически аналогичен для всех ОС на одной аппаратной платформе. Всё что надо это прослойка между специфичным для ОС кодом и специфичным для железа или ФС кодом.

А для запуска кода программ, неспецифичного для конкретной ОС или железа можно добавить такие архитектуры как LLVM,.NET/Mono или другой платформы способной запускать код в VM или транслировать его на лету в нативный код.

В общем я надеюсь что когда-то пользователи смогут импользовать один исполняемый файл, один инсталляционный пакет для разный платформ, не заморачиваясь такими тонкостями как зависимости,тип ОС или железа и прочей чушью, а просто один раз написанную/приобретённую программу сможет установить и запустить везде, где позволят аппаратные требования.

У каждой ОС свой формат инсталляционных файлов, а то и несколько как в Linux(deb,rpm,tgz и прочии) и Windows где есть MSI, а также целый зоопарк инсталлеров в формате исполняемого файла.Среди последних Install Shield,NSIS,Inno Setup,Create Install и прочих.

И у каждого из этих типов инсталляционных файлов свой GUI, свои специфические моменты которые очень путают новичков,внося разброд и броженние в их головы.

Я думаю пришло время изменять ситуацию, стандартизировать этот процесс.Ведь без свободного обмена данными и унификации разработок огромные силы, гигантский творческий потенциал просто распыляется в никуда, а ведь эти изобретатели велосипелов могли бы придумывать новые интересные программы и концепции, обогащая всемирный фонд программного ПО.

Сторонникам чистых native решений я заявляю, что не в коей мере не призываю к уничтожению старых нативных решений, а лишь призываю к созданию ещё одного, более user friendly решения, к котором также будут заинтересованны системные архитекторы, системные администраторы, а также те кто работает с корпоративным ПО.

Кроме всего прочего файловый контейнер можно шифровать при помощи файла-ключа и таким образом зашитить проприетарные разработки от посягательств пиратов. В принципе ключи вообще могут находиться на серверах ключей компании производителя, или специальных девайсах, заточенных под конкретного пользователя, например его отпечаток, голос или (в будущем)ДНК.

В общем от таких решений выиграют и производители ПО, и пользователи, и корпоративный сектор, так что я верю что рано или поздно это станет реальностью.И подвижки в виде отдельных идей уже витают в воздухе.Ну а пока это просто моя мечта,к сожалению:(