В чем разница между автономным исполняемым файлом и установленным исполняемым файлом?

В чем разница между автономным исполняемым файлом и установленным исполняемым файлом?

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

Это подводит меня к главному вопросу... какова цель процесса установки? Я имею в виду, помимо того, что, возможно,Реестр Windows. Однако, для практичности и целей использования, возможно иметь одну, независимую, автономную программу, которую можно запустить, сохранить в энергонезависимом хранилище и получить к ней доступ через файловую систему любого устройства, на котором она находится, и выполнить в ОС. Так в чем же проблема со всем этим "установить это", если множество отличных программ практически любого масштаба могут работать идеально без прохождения настройки установки? Это меня немного озадачивает, и помимо базы данных или других систем конфигурации метаданных/доступа, в чем здесь реальная разница, если последняя (установленный исполняемый файл) работает и работает так же, как и автономная?

Есть ли какая-то разница между неустановленной программой и установленной, о которой я не знаю?

PS: Это касается не только ОС Windows, но и любых других, реализующих аналогичную функцию.

решение1

Существует несколько причин, по которым программы поставляются в виде установщиков, а не отдельных исполняемых файлов:

Проблемы с размером файла

  • Программы со многими большими зависимостями могут объединять веб-установщики, которые загружают зависимости и размещают их в общем месте, так что они могут совместно использоваться несколькими программами. Например, DirectX — очень большая библиотека. Если бы каждая программа в вашей системе, которая зависит от DirectX, просто объединяла бы с собой всю среду выполнения DirectX, она бы занимала изрядное количество места. Это может показаться неважным в эпоху жестких дисков емкостью 4 ТБ, но учтите, что SSD-накопители намного меньше по емкости, и они начинают широко использоваться на ультрабуках, некоторые из которых имеют всего 64 ГБ памяти. И, конечно, есть много других общих библиотек помимо DirectX.

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

Вопросы удобства для пользователя

  • Установщики для очень больших программ, таких как Visual Studio и Microsoft Office, позволяют пользователю отменить установку определенных функций, если пользователь знает, что они ему никогда не понадобятся. Это имеет 3 потенциальных преимущества: сокращает потребление дискового пространства; может сократить время загрузки и потребление полосы пропускания, если установщик является веб-загрузчиком; и может уменьшить «беспорядок» и «раздутость» на компьютере пользователя, меньше меню «Пуск» / ярлыков на рабочем столе, меньше программ автозагрузки и т. д.

  • Инсталляторы для сложных программ часто поставляются с параметрами конфигурации, которые пользователь может настроить с помощью удобного графического интерфейса как части инсталлятора. Например, см. инсталляторы MySQL или SQL Server, которые могут провести вас через весь процесс настройки и запуска сервера базы данных еще до того, как вы нажмете «Готово» в инсталляторе.

  • Установщики могут запрашивать у пользователя требуемую информацию, например, лицензионные ключи, которые нужно ввести только один раз. Это может упростить дизайн самой программы и сократить количество действий, которые она должна выполнять и проверять при запуске. Это также приводит к тому, что пользователь уверен, что,один разпрограмма успешно установлена, она должна «просто работать» — в программе больше нет никаких «подводных камней», которые могли бы помешать ее использованию.

Проблемы совместимости

  • Некоторые программы конфликтуют с другими программами. Это простой и досадный факт программной инженерии. Перед установкой программы, которая известна конфликтами с другими программами, часто бывает полезно сначала проверить систему, чтобы увидеть, установлена ​​ли несовместимая программа. Затем пользователь может быть предупрежден, если это так. Например, в старых версиях VMware и VirtualBox существует очень опасный потенциал несовместимости, который приводил к синему экрану смерти, поскольку одна программа пыталась использовать специальную инструкцию процессора виртуализации после того, как она уже была зарезервирована для пользователя другим продуктом. Если бы вы просто предоставили конечный продукт пользователю без установщика, вам пришлось бы проверить наличие несовместимых продуктов накаждыйзапуск вашей программы, что может замедлить запуск программы.

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

Повышенные привилегии и особые услуги

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

Приведя все эти причины, по которым инсталляторы полезны, вот несколько наблюдений с другой стороны:

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

  • В операционных системах, отличных от Windows, почти всегда можно просто загрузить (или скомпилировать) программы и запустить их как обычный пользователь, без получения root. Есть несколько исключений в отношении пакетов, которые являются основной частью операционной системы, но для большинства пользовательских приложений вы можете запустить их в своем домашнем каталоге, не устанавливая их на всю систему с помощью менеджера пакетов. Windows — это немного особый случай, поскольку большинство настольных программ в Windows имеют установщик и обычно не могут быть установлены каким-либо другим способом.

  • Даже на платформах, отличных от Windows, программы, которым нужна возможность загружать модуль ядра, поставляются с каким-то установщиком, который компилирует модуль ядра и устанавливает его в нужную директорию. Вы также можете ожидать увидеть установщик в случае, если программа являетсядемонкоторый будет запущен с использованием скрипта системной службы, например, в /etc/init.d. Этот тип «упакованного двоичного файла» является менее распространенным методом распространения в GNU/Linux, но большинство дистрибутивов Linux по-прежнему предоставляют большую часть программного обеспечения в виде устанавливаемых пакетов, каждый из которых требует доступа root (доступ администратора) для установки.


Выводы

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

Использовать установщик или нет — это вопросвыборчто производители программного обеспечения должны сделать. Есть преимущества и недостатки использования установщика. Многие поставщики предпочитают распространять свое программное обеспечениеобакак установщик,икак автономный двоичный файл или, по крайней мере, как ZIP-файл, который можно просто распаковать и запустить. Для программного обеспечения, которому не требуется установщик, это очень прагматичный способ, который делает всех счастливыми. Обычно программное обеспечение, которое не поставляется в какой-либо иной форме, кроме как с установщиком, — это программное обеспечение, которому требуются административные привилегии для установки некоторых своих компонентов, поскольку установщик — это самый элегантный способ получить необходимые привилегии.

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

решение2

Процесс установки учитывает следующие пункты:

  1. установлена ​​ли у вас необходимая библиотека (API), например версия .net framework или Direct X.

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

  3. Установите ярлыки в меню «Пуск» или на рабочий стол, чтобы быстро запускать приложения.

  4. Как вы сказали, изменение реестра. Этот шаг на самом деле может быть выполнен, когда приложение впервые запускается на этом компьютере, так что это не особо важно.

  5. очень важно: следует ли встраивать программное обеспечение (например, панель рабочего стола Google или панель Yahoo! в ваш IE). Это способ, которым множество независимых программных продуктов приносят доход разработчику. Не забывайте об этом, если вы используете бесплатное программное обеспечение.

Поскольку мы рассматриваем «исполняемое» приложение, нам нет необходимости обсуждать шаги, которые могут установить надстройку IE или связанные с ней вещи.

решение3

Автономная программа не имеет внешних зависимостей.

Это не обязательно должен быть только файл .exe, он может иметь сопутствующие библиотеки и файлы данных: Распакуйте архив в папку и запустите исполняемый файл. Если вы просто распакуете архив, ярлык в меню «Пуск» не добавляется, поэтому вам придется перейти в папку, где находится распакованное приложение, и запустить его оттуда, или вручную создать для него ярлык в меню «Пуск». Многие пользователи компьютеров считают это сложным.

Проще в использовании

Установщик проводит пользователей через процесс установки. Вы скачиваете установщик, .exe или .msi (первый предпочтительнее для непродвинутых пользователей), и запускаете его. Он выбирает папку установки, обычно в Program Files, копирует файлы, создает ярлык в меню «Пуск». Все готово: в большинстве случаев вы просто нажимаете «Далее» несколько раз.

Затем перейдите в меню «Пуск» и запустите приложение. Некоторые установщики предоставляют возможность запустить приложение после завершения установки.

Если приложение открывает файлы или документы определенного типа, установщик регистрирует его в оболочке. Так что вы можете щелкнуть файл, чтобы открыть его.

Лицензионное соглашение

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

Зависимости

Иногда недостаточно просто скопировать исполняемые файлы. Приложения часто используют общие компоненты или специальные библиотеки времени выполнения. Например, для запуска приложения, написанного для .Net, необходимо установить среду выполнения .Net Framework; даже среда выполнения Visual C++, если она не связана статически, должна быть установлена. Установщик заботится о том, чтобы все зависимости были удовлетворены.

Если приложение состоит из нескольких файлов .exe и/или .dll, динамическое связывание с исполняемой средой Visual C++ сокращает дисковое пространство. Если .exe и .dll статически связаны, то исполняемая среда дублируется в каждом файле.

Условия лицензии библиотеки могут не допускать статического связывания.

Безопасность

Если уязвимость обнаружена в среде выполнения, ее можно обновить отдельно от приложения. Обновления для .Net и среды выполнения Visual C++ устанавливаются автоматически через Центр обновления Windows.

Если исполняемые файлы и библиотеки статически связаны, то поставщик приложения должен перекомпилировать приложение и выпустить обновленную версию. Таким образом, использование общей среды выполнения снижает стоимость обслуживания приложения для разработчиков и поставщиков.

Установка Program Filesтакже обеспечивает более безопасную среду: файлы там не могут быть изменены или удалены без прав администратора.

Реестр

Многие приложения Windows полагаются на записи в реестре. Если приложение использует COM, все объекты должны быть зарегистрированы, иначе приложение не сможет создать нужный объект и не запустится.

решение4

Краткий ответ: для запуска автономного exe-файла не требуется установка на компьютер никаких библиотек, а также записей в реестре или других компонентов.

Установленный файлможетбыть автономным в пакете установки, но, как правило, зависит от множества компонентов и библиотек, установленных вместе с ним.

Во многих случаях черезУниверсальный экстрактор(неофициальное обновление:здесь), вы можете извлечь содержимое установщика и запустить программу без административных привилегий в Windows. Установщики MSI можно распаковать с помощьюlessmsi.

В большинстве других операционных систем все программы можно запускать без привилегий root/администратора, через пользовательские 'bin', 'lib' и другие каталоги в домашнем каталоге. Лично я большую часть времени презираю установщики, потому что они затрудняют мне использование программ без административных привилегий, когда у меня их нет. Но они упакованы таким образом крупными компаниями, чтобы упростить процесс для среднего конечного пользователя.

Связанный контент