17

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

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

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

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

4 ответа4

17

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

Размер файла касается

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

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

Проблемы удобства пользователей

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

  • Установщики для сложных программ часто поставляются с опциями конфигурации, которые пользователь может настроить с помощью удобного графического интерфейса как части установщика. Посмотрите, например, установщики MySQL или SQL Server, которые могут пройти весь процесс настройки и запуска сервера базы данных, прежде чем вы даже нажмете "Завершить" в установщике.

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

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

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

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

Повышенные привилегии и специальные услуги

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

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

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

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

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


Выводы

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

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

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

4

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

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

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

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

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

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

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

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

зависимости

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

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

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

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

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

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

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

реестр

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

3

Процесс установки рассматривает эти пункты:

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

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

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

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

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

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

0

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .