Что на самом деле делает стандартная «установка»? - PullRequest
19 голосов
/ 27 октября 2009

Я более или менее программист-любитель и вырос в области программирования .NET ClickOnce.

Когда кто-то "устанавливает" программу, что на самом деле происходит?!

Также: некоторые маленькие приложения / инструменты просто запускаются из exe. Почему большинству программ нужен сложный процесс установки? Каковы преимущества, недостатки, плюсы и минусы? Установка обычно необходима или больше похожа на стандартную практику?

Извинения за дополнительные вопросы. Я просто надеюсь на более-менее понятное объяснение ключевых факторов простым языком.

Ответы [ 6 ]

30 голосов
/ 27 октября 2009

Вы действительно смотрите на множество унаследованных причин, которые все стали частью того, что стало стандартной практикой в ​​мире Windows.

Во-первых, некоторый контраст, потому что это не всегда так. «Приложение» в Mac OS X - это просто каталог с определенной структурой внутри, названный с расширением .app. Чтобы установить приложение, достаточно просто перетащить его (только значок приложения) в папку «Приложения», а удаление включает перетаскивание его в корзину. Вот и все, никакой необычный установщик не нужен (обычно).

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

Как правило, программа установки в Windows:

  • копирует файлы
  • регистрирует компоненты
  • устанавливает разрешения безопасности (при необходимости)
  • добавляет значки в меню «Пуск» и / или на рабочий стол
  • записывает дополнительные сведения в реестр, чтобы Windows указала добавить программу в «Установка и удаление программ»
14 голосов
/ 27 октября 2009

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

  • Изменение произвольных ключей в реестре до тех пор, пока оно не станет медленным и не заполнится битыми записями
  • Замена DLL одной древней версией, которую может использовать ваше программное обеспечение
  • Распространение как можно большего количества файлов в максимально возможном количестве мест
  • Создание сценария удаления для поддержания иллюзии, что пользователь может избавиться от программного обеспечения без переустановки ОС. В маловероятном случае, когда пользователь попытается запустить этот скрипт, вы можете научить его никогда не делать этого снова с такими вопросами, как «Файл .... может использоваться другими приложениями. Вы действительно хотите удалить его? Да / Нет / Возможно / Любой ответ / Все ответы верны "
  • Установка хуков в непонятных местах, чтобы ваше программное обеспечение работало при загрузке компьютера. Это может замедлить процесс загрузки, но ваше программное обеспечение запустится в одно мгновение, так что это небольшая цена за вас ...
  • Делать непонятные вещи, которые занимают много времени, но никто не может сказать, что вы делаете (что делает «Программа установки готовит установку» в течение 15 минут?)
  • Проверка наличия достаточного дискового пространства, но использование 32-битных целых чисел, чтобы убедиться, что его нельзя установить на диски емкостью 1 ТБ.
  • Важной задачей является сбой при установке и распечатка ошибки: «Установка не удалась. Это может быть связано с тем, что установлено антивирусное программное обеспечение. Пожалуйста, деактивируйте его и повторите попытку». Это гарантирует, что пользователи начнут не доверять своим антивирусам (особенно, когда установка завершится успешно во время второго запуска, так как скрытые ошибки в установщике не были вызваны), и многие из них забудут снова включить сканер вирусов или даже удалить эту чертову вещь.

    Авторы вирусов по всему миру тоже люди! Спам компенсирует большую часть трафика в Интернете, что должно означать, что это важно, и кто не хотел бы быть частью самого большого сообщества на земле? Кроме того, вы можете заработать большие деньги таким образом. Все что вам нужно это слабая совесть и / или какая-то криминальная энергия.

  • Очень важной частью вашего установщика является увеличение ключа реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-7-9-23-64738-1349283462-3754093625-4491\IsYourWindowWideEnough\NotGivenUpYetHuh\GoAway\ImportantSystemInformation\Let See How You Can Handle Spaces\DamnIGottaStopSincePathsCanHaveOnl\ReinstalCtr

    Этот важный системный счетчик поможет создать иллюзию нестабильности для пользователя, пока он не почувствует сильное желание переустановить всю систему. Это поможет профессиональной ИТ-индустрии продавать часы поддержки, продавать новые компьютеры, больше оперативной памяти, большие жесткие диски или новые версии Windows (они должны быть лучше, верно?).

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

2 голосов
/ 27 октября 2009

Причины использования "необычного" процесса установки

  1. для записи процесса установки так что это может быть воспроизведено (ремонт) или отменить (удалить)
  2. для выполнения действий beyons просто скопировать файл (создать ключи реестра, зарегистрировать компоненты, выполнить другие произвольные действия

В большинстве установок «стандартным» вариантом будет «установка всех битов, которые обычно требуются, в стандартном месте, например, в Program Files», без настройки, возможно, без включения некоторых функций экспертного уровня.

1 голос
/ 23 сентября 2012

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

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

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

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

Многие установщики в Windows предоставляют флаг /e или /extract. например setup.exe /e, чтобы разрешить извлечение содержимого архива без установщика, запускающего скрипт установки. Недавно мне нужно было просто сделать , что .

Сдвиги в мышлении

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

(я не знаю, сколько всего времени я потратил на установщиков, но это определенно порядка нескольких дней.)

Задачи, которые может выполнить установщик:

  • распаковка (часто с использованием экзотических архиваторов с высокой степенью сжатия)
  • обеспечение требований к оборудованию системы
  • обеспечение достаточного места на жестком диске
  • обеспечение требований времени выполнения программной платформы (например, «распространяемые»)
  • проверка обновлений программного обеспечения
  • загрузка программного обеспечения из удаленного хранилища
  • создание и / или обновление программных файлов и папок
  • создавать файлы конфигурации, записи реестра или переменные среды
  • установка драйверов программного обеспечения, монтирование или размонтирование устройств
  • повысить доступность для обычных пользователей, объясняя шаги установки, создавая ссылки, ярлыки
  • продвигать собственное программное обеспечение через закладки и т. Д. *
  • создает стимул для пользователя для фактического запуска программного обеспечения, представляя ключевые точки программного обеспечения во время установки, слайд за слайдом
  • создание дополнительного дохода за счет программного обеспечения
  • настройка модулей ядра и автоматически запускаемых компонентов (например, демонов, windows-сервисов)
  • автоматическое исправление программного обеспечения
  • настройка папки, файла и прав доступа пользователя
  • создание ссылок UUID для связи программного обеспечения с экземпляром установки и предотвращения переносимости

PS: Если вы можете вспомнить другие моменты, дайте мне знать, и я включу их.

1 голос
/ 27 октября 2009

Википедия сообщает нам , что типичный установщик создает или изменяет следующее:

  • Совместно используемые и не используемые программные файлы
  • Папки / каталоги
  • Записи реестра Windows (только для Windows)
  • Записи файла конфигурации
  • Переменные среды
  • Ссылки или ярлыки

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

1 голос
/ 27 октября 2009

Зависит от программы, которую вы устанавливаете. «Установка» может варьироваться от простого копирования (относительно небольшого) исполняемого файла в каталог до настройки общих библиотек, выполнения проверок уровня исправлений (я предназначен для работы на SP2 или выше - у меня SP2 или выше?) И изменения Конфигурация системы, либо для текущего пользователя, либо для всех пользователей. Большинство из них также регистрируют установку с помощью менеджера пакетов, чтобы вы могли легко удалить ее позже.

...