Это текст про то, как работают компьютеры. Никакой сиюминутной практической ценности, просто расширение кругозора. Будете ходить и унижать всех своим кругозором.
Когда мы устанавливаем новую программу на компьютер или телефон, чаще всего это происходит так:
- Мы запускаем установщик программы.
- Он что-то там делает и иногда спрашивает у нас всякое ← про это мы и будем рассказывать.
- В конце сообщает, что программа готова к работе. Часто она действительно готова.
Иногда программу можно запустить и без установки, про это тоже поговорим.
Что такое установщик и что он делает
Для работы программы ей чаще всего нужны дополнительные библиотеки, драйверы, базы данных, компоненты или просто внутренние служебные файлы. Всё это нужно разложить по разным местам в операционной системе: драйверы к драйверам, библиотеки к библиотекам, создать новые папки для служебных файлов. Чтобы всё это оказалось в правильных местах, нужно составить список, что куда копировать и в каком порядке.
Ещё часть этих файлов нужно зарегистрировать в системе — без этого она не поймёт, что у неё появились новые библиотеки, которыми можно пользоваться. Для этого тоже нужен отдельный список — что регистрировать и как.
Иногда части программы нужно скачать из интернета (или даже всю программу целиком). Например, когда вы скачиваете установщик «Фотошопа» последней версии, на самом деле вы скачиваете скачивальщик. И уже скачивальщик скачивает «Фотошоп» и устанавливает его куда нужно.
Получается, что для установки программы нужно:
- скачать недостающее;
- создать новые папки;
- скопировать файлы;
- зарегистрировать файлы, чтобы компьютер мог ими пользоваться;
- обновить настройку системы.
Чтобы всё это сделать, нужна отдельная программа, которая возьмёт это на себя, — это и есть установщик.
Как сделать установщик
Установщик можно написать с нуля на любом языке под нужную вам платформу. Но так делают редко.
Чаще разработчики используют один из общепринятых установщиков: там нужно прописать нужные параметры, положить внутрь нужные файлы, и дальше установщик сделает нужную работу сам.
Из популярных решений автоматических установщиков вы наверняка помните InstallShield или Wise. А так их два-три десятка.
Автоматические установщики возможны благодаря тому, что для установки программ нужны примерно одни и те же действия: копирование файлов, создание ярлыков, работа с реестром и библиотеками. Для чего-то, что требует более глубокой работы с системой, потребуются более сложные решения.
Что проверяется перед установкой программы
Задача установщика — проверить все доступные ему параметры компьютера и убедиться, что они соответствуют требованиям программы.
Тип процессора — если программа написана для ARM-процессоров, а на компьютере стоит x86, то программа просто не запустится.
Архитектура — некоторые производители софта делают только 64-битные версии своих приложений. Это значит, что для доступа к памяти и внутренним ресурсам они используют адреса, которые состоят из 64 бит. Но если на компьютере стоит 32-битная операционная система, то такая адресация может вызвать ошибки.
Версия операционной системы — иногда на компьютере стоит слишком старая или просто неподходящая версия, с которой программа не сможет работать.
Свободное место — установщик заранее проверяет, что на выбранном диске достаточно места для копирования всех файлов.
Права доступа — может оказаться так, что у пользователя, в чьём аккаунте происходит установка, не хватает прав на создание папок в системных разделах.
Зависимости — в системах, где есть менеджер пакетов (например, в Linux и Mac OS), установщик проверяет, есть ли все необходимые пакеты, от которых зависит работа основной программы. Если нет — он попробует их скачать и установить.
Запуск без установки
Есть программы, которые не требуют установки и запускаются из любого места — для работы им не нужно дополнительных файлов или библиотек. Обычно это или простые утилиты для настройки конкретных параметров компьютера или небольшие программы, которые делают что-то одно.
Ещё есть portable-версии программ — в них все файлы и настройки собраны в одной папке. Её тоже можно скопировать куда угодно и запустить софт без полноценной установки на компьютер.
А в Mac OS можно просто перетащить иконку мышкой, и всё будет работать
Да, но не всё так просто.
Внутри любого приложения содержится специальный файл — в нём прописаны настройки и изменения, которые нужно внести в систему. Благодаря этому компьютер, например, начинает открывать в этой программе нужные файлы и понимает, что туда можно отправлять файлы из других программ. Когда мы перетаскиваем файл, система залезает внутрь файла, находит эти настройки и применяет их.
Получается, что в MacOS установщик тоже есть, просто он невидимый и включается в момент, когда мы перетащили приложение в нужную папку.
Также нужно понимать, что технически приложения MacOS — это не исполняемые файлы, а папки. Внутри этой папки лежит исполняемый файл программы и все дополнительные ресурсы. Для пользователя эта папка выглядит как единый объект, который можно запустить, но на самом деле это умный пакет файлов.
Облачные установщики и маркетплейсы
В последние 15 лет развивается технология облачных установщиков: когда вы говорите, какой вам нужен софт, а установщик сам его скачивает и устанавливает. Примеры — Native Access, Waves Central, Steam и Adobe Creative Cloud.
По тому же принципу работают магазины приложений — App Store, Play Market, RuStore. Вы регистрируете аккаунт, привязываете к нему приложения, и они будут доступны на всех ваших устройствах.
Плюсы таких установщиков в том, что они позволяют привязать весь ваш софт к аккаунту, скачать его на любой компьютер, легко всё обновлять и следить за подлинностью. Например, если вы дизайнер и пользуетесь программами Adobe, на новом компьютере вам достаточно установить один облачный установщик Creative Cloud, а дальше он сам установит вам весь ваш рабочий софт.
Минусы в том, что эти облачные системы часто висят в памяти, мешают установке нелицензионного софта и могут закрыть вам доступ к программам по своему желанию. Одно дело — вы поставили на компьютер «Фотошоп» и он просто работает. Другое дело — когда он при запуске звонит на сервер Adobe и просит разрешения на работу.
Насколько безопасны установщики?
Строго говоря, установщики небезопасны: это программы, которые вносят непонятно какие изменения в вашу систему. Если вы запустили установщик и дали ему право распоряжаться вашей системой, дальше вам остаётся только надеяться на добросовестность разработчиков.
Например, одно время при установке Torrent-клиента uTorrent в процессе вам ненавязчиво предлагали установить кучу другого софта, не всегда нужного. Если вы прокликали установщик не читая, то после установки у вас появлялось много неожиданного софта на компе. Хорошо, если вы могли это заметить, — а если это кто-то, кто не разбирается в компьютерах?
Поэтому использовать установщики стоит только тех компаний, которым вы доверяете.