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


17

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

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

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

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

Ответы:


16

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

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

  • Программы с большим количеством больших зависимостей могут объединять установщики на основе Интернета, которые загружают зависимости и размещают их в общем расположении, так что они могут совместно использоваться несколькими программами. Например, 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-файла, который можно просто распаковать и запустить. Для программного обеспечения, которое абсолютно не требует инсталлятора, это очень прагматичный путь, который делает всех счастливыми. Обычно программное обеспечение, которое поставляется не в какой-либо иной форме, кроме как с установщиком, является программным обеспечением, которому требуются административные привилегии для установки какого-либо компонента, поскольку установщик является наиболее элегантным способом получения необходимых привилегий.

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


Отличный ответ, но ваше открытие с DirectX и временем выполнения не имеет смысла. Прежде всего, единственная среда выполнения DirectX находится на языке, на котором она написана сама по себе, а именно C.

@ TomTurkey Хм ... что? Почему важно, на каком языке он написан? Конечно, вы можете статически связать любые компоненты DirectX, которые вам нужны, прямо в ваш исполняемый файл, но, как я уже сказал, это создает проблему с размером файла, если многие программы начинают делать это с большими библиотеками (например, Qt 4.x работает около 40 МБ). ). Код должен быть где-то, и вы не можете просто предположить, что нужная версия DirectX уже установлена ​​в системе, или вы получите сообщение об ошибке, когда кто-то откроет вашу программу в Windows XP SP2, которая не была исправлена ​​в возрастов.
allquixotic

4
О, я думаю, вы меня не так поняли - в моем ответе я не говорил об установке DirectX ; Я говорил об установке программы, которая зависит от DirectX. Чтобы удовлетворить эту зависимость, вы можете либо скомпилировать DirectX непосредственно в свое приложение, увеличивая тем самым потраченное впустую дисковое пространство, либо добавить в приложение небольшое приложение, которое проверяет, установлены ли у вас подходящие среды выполнения DirectX, и, если нет, загружает их и помещает их в централизованное системное местоположение. Последний намного более эффективен с точки зрения дискового пространства и размера загрузки.
allquixotic

3
@allquixotic Кроме того, лицензирование. Иногда библиотека может не лицензироваться для распространения независимо от ее установщика. DirectX может попасть в категорию, я не уверен. .NET Framework делает, я думаю. Это не техническое ограничение, а юридическое. (Однако .NET Framework имеет дополнительные технические ограничения. Он довольно тесно интегрирован в ОС.)
Боб,

1
Boop . Звук комментария В моей голове.
Allquixotic

3

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

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

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

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

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

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

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


3

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

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

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

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

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

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

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

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

зависимости

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

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

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

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

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

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

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

реестр

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


1
+1 за обновления безопасности для общих компонентов - я не думал писать это в своем ответе.
allquixotic

0

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

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

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.