Создаем свой инсталлятор linux

Как создать самораспаковывающийся архив или инсталлятор в Linux

В то время как обычный файл архива требует отдельной программы (например tar, gunzip) для извлечения контента из архива, самораспаковывающийся (SFX) архив сам является исполняемым, и может сам извлекать свой контент при запуске. Самораспаковывающийся инсталлятор делает то же самое, но при этом копирует извлекаемые файлы в соответствующие директории.
В этом руководстве я покажу, как создать самораспаковывающийся архив или инсталлятор в Linux.

Для этих целей вы можете использовать утилиту командной строки под названием makeself , которая представляет собой скрипт оболочки, создающий архив, сжатый с помощью TAR, и добавляющий к нему небольшой скрипт-заглушку в начале архива для инициации самораспаковки и управления установкой извлекаемых файлов.
Чтобы установить makeself в Linux, скачайте его архив с последней версией, и распакуйте скачанный архив, как показано ниже. После того, как архив распакуется, он создаст новую директорию с названием makeself-2.1.5. Скопируйте все скрипты в директорию /usr/bin.

Базовый синтаксис makeself.sh:

Аргумент «label» — это сообщение, которое выводится после окончания распаковки.
Аргумент «startup_script» задает стартовый скрипт/команду, которые выполняются после успешной распаковки архива. Это полезно при создании самораспаковывающегося инсталлятора. Обычно стартовый скрипт копирует/инсталлирует извлеченный контент в соответствующие целевые директории. Стартовый скрипт может быть расположен внутри директории пакета, чтобы скрипт был включен в самораспаковывающийся архив.

Некоторые другие полезные опции makeself.sh:

—gzip : использовать для сжатия gzip (используется по умолчанию);
—bzip2 : использовать для сжатия bzip2;
—nocomp : не использовать сжатие;
—notemp :извлекать файлы не во временную директорию, а в специальную новую поддиректорию, созданную в текущей директории;
—follow : следовать всем символьным ссылкам и файлам архива, которые связаны между собой символьными ссылками.

Создание самораспаковывающегося архива

Для создания самораспаковывающегося архива, содержащего все файлы из директории ./backup, используйте приведенную ниже команду. Здесь стартовая процедура не делает ничего, кроме того, что выводит сообщение «Extraction done».

Самораспаковывающийся архив «./backup.run» успешно создан.
Для извлечения файлов из архива просто запустите его:

Создание самораспаковывающегося инсталлятора

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

Затем сделаем стартовый скрипт исполняемым.

И наконец создаем инсталлятор со стартовым скриптом, как показано ниже:

Источник

# Создание установщика в Linux

В то время как вам не нужна чистая установка macOS чтобы использовать OpenCore, некоторые пользователи предпочитают иметь свежую версию ОС с обновлением их Boot Manager.

Чтобы начать, вам нужно:

# Скачивание macOS

(opens new window) и запустите одну из следующих команд:

Далее, запустите одну из следующих команд, в зависимости от того, какую ОС вы хотите загружать:

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

Примечание: В зависимости от ОС, вы получите BaseSystem или RecoveryImage файлы. Они оба действуют одинаково, поэтому, когда мы ссылаемся на BaseSystem, та же информация относит и к RecoveryImage

Примечание к macOS 11, Big Sur: Так как эта ОС совершенна новая, есть некоторые проблемы с определенными системами, которые нужно решить. Для получения дополнительной информации, смотрите здесь: OpenCore и macOS 11: Big Sur

  • Для начинающих пользователей, мы рекомендуем macOS 10.15, Catalina

Примечание к GPU Nvidia: напоминание о том, чтобы проверить, поддерживает ли ваше оборудование новые ОС, смотрите Аппаратные ограничения

# Создание установщика

Этот раздел предназначен для создания необходимых разделов на USB накопителе. Вы можете использовать свою любимую программу, будь то gdisk , fdisk , parted , gparted или gnome-disks . Это руководство будет сосредоточено на gdisk , поскольку он приятен и может изменить тип раздела позже, так как это нам надо, чтобы macOS Recovery HD смог загрузиться. (дистрибутив используемый здесь — Ubuntu 18.04, другие версии или дистрибутивы тоже могут работать)

(opens new window) , которое является основой для этого.

# Метод 1

  1. запустите lsblk и определите блок вашего USB накопителя
  2. запустите sudo gdisk /dev/
    1. если вас спросят, какую таблицу разделов использовать, выберите GPT.
    2. отправьте p чтобы показать your разделы вашего блока (и убедитесь, что это именно тот, который нужен)
    3. отправьте o чтобы очистить таблицу разделов и создать новый GPT (если он не пустой)
      1. подтвердите с помощью y
    4. отправьте n
      1. partition number : оставьте пустым по умолчанию
      2. first sector : оставьте пустым по умолчанию
      3. last sector : оставить пустым для всего диска
      4. Hex code or GUID : 0700 для типа раздела Microsoft basic data
    5. отправьте w
      • подтвердите с помощью y
      • В некоторых случаях потребуется перезагрузка, но это редко, если вы хотите быть уверены, перезагрузите компьютер. Вы также можете попробовать переподключить ваш USB накопитель.
    6. закройте gdisk , отправив q (обычно он должен сам закрываться)
  3. используйте lsblk для определения идентификаторов вашего раздела
  4. запустите sudo mkfs.vfat -F 32 -n «OPENCORE» /dev/ , чтобы отформатировать ваш USB накопитель в FAT32 и назвать OPENCORE
  5. затем cd в /OpenCore/Utilities/macrecovery/ и вы должны попасть к .dmg и .chunklist файлам
    1. смонтируйте ваш USB раздел с помощью udisksctl ( udisksctl mount -b /dev/ , sudo не требуется в большинстве случаев) или с помощью mount ( sudo mount /dev/ /где/ваш/смонтированный/стафф , требуется sudo)
    2. cd в USB накопитель и mkdir com.apple.recovery.boot в корне вашего USB FAT32 раздела
    3. теперь cp или rsync как BaseSystem.dmg , так и BaseSystem.chunklist в папку com.apple.recovery.boot .
Читайте также:  Ish linux ios frontline support

# Метод 2 (в случае, если метод 1 не работает)

  1. запустите lsblk и определите блок вашего USB накопителя
  2. запустите sudo gdisk /dev/
    1. если вас спросят, какую таблицу разделов использовать, выберите GPT.
    2. отправьте p чтобы показать your разделы вашего блока (и убедитесь, что это именно тот, который нужен)
    3. отправьте o чтобы очистить таблицу разделов и создать новый GPT (если он не пустой)
      1. подтвердите с помощью y
    4. отправьте n
      1. partition number: оставьте пустым по умолчанию
      2. first sector: оставьте пустым по умолчанию
      3. last sector: +200M чтобы создать 200Мб раздел, который позже будет назван OPENCORE
      4. Hex code or GUID: 0700 для типа раздела Microsoft basic data
    5. отправьте n
      1. partition number: оставьте пустым по умолчанию
      2. first sector: оставьте пустым по умолчанию
      3. last sector: оставьте пустым по умолчанию (или вы можете сделать его +3G , если вы хотите разделить остальную часть USB)
      4. Hex code or GUID: af00 для типа раздела Apple HFS/HFS+
    6. отправьте w
      • подтвердите с помощью y
      • В некоторых случаях потребуется перезагрузка, но это редко, если вы хотите быть уверены, перезагрузите компьютер. Вы также можете попробовать переподключить свой USB накопитель.
    7. закройте gdisk , отправив q (обычно он должен сам закрываться)
  3. Используйте lsblk снова для определения 200Мб и других разделов
  4. запустите sudo mkfs.vfat -F 32 -n «OPENCORE» /dev/ , чтобы отформатировать 200Мб раздел в FAT32 и назвать OPENCORE
  5. затем cd в /OpenCore/Utilities/macrecovery/ и вы должны попасть к .dmg и .chunklist файлам
    1. смонтируйте ваш USB раздел с помощью udisksctl ( udisksctl mount -b /dev/ , sudo не требуется в большинстве случаев) или с помощью mount ( sudo mount /dev/ /где/ваш/смонтированный/стафф , требуется sudo)
    2. cd в USB накопитель и mkdir com.apple.recovery.boot в корне вашего USB FAT32 раздела
    3. загрузите dmg2img (доступно на большинстве дистрибутивов)
    4. запустите dmg2img -l BaseSystem.dmg и определите, какой раздел имеет свойство disk image
    5. запустите dmg2img -p -i BaseSystem.dmg -o для извлечения и записи образа восстановления на диск раздела
      • Это займет некоторое время. МНОГО, если вы используете медленный USB.

Источник

Создание инсталлятора

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

Выбираем софт

Ясно, что своими руками писать инсталлятор мы не будем, поскольку это лишние затраты времени, которые никто не оценит. Разве что у тебя настолько уникальная программа, что ни один инсталлятор не сможет ее правильно установить, поскольку «не знает» всех ее особенностей. В этом случае данная статья не для тебя, поскольку в ней будут рассмотрены популярные стандартные решения для создания инсталляторов, а именно – InstallShiled для Delphi, Visual Studio Installer, Setup Factory и InnoSetup. Конечно, твой выбор не ограничивается только этими программами, но они были выбраны как одни из самых лучших в своем классе.

Скорее всего, ты когда-нибудь использовал одну или несколько программ для создания инсталляторов. Если ты использовал две-три или более таких программ, то, наверное, заметил, что бывают эти программы трех типов «автоматизированные», «ручные» и «полуавтоматизированные». Первые представляют собой мастер (или его пошаговое подобие с возможностью выбирать шаг создания инсталлятора), создающий проект инсталлятора. Примером такого типа программ может послужить InstallShield для Delphi. Второй тип программ подразумевает создание разработчиком (то есть тобой) специального скрипта, на основании которого будет создан инсталлятор. Скрипт описывает этапы установки программы и их последовательность. Примером второго типа программ может послужить не рассматриваемая в статье программа WISE. Третий тип программ – это своеобразный симбиоз первого и второго типов. Программа третьего типа обладает собственным мастером, который «пишет» скрипт. Ты можешь откомпилировать этот скрипт сразу или немного его изменить, подправив, например, ключ реестра или другую информацию, а потом уже компилировать. Большинство современных программ для создания инсталляторов именно третьего типа.

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

Читайте также:  Увидеть пароли вместо точек windows

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

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

Install Shield

А теперь перейдем к рассмотрению вышеупомянутых программ. Начнем с Install Shield. Данная программа абсолютно бесплатна и ты сможешь ее найти на любом компакте с Delphi, желательно чтобы версия Delphi была посвежее – на новом компакте версия Install Shield тоже будет относительно свежая. Если компакта под рукой нет, ты всегда сможешь «стянуть» ее с сайта Borland. Вот что выходит в «обязанности» этой программы:

  • Создание стандартных диалогов инсталлятора
  • Создание нескольких типов установки (например, Standard, Compact и Custom)
  • Удобная работа с реестром (ты можешь указать, какие изменения в реестре нужно сделать при установке программы)
  • Удобная работа с библиотеками
  • Поддержка BDE – если твоя программа работает с BDE, тебе не нужно ни о чем волноваться: просто выбери BDE и InstallShield включит его в состав твоего дистрибутива, также будет нужным образом настроен BDE – будут созданы все необходимые аллиасы
  • Создание ярлыков, папок в меню Пуск
  • Поддержка носителей разного размера – от Floppy до DVD

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

Visual Studio Installer

Visual Studio Installer – это бесплатная утилита от Microsoft, предназначенная для создания инсталляторов для программ, написанных с помощью Visual Studio. Программа доступна в двух версиях – 1.0 (для Win 98) и 1.1 (для Win ME, 2000, XP). Программа доступна по адресу:

Перед установкой программы убедись, что у тебя установлен Visual Studio Service Pack 3.

Главное преимущество Visual Studio Installer связано именно с самим Visual Studio. Если твоя программа написана на Visual Basic или Visual C, Visual Studio Installer сам «пропишет» в проекте инсталлятора все нужные библиотеки, которые потом будут «скомпилированы» в дистрибутив. Кроме этого Visual Studio Installer ничем особенно не выражается – программа как программа.

Setup Factory (http://www.setupfactory.com)

Setup Factory – это коммерческий продукт, предназначенный для создания инсталляторов. Данный продукт стоит немалых денег – за седьмую версию просят 395 долларов. Ясно, что никто из нас эти деньги платить не собирается, но все равно сумма говорит за себя. Дистрибутив Setup Factory 7.0 «весит» 18 Мб и постоянно доступен для загрузки :). Программа может работать под управлением Windows 95/98/Me/NT/2000/XP/2003 Server. «Конек» Setup Factory, который будет непременно оценен пользователем, это темы диалогов. Программа содержит по умолчанию более 20 различных тем стандартных диалогов инсталлятора, поэтому твой инсталлятор не будет похож на инсталляторы конкурентов.

Setup Factory – это программа третьего типа, то есть мастер + возможность редактирования сценария, хотя больше ориентирована именно на создание сценария вручную. В этом случае тебе открываются более 250 разных функций программы, которые недоступны при использовании мастера.

Основные функции:

  • Создание единственного файла дистрибутива – большого и огромного setup.exe, конечно, если тебе нужно разбить дистрибутив на дискеты или компакт-диски, программа сделает это.
  • Поддержка серийных номеров, в основе которых лежит всем известный алгоритм MD5
  • Поддержка дат окончания действия дистрибутива (очень полезно для shareware- продуктов)
  • Поддержка редактирования реестра
  • Поддержка различных языков
  • Создание ярлыков и программных групп
  • Поддержка проектов Visual Basic
  • Отчеты о проекте выводятся в формате HTML
  • Полный uninstaller
  • Проверка правописания
  • Автоматический («тихий») режим установки – когда пользователю не задается вопросов, а программа устанавливается сразу после запуска setup.exe

Inno Setup (http://www.innosetup.com)

Inno Setup – это бесплатная программа для создания инсталляторов, причем ее исходный код (написана на Delphi) доступен в Сети.

Читайте также:  Shadowplay не записывает рабочий стол windows 10

Основные функции программы:

  • Поддержка всех 32-х битных версий Windows – Win 95, 98, ME, NT 4.0 SP6, 2000, 2003, XP
  • Программа может «упаковать» весь дистрибутив в единственный файл setup.exe или разбить дистрибутив на диски, если это нужно
  • Различные типы установки: Полная, Минимальная, Выборочная
  • Полный uninstaller
  • Дистрибутив обычно сжимается методом сжатия 7-Zip LZMA
  • Инсталлятор может сравнивать версию файлов, заменять уже установленные файлы с более старой версией, регистрировать DLL/OCX и библиотеки типов, а также устанавливать шрифты
  • Создание ярлыков и программных групп
  • Работа с реестром и INI-файлами
  • Поддерживается редактирование созданного мастером сценария
  • Поддержка многоязыковых инсталляций
  • «Тихая» установка и удаление программы

Программа обладает всеми необходимыми функциями, Inno Setup – очень простой и удобный инсталлятор. Кроме того, это универсальный инсталлятор, он не привязывается ни к Delphi, ни к Visual Studio. Плохо это или хорошо, зависит от твоей программы. Лучше, конечно, чтобы InnoSetup поддерживал BDE и библиотеки Visual Studio, но пока этого нет.

Какую программу выбрать?

Ты не знаешь, какую программу выбрать? По началу используй стандартный инсталлятор, который «идет в нагрузку» с твоей IDE. Если ты пишешь на Delphi, попробуй сначала использовать InstallShiled, а потом уже пробовать другие инсталляторы. Если же ты пишешь на Visual C/Visual Basic – используй Visual Studio Installer.

Если возможностей стандартных программ тебе будет не хватать, попробуй сначала InnoSetup, а потом SetupFactory. Единственный случай, когда у тебя не будет выбора – это, если твоя программа использует BDE – тогда намного рациональнее использовать InstallShield.

InnoSetup: создание дистрибутива

Попробуем создать дистрибутив с помощью InnoSetup. Программа не использует BDE, поэтому весь дистрибутив будет состоять всего из четырех файлов: sto.exe, sto.chm, sto.ini, vincheck.exe

Запускаем InnoSetup и выбираем Create a new script file using the Script Wizard.

InnoSetup: создание нового сценария

Появится окно мастера, в котором нужно будет ввести информацию о программе:

InnoSetup: базовая информация о программе

Следующий шаг мастера – это выбор каталога для установки программы. Выбор небольшой:

  1. Program Files directory – программа будет установлена в каталог Program Files на одном из логических дисков
  2. (Custom) – по твоему усмотрению

Каталог для твоей программы, который будет создан в каталоге Program Files, задается в поле Application directory name. Обычно он устанавливается по имени программы. По умолчанию включена опция Allow user to change the application directory, позволяющая пользователю изменять каталог установки. За исключением редких случаев выключать ее не нужно.

InnoSetup: выбор каталога для установки

Теперь нужно выбрать файлы, которые нужно включить в состав дистрибутива. В поле Application main executable file указывается основной исполнимый файл приложения. Потом с помощью кнопок Add files(s)/Add directory добавляются нужные файлы/каталоги.

InnoSetup: добавление файлов

Кнопка Edit позволяет подправить параметры файла, а именно изменить каталог назначения файла – больше ничего полезного она не делает. В качестве каталога назначения доступны следующие каталоги:

  • Application directory – каталог приложения, то есть каталог, в которой устанавливается программа
  • Program Files directory – каталог Program Files
  • Common Files directory – каталог Common Files
  • Windows directory – каталог %WINDIR%
  • Windows system directory – каталог %WINDIR%\System
  • Setup source directory – каталог, в котором находился файл инсталлятора setup.exe
  • System drive root directory – корневой каталог системного диска, например, C:\
  • Common Startup folder – общая папка автозагрузки (программа будет запускаться автоматически для всех пользователей)
  • User Startup folder – пользовательская папка автозагрузки
  • Custom – на твое усмотрение

В поле Destination subdirectory можно указать подкаталог каталога назначения.

InnoSetup: редактирование параметров файла

Следующий шаг – позволяет указать имя создаваемой программной группы, а также какие ярлыки нужно создавать.

InnoSetup: программная группа и ярлыки

Жалко, что мастер не позволяет создавать ярлыки для отдельных файлов, поэтому, чтобы в программной группе было больше ярлыков выбери создание ярлыка для твоего сайта (Internet shortcut), а также ярлыка для uninstaller’а. Можно, конечно, подправить сценарий установки, но лучше, если бы мастер программной группы был более функциональным, например, как в Install Shield.

После создания программной группы мастер предложит указать файл лицензии и файлы, которые будут отображены до и после инсталляции. Следующий шаг очень важен – ты можешь указать другой компилятор, выбрать имя для инсталлятора (обычно setup), выбрать пиктограмму для setup.exe, а также установить пароль для запуска setup.exe.

InnoSetup: параметры компилятора

Все, что тебе осталось, это нажать кнопку Finish. Затем программа спросит, нужно ли откомпилировать сценарий прямо сейчас – не нужно, лучше просмотри код сценария.

InnoSetup: код сценария

Разобраться с только что созданным сценарием не сложно, тем более что, прочитав справку, ты сможешь не только понять, что там написано, но и усовершенствовать сценарий.

Теперь нажимаем кнопку Run или нажимаем F9, наш сценарий будет откомпилирован и запущен:

Источник

Оцените статью