Как из установленной программы сделать инсталлятор: создание инсталлятора на примере развертывания C# приложения / Хабр
Путеводитель по системам для создания инсталляторов
Часть 2
Clickteam Install Creator 2
Домашняя страница: http://www.clickteam.com/install-creator-2
Компания Clickteam выпускает простые и дружелюбные продукты для разработчиков: например, Clickteam Fusion, The Games Factory, Multimedia Fusion. В этом же ряду находится программа Install Creator. Основное преимущество продукта — быстрое создание дистрибутива при помощи пошагового мастера.
Разделы настроек расположены в такой строгой последовательности в виде вкладок. Вначале указываются данные (Files), текстовое содержание диалогов (Wizard Text), формат окна (Window), дополнительные настройки (Options), настройки деинсталлятора (Uninstaller), размер дистрибутива (Build). После нажатия на Build запускается компиляция инсталлятора, остается лишь указать место его расположения.
Инсталлятор занимает 65 КБ, с учетом деинсталлятора это 105 КБ. Вдобавок к этому, в Install Creator применяется один из двух алгоритмов компрессии (zipper/ differentiator), оптимальный вариант определяется автоматически. При необходимости, данные можно поместить в пакет отдельно от инсталлятора.
Функциональность Clickteam Install Creator унифицирована, отсутствуют некоторые важные опции. Так, мультиязычность не поддерживается, русский язык в перечне локализаций и вовсе отсутствует. Интеграция со сторонними решениями не предусмотрена, поэтому работа с большими проектами (подразумевающими множество связей в системе) будет неудобной. Программа не позволяет создавать обновления, патчи. Впрочем, в последнем случае, можно использовать Patch Maker — разработку Clickteam.
В незарегистрированной версии Install Creator присутствует реклама. Профессиональная версия, помимо снятия этого лимита, позволяет включать в дистрибутив несколько редакций, устанавливать лицензионное ограничение для пользователя инсталлятора.
Резюме. Возможности Install Creator будут востребованы при работе с несложными проектами. Получаемые инсталляторы содержат базовый набор пользовательских опций, среди которых нет выбора языков или профиля установки. Определенно, это максимально простое решение среди всех упомянутых в обзоре инсталляционных комплексов.
Actual Installer
Домашняя страница: http://www.actualinstaller.com/
Actual Installer — программа для создания достаточно сложных установщиков Windows Installer без использования сценариев. В базовый набор возможностей входят мультиязычность, эффективная компрессия, детальная настройка интерфейса, командная строка и прочие функции, перечисляемые ниже.
Использование пошагового мастера не предполагается, но доступно окно параметров для нового проекта. Определив базовые сведения продукта, можно перейти в главное окно программы. Опции расположены в 5 секциях — «Общее», «Установка», «Диалоги», «Система» и «Реестр».
В разделе General (Общее) указывается информация о проекте, здесь же настраивается внешний вид мастера установки. В процессе установщик может проверять системные требования (такие как версия ОС, привилегии пользователя) и зависимости (Microsoft .NET Framework, Internet Explorer, Adobe Reader, Java, SQL Server и прочие). При отсутствии указанных компонентов, инсталлятор потребует от пользователя скачать и установить их.
В Installation («Установка») — расположение файлов и папок, расположение исполнимого файла, настройки процессов установки, обновления и деинсталляции. Оба процесса могут осуществляться в тихом режиме, не требуя вмешательства пользователя. В довесок к установщику, может использоваться мастер обновлений (Actual Updater).
Dialogs («Диалоги») предоставляют доступ к «начинке» разделов, включая текст лицензионного соглашения, readme файла, в том числе в формате RTF. Здесь же — выбор языков локализации, причем русский язык числится в списке. Ненужные разделы установщика легко отключить.
System («Система») — настройка системных изменений, вносимых при инсталляции: ярлыки, ключи реестра, переменные и пользовательские команды.
Register («Реестр») — установка файловых ассоциаций, переменных окружения, библиотек.
После выставления нужных опций достаточно нажать на кнопку Build Project — инсталлятор готов к запуску. В случае, если при создании инсталлятора была пропущена важная опция, при компиляции Actual Installer даст об этом знать и укажет на ошибку.
Резюме. Actual Installer включает в себя практически все стандартные параметры и опции проекта. Это «промежуточный» вариант между очень простыми (вроде Clickteam Install Creator) и более тяжеловесными решениями, о которых также пойдет речь.
CreateInstall
Домашняя страница: http://www.createinstall.ru/
CreateInstall — инструментарий для создания установщиков. В его основу заложено две особенности — контроль над процессом установки и неограниченная расширяемость. Обе возможности реализованы благодаря языку программирования Gentee, применяемому для написания сценариев.
Интерфейс CreateInstall разбит на 3 вкладки — «Проект», «Скрипт установки» и «Скрипт деинсталляции». Первый раздел позволяет задать общие настройки инсталлятора: информация о продукте, поддерживаемые языки, пути, внешний вид. Дополнительно, инсталлятор можно защитить цифровой подписью и установить пароль.
«Проект» — не равноценная замена двух последующих разделов, т. е. для создания дистрибутива нужно тщательно настроить скрипты установки и деинсталляции. Соответствующие параметры отображаются в виде групп, можно отобразить их единым списком.
Дополнением для CreateInstall служит утилита Quick CreateInstall. Она значительно упрощает создание инсталлятора, предоставляя только базовые настройки проекта. Из Quick CreateInstall в дальнейшем проект можно импортировать в CreateInstall.
Код проекта не предназначен для самостоятельного редактирования, переноса в IDE-среду, экспорта. Хотя язык Gentee имеет отличный потенциал: как минимум, это переменные и функции, условные выражения и синтаксис, базирующийся на C, C++ и Java.
Существует 3 редакции программы — полная, light (простая) и бесплатная. Список различий между ними опубликован здесь. По большей части, отсутствующие функции бесплатной редакции программы видны при навигации по группам настроек скриптов.
Интерфейс и справка доступны на русском языке.
Резюме. CreateInstall — функциональная и доступная для понимания среда. Инструментарий CreateInstall не так уж и беден и позволяет обходиться собственными средствами. Но к недостаткам все же следует отнести замкнутость программы «в себе», подразумевая функции импорта и экспорта.
Advanced Installer
Домашняя страница: http://www.advancedinstaller.com/
Advanced Installer основывается на технологии Windows Inslaller, позволяя создавать msi-, exe- и других видов дистрибутивов. Этому способствует продуманный интерфейс и работа с проектами. В Advanced Installer можно обнаружить немало возможностей, которых нет в других подобных комплексах, о чем ниже.
Примечательно, прежде всего, разнообразие проектов: сюда входят инсталляторы, Java-установщики, обновления, дополнения, модули слияния и другие. В разделе меню Installer собраны команды импорта проектов из Visual Studio, RAD Studio, Real Studio, Visual Basic. Здесь раскрывается потенциал Advanced Installer во взаимодействии с IDE-средами.
Для каждого из выбранных типов проекта предусмотрен детальный мастер настройки. Есть общие шаблоны — Simple, Enterprise, Architect или Professional. Большая часть проектов доступна только для определенных типов лицензии, общедоступные проекты обозначены как None в графе License Required.
Как уже сказано, при создании проекта можно воспользоваться пошаговым мастером, где, в частности, доступен выбор способа распространения пакета, языков локализации, настройка пользовательского интерфейса, ввод текста лицензии и другие опции. Advanced Installer позволяет выбрать вариант распространения программы — оставить данные без компрессии, разделить на CAB-архивы, сохранить в MSI и др., добавить цифровую подпись, потребовать ввод серийного номера и т. д.
Главное окно Advanced Installer (редактор проекта), в простом режиме отображения (Simple), содержит несколько секций:
- Product Information (Информация о продукте) — ввод сведений о продукте, параметры установки.
- Requirements (Требования) — указание аппаратных и системных требований, зависимостей ПО. Также имеется возможность создания пользовательских условий.
- Resources (Ресурсы) — редактор ресурсов (файлов и ключей реестра).
- Deployment (Развертывание) — выбор типа распространения продукта. Это может быть MSI, EXE или веб-инсталлятор. Для MSI, EXE ресурсы можно поместить отдельно от инсталлятора.
- System Changes — переменные среды.
При выборе ресурсов могут использоваться файлы, ключи реестра, переменные окружения, конфигурационные ini, драйверы, базы данных и переводы. С помощью модулей объединения можно добавить и другие ресурсы, такие как сервисы, разрешения, ассоциации и др.
Для выполнения более сложных задач позволяется использовать пользовательские действия, EXE, DLL или скрипты, написанные на C, C++, VBS или JS. Для создания сценариев предусмотрен удобный редактор.
Однако следует отметить, что в режиме Simple доступна лишь малая часть разделов. Работая с Advanced Installer в ознакомительном режиме, есть смысл зайти в настройки и переключиться в другой режим работы с проектом. После этих действий становятся доступны новые подразделы редактора.
Резюме. Благодаря различным редакциям продукта (включая бесплатную), возможностям импорта, множеству шаблонов и схем, редактору проектов — Advanced Installer будет интересен широкой аудитории.
BitRock InstallBuilder
Домашняя страница: http://installbuilder.bitrock.com/
InstallBuilder — кроссплатформенная среда для создания инсталляторов. В перечень поддерживаемых систем входят: Windows ME — Windows 8, Mac OS X, FreeBSD, OpenBSD, Solaris (Intel & Sparc), AIX, HP-UX, IRIX, Linux (Intel x86/x64, Itanium, s390 & PPC). Инсталляторы доступны как для настольного, так и сетевого ПО. В первой части путеводителя уже рассматривался продукт IzPack, но для InstallBuilder характерна поддержка языков написания, включая не только Java, но и PHP, Perl, Python, Ruby, C/C++ и .NET/Mono.
Интерфейс программы доступен на русском языке. Для работы с проектом используется очень простая графическая оболочка. Присутствуют следующие секции с настройками:
- Product Details («Информация о продукте») — информация о проекте.
- Files («Файлы») — проводниковый интерфейс для добавления файлов
- Advanced («Расширенные настройки») — наиболее интересный раздел, где, пожалуй, и раскрывается вся мощь BitRock Installer. Для работы с проектами используется формат XML (см. обзор WiX в первой части), возможна совместная работа, ручная настройка проектов с поддержкой сценариев. Встроенные действия позволяют автоматизировать процессы установки и объединять задачи, делая их доступными в несколько кликов. Таким образом можно проверять зависимости, добавлять переменные окружения, изменять реестр и файловую систему и прочее. Для редактирования сценариев используется встроенный, очень простой, XML-редактор.
- Customization («Настройка») — настройка пользовательского интерфейса инсталлятора, переменных окружения, пост-установочных действий, платформ, разрешений и компрессии. Для сжатия применяется ZIP/LZMA-компрессия. Можно создать тихий установщик, работающий в текстовом режиме.
- Packaging («Упаковка») — для отслеживания ошибок имеется встроенный дебаггер. При построении легко создать кроссплатформенный инсталлятор. На выходе он использует «родную» среду ОС (это относится к графическим системам Windows, KDE и Gnome).
Резюме. BitRock InstallBuilder рекомендуется, прежде всего, для создания кроссплатформенных продуктов. Сценарий, основанный на XML-спецификациях, удобен в обращении, проект легко импортировать и экспортировать для редактирования во внешней среде. Таким образом, на основе данного XML-сценария можно быстро генерировать инсталляторы для всех требуемых платформ.
InstallMate
Домашняя страница: http://www.tarma.com/im9/index.htm
InstallMate представляет собой инструментарий для создания дистрибутивов на основе Windows Installer. Основные особенности: интуитивная графическая среда, широкий выбор элементов установки, проверка зависимостей, детальная настройка внешнего вида инсталлятора, поддержка компонентов, локализаций и расширений. Дистрибутивы, созданные с помощью InstallMate, отличаются компактностью и скоростью работы.
Мастер создания нового проекта позволяет выбрать существующий шаблон и указать начальные параметры — языки локализации (один или несколько), имя продукта.
Можно импортировать созданный проект или воспользоваться редактором InstallMate. Кстати говоря возможности импорта не впечатлили: поддерживаются продукты компании Tarma и проекты Visual Basic.
Главное окно программы содержит разделы с параметрами, разделенные, условно, на три секции:
- Общие настройки: детальная информация о проекте, программные зависимости, системные требования, компоненты, а также опции инсталлятора. В боковой панели Package можно также указать тип инсталлятора, компрессии, ссылку на скачивание (в случае с веб-инсталлятором), пароль на установку. В один инсталлятор можно добавить несколько пакетов.
- Компоненты: включение в дистрибутив элементов и связей: это файлы и папки, ключи реестра, ini-конфиги, переменные среды, файловые ассоциации, COM-классы, сервисы.
- Опции инсталлятора: с помощью редактора можно отредактировать текст диалогов. Предусмотрена гибкая настройка локализаций, InstallMate поддерживает 19 языков по умолчанию. Можно создать один дистрибутив с несколькими локализациями либо несколько проектов с одним языком. В этом же разделе доступны пользовательские действия, а также переменные — включая 250 предустановок. Расширить функциональность пакета можно с помощью расширений и DLL-библиотек.
Как было отмечено, при создании инсталлятора можно использовать шаблоны. Помимо шаблонов проектов, возможно создание пакетов на основе компонентов, определяя группы элементов. Из других опций стоит отметить скрытую и тихую установку и деинсталляцию, два типа сжатия (Deflate или LZMA).
Полный список функций представлен здесь.
Резюме. Профессиональная среда для создания инсталляторов с действительно удобным интерфейсом и быстродоступным инструментарием: можно оперативно переключиться с одного языка локализации на другой при создании дистрибутива, протестировать проект. Не хватает функционального пошагового мастера настройки, возможностей импорта. Сильная сторона — наличие всех стандартных функций, работа с переменными и действиями.
переносим приложения Windows без дистрибутива — «Хакер»
Содержание статьи
Часто возникают ситуации, когда программа, установленная на одном компьютере, должна непременно оказаться на другой машине. Причем инсталлятора нет, простого копирования файлов не хватает, а человек, который ставил программу, куда-то пропал вместе с дистрибутивом.
В случае с редким или самописным софтом такая проблема случается сплошь и рядом. Практически каждая отдельно взятая контора может похвастаться, что какой-то местный кудесник-программист наколотил две-три тысячи строк кода, создавая очередную программу отчетности или ERP-систему. И все идет хорошо, пока этот компьютерный гуру не потеряется. Стандартного инсталлятора нет, простое копирование папки с программой не помогает, а программу срочно нужно установить еще на одну машину. Кажется, пора начинать рвать на себе волосы? Но это не вариант для компьютерной нечисти! 🙂 Что переносить?
Итак, самый главный вопрос: что переносить кроме папки с программой? Условно все необходимое можно разбить на три пункта:
- Файлы, к которым обращается программа.
- Ветки реестра, к которым обращается программа.
- Среда выполнения.
Если с пониманием первых двух пунктов проблем нет, то насчет третьего стоит сделать уточнение. Под средой выполнения здесь понимаются базы данных, драйвера устройств (псевдоустройств), именованные каналы (Named Pipes), мэйлслоты, COM/ActiveX компоненты и так далее. То есть, все, с чем работает программа (и что предоставлено сторонним софтом, а не операционной системой) через стандартные интерфейсы Windows — будь то сеть, IPC или тому подобное.
Среда является самым проблемным компонентом при переносе, и именно из-за среды приходится заморачиваться, чтобы ОС на обеих машинах совпадали.
Какие файлы и ветки реестра переносить?
Господа, давайте дружно поднимем бокалы с кофе, выпьем и почтим память безвременно ушедших утилит-мониторов NT Filemon и NT Regmon, которые отслеживали обращения любого процесса к файлам и ключам реестра соответственно. Злой гений Марка Руссиновича безжалостно аннигилировал их… а потом воссоздал из пепла в одном мощном и полезном инструменте. Встречайте, Process Monitor. Именно эта тулза будет основным оружием переноса и поможет нам разобраться, какие файлы использует программа и к каким ключам в реестре обращается. Для этого нам понадобятся две функции: Show Registry Activity и Show File System Activity.
Итак, открывай ProcMon, запускай переносимую софтину и дождись, пока она полностью загрузится. Затем ступай в ProcMon, отключи логирование, найди нужную программу (по имени исполняемого файла), жми правой кнопкой по записи в столбце Process Name и выбирай Include ‘SuperProg.exe’, где SuperProg.exe — это исходное приложение для переноса. Ты увидишь, что Process Monitor отсеял все события, связанные с другими процессами. Можно было бы анализировать все в уме, отслеживая события, которые появляются в Process Monitor, но мы поступим иначе. Для удобства сохраним лог всех обращений в файл. Для этого нажимай «File -> Save…». В окне сохранения опцию «Events to save» выставляй в «Events displayed using current filter»(чекбокс «Also include profiling events» должен быть включен), а «Format» выбирай «Comma-Separated Values (CSV)». Сохрани куда-нибудь Logfile.csv и можешь заглянуть внутрь. Испугался? 🙂
Разобраться в этой помойке без помощи парсера сложно. Чтобы упростить задачу, я, когда сам занимался подобным переносом, набросал два Perl-скрипта (ищи их на диске). Положи эти скрипты в папку, где был сохранен Logfile.csv (или сразу сохраняй лог в папку к скриптам). Теперь запускай parse.pl. Этот скрипт отпарсит log-файл и создаст еще два лога: file.log будет содержать уникальные обращения к файлам и папкам, reg.log —уникальные обращения к веткам реестра.
Отделяем мух от котлет
Не торопись запускать второй скрипт. Сначала рекомендую отсеять явно левые записи из reg.log. Такие ветки реестра, как HKLM/Software или HKCR/Interface являются чисто системными, поэтому на новую машину их импортировать не имеет смысла (в худшем случае можно испортить систему). Удаляем. Сильно тут не лютуй, а то выкинешь что-то, что имеет отношение к программе, которую переносим. После этого можно с чистым сердцем запускать export.pl. Скрипт пошуршит и создаст в папке кучу REG-файлов (их можно импортировать на целевой системе) + папку subdir. Далее необходимо проанализировать содержание Reg-файлов, напрячь голову и отсортировать файлы на три группы:
- Нужен программе;
- Не нужен программе;
- На дополнительное изучение.
Сортируя файлы, не забывай редактировать абсолютные (полные) пути до компонентов (DLL-библиотек, файлов настроек и прочего), если найдешь. Так мы получим REG-файлы, которые необходимо импортировать на целевой машине. Теперь по поводу файлов. В папке subdir скрипт воссоздал дерево обращений к файлам таким образом:
subdir
C (буква диска)
Program Files
…и так далее, до файлов включительно.
Непосредственный перенос
На новой машине скопируй папку с программой в C:Program Files (к примеру). Импортируй ключи реестра, которые ты определил в группу «Нужен программе». Из папки subdir восстанови структуру файлов и каталогов, отсутствующих в системе, на которую выполняется перенос. Надеюсь, ты понимаешь, что системные файлы и библиотеки заменять не надо. Поэтому при переносе файлов нужно быть очень осторожным. Обязательно обращай внимание, где располагается перемещаемый файл — проведи аналогию с переменными окружения (изучи вывод команды «set» в консоли). Просмотри содержимое каждого файла, который, как тебе кажется, не является системным. Поправь значения опций, в которых задается полный путь до каких-либо компонентов, если найдешь файл(ы) настроек.
Если о защите системных библиотек Windows хоть как-то позаботится SFC (System File Checker), то в случае реестра такой помощи ждать не приходится. Поэтому при импортировании веток реестра с рабочей машины нужно быть вдвойне осторожным. Причем, как и в случае с файлами настроек, придется корректировать пути в строковых параметрах. Зарегистрируй COM-компоненты — их легко определить по наличию нескольких экспортируемых функций (DllRegisterServer, например).
Тем, кто забыл: регистрация производится командой regsvr32 component.dll, где component.dll является COM-сервером (кстати, COM-сервер может находиться и внутри exe-файла). Ценителям Total Commander будет приятно, что для их любимца есть listerплагин, который на раз определяет COM/ActiveX. Если программа использует какие-то специфические технологии, необходима дополнительная настройка. Скажем, в случае с использованием BDE(Borland Database Engine) необходимо внести соответствующие изменения у DataSource’ов, которые использует программа.
После этого остается только проинсталлировать и настроить среду, которая нужна нашему приложению (если нужна). Стандартные компоненты наподобие сервера БД ты установишь сам. Перенос среды должен быть легче всего, поскольку для серверов БД есть нормальные инсталляторы. Установить драйвер можно специальной утилитой, а зарегистрировать COM-сервер еще проще.
Перенос драйверов
А что делать, если программа работает с драйвером, единственный установщик которого потерян вместе с install.exe? Да и как вообще определить, что программа работает с драйвером? Какой-либо специальной тулзы я не нашел, поэтому воспользуемся OllyDbg. Чтобы работать через DeviceIoControl (через эту системную функцию драйверу устройств отправляются разные команды), сначала необходимо открыть созданное устройство через символическую ссылку вызовами CreateFileA/CreateFileW. От этого и будем плясать.
Загрузи программу в отладчик. Прямо на точке входа в окне дизассемблера жми <Ctrl+G>, вводи CreateFileA и нажимай <OK>. Мы попали в начало функции открытия файла. На этом месте нажимай <Shift+F4> или в меню по правой кнопке «Breakpoint — Conditional log». В открывшемся окне в поле «Expression» вписывай DWORD PTR DS:[ESP+4] — по этому адресу лежит указатель на открываемый файл. В комобоксе «Decode value of expression as» выбирай «Pointer to ASCII string» (для юникод-версии соответственно — «Pointer to UNICODE string»). Радио-кнопку <Log value of expression> выставляй в «Always». Остальные опции оставь по умолчанию. Нажимай <OK> и запускай программу.
Очень вероятно, что придется имитировать ее реальное использование, поскольку мы не знаем, в какой момент может произойти обращение к драйверу. Открывай в OllyDbg лог (комбинация клавиш <Ctrl+L>) и ищи подсвеченные строки, начинающиеся с COND. В кавычках будет указан файл, и если он начинается с . — считай, что это наш драйвер. С помощью утилиты WinObj (кстати, написанной опять же Руссиновичем) выясни настоящее имя устройства. Оно должно выглядеть как DeviceDevName. Посредством той же WinObj убедись, что на другом компьютере этого устройства нет.
Настал черед поиска самого файла драйвера. Большинство драйверов располагаются в %SystemRoot%System32Drivers. Перейди в эту папку и ищи UNICODE-строку имени устройства (DeviceDevName). Если файла с такой строкой нет, то открывай «Сервис Менеджер».
Там ищи все драйвера, которые располагаются по нестандартному пути — искомая строка должна быть в одном из них. Этот же «Сервис Менеджер» поможет тебе перенести драйвер на другой компьютер (сделай скриншоты настроек, пропиши зависимости и так далее).
Утилита хорошая, но, увы, не совсем корректно инсталлирует драйвера. Поэтому, после того, как установишь свой драйвер, выполни следующие действия: найди в редакторе реестра ветку HKEY_LOCAL_MACHINESystemCurrentControlSetServicesвыбранноеимядрайвера и удали ключи «Group» и «ObjectName» в этом разделе. Если ключи не удалить, то менеджер при запуске драйвера будет выдавать ошибку, сообщая, что указан некорректный путь, хотя путь тут как бы и не причем.
Подводные камни
Когда ты считаешь, что все перенес — запускай программу. С вероятностью 70-75% она запустится. Что-то пошло не так? Вполне ожидаемо. Мы тут не яичницу жарим. В общем случае придется применить технологию багхантинга. Брать в зубы дизассемблер, отладчик и ловить исключения (или ExitProcess, если программа вываливается безмолвно). Сложно дать какие-то рекомендации, но все же попробуем. Просмотри внимательно еще раз REG-файлы. Возможно, ты не заметил что-то, что позволяло программе жить и процветать на прежней машине. Попробуй определить несистемные библиотеки из subdir и скопировать их с заменой. Если сообщение, с которым вываливается программа, более информативно, чем «Access violation», попробуй поискать в интернете текст ошибки (это может быть связано со средой исполнения). Но, в любом случае, твоим главным оружием здесь будет незаменимая связка: дизассемблер + отладчик + мозг и прямые руки.
Если есть возможность, то обязательно проводи все эксперименты только на виртуальной машине — так ты будешь уверен, что система не загажена и не повредишь основную операционку. Прежде чем мужественно рваться в бой, я тебе предлагаю попробовать свои силы на специально разработанной программе. Собственно, полезность от программы нулевая, но перенести ее просто так не получится.
Bdetest.exe работает с BDE через алиас «testBDE», за каким-то чертом обращается к драйверу и просто не может функционировать без определенной информации в реестре и файловой системе. На диске ты сможешь найти все необходимое: результат работы скриптов, скрин BDE-алиаса, драйвер, базу и саму программу.
Заключение
Перенос программ без инсталлятора — нетривиальная задача. Необходимо обладать знаниями во многих сферах IT — администрировании, программировании, дизассемблировании, отладке, базах данных. Но всегда помни: непереносимых программ не бывает! Ведь, как гласит манифест хакера, если компьютер совершает ошибку, то это ты напортачил.
Создание файла Установщика приложений вручную — MSIX
-
- Чтение занимает 3 мин
В этой статье
В этой статье показано, как вручную создать файл установщика приложения, который определяет связанный набор.This article shows how to manually create an App Installer file that defines a related set. Связанный набор — это не один объект, а сочетание основного и дополнительных пакетов.A related set is not one entity, but rather a combination of a main package and optional packages.
Чтобы получить возможность установить связанный набор как один объект, необходимо указать основной и дополнительные пакеты как один объект.To be able to install a related set as one entity, we must be able to specify the main package and optional package as one. Для этого необходимо создать XML-файл с расширением appinstaller , чтобы определить связанный набор.To do this, we will need to create an XML file with an .appinstaller extension to define a related set. Установщик приложения использует файл appinstaller и позволяет пользователю установить все определенные пакеты одним щелчком.App Installer consumes the .appinstaller file and allows the user to install all of the defined packages with a single click.
Пример файла установщика приложенияApp Installer file example
Прежде чем мы перейдем к более подробной информации, ниже приведен полный пример файла msixbundle *. appinstaller:Before we go in to more detail, here is a complete sample msixbundle *.appinstaller file:
<?xml version="1.0" encoding="utf-8"?>
<AppInstaller
xmlns="http://schemas.microsoft.com/appx/appinstaller/2017/2"
Version="1.0.0.0"
Uri="http://mywebservice.azurewebsites.net/appset.appinstaller" >
<MainBundle
Name="Contoso.MainApp"
Publisher="CN=Contoso"
Version="2.23.12.43"
Uri="http://mywebservice.azurewebsites.net/mainapp.msixbundle" />
<OptionalPackages>
<Bundle
Name="Contoso.OptionalApp1"
Publisher="CN=Contoso"
Version="2.23.12.43"
Uri="http://mywebservice.azurewebsites.net/OptionalApp1.msixbundle" />
<Bundle
Name="Contoso.OptionalApp2"
Publisher="CN=Contoso"
Version="2.23.12.43"
Uri="http://mywebservice.azurewebsites.net/OptionalApp2.msixbundle" />
<Package
Name="Fabrikam.OptionalApp3"
Publisher="CN=Fabrikam"
Version="10.34.54.23"
Uri="http://mywebservice.azurewebsites.net/OptionalApp3.msix"
ProcessorArchitecture="x64" />
</OptionalPackages>
<UpdateSettings>
<OnLaunch HoursBetweenUpdateChecks="0"/>
</UpdateSettings>
</AppInstaller>
При развертывании файл Установщика приложений сверяется с пакетами приложений, на которые ссылается элемент Uri
.During deployment, the App Installer file is validated against the app packages referenced in the Uri
element. таким образом, значения Name
, Publisher
и Version
должны соответствовать элементу Package/Identity в манифесте пакета приложения.So, the Name
, Publisher
and Version
should match the Package/Identity element in the app package manifest.
Инструкции по созданию файла Установщика приложений.How to create an App Installer file
Для распределения связанного набора как одного объекта необходимо создать файл Установщика приложений, содержащий элементы, которые требуются соответствующей схеме Установщика приложений.To distribute your related set as one entity, you must create an App Installer file that contains the elements that are required by that appinstaller schema.
Шаг 1. Создание файла *.appinstallerStep 1: Create the *.appinstaller file
Используя текстовый редактор, создайте файл (который будет содержать XML) и назовите его <имя_файла>.appinstallerUsing a text editor, create a file (which will contain XML) and name it <filename>.appinstaller
Шаг 2. Добавление базового шаблонаStep 2: Add the basic template
Базовый шаблон включает в себя сведения о файле Установщика приложений.The basic template includes the App Installer file information.
<?xml version="1.0" encoding="utf-8"?>
<AppInstaller
xmlns="http://schemas.microsoft.com/appx/appinstaller/2017/2"
Version="1.0.0.0"
Uri="http://mywebservice.azurewebsites.net/appset.appinstaller" >
</AppInstaller>
Шаг 3. Добавление сведений об основном пакетеStep 3: Add the main package information
Если основным пакетом приложения является файл. msix или. appx, используйте <MainPackage>
, как показано ниже.If the main app package is an .msix or .appx file, then use <MainPackage>
, as shown below. Обязательно включите ProcessorArchitecture, так как он обязателен для пакетов, не относящихся к пакету.Be sure to include the ProcessorArchitecture, as it is mandatory for non-bundle packages.
<?xml version="1.0" encoding="utf-8"?>
<AppInstaller
xmlns="http://schemas.microsoft.com/appx/appinstaller/2017/2"
Version="1.0.0.0"
Uri="http://mywebservice.azurewebsites.net/appset.appinstaller" >
<MainPackage
Name="Contoso.MainApp"
Publisher="CN=Contoso"
Version="2.23.12.43"
ProcessorArchitecture="x64"
Uri="http://mywebservice.azurewebsites.net/mainapp.msix" />
</AppInstaller>
Если основным пакетом приложения является msixbundle или appxbundle или файл, используйте <MainBundle>
вместо, <MainPackage>
как показано ниже.If the main app package is an .msixbundle or .appxbundle or file, then use the <MainBundle>
in place of <MainPackage>
as shown below. Для пакетов ProcessorArchitecture не требуется.For bundles, ProcessorArchitecture is not required.
<?xml version="1.0" encoding="utf-8"?>
<AppInstaller
xmlns="http://schemas.microsoft.com/appx/appinstaller/2017/2"
Version="1.0.0.0"
Uri="http://mywebservice.azurewebsites.net/appset.appinstaller" >
<MainBundle
Name="Contoso.MainApp"
Publisher="CN=Contoso"
Version="2.23.12.43"
Uri="http://mywebservice.azurewebsites.net/mainapp.msixbundle" />
</AppInstaller>
Сведения в атрибуте <MainBundle>
или <MainPackage>
должны совпадать с элементом Package/Identity в манифесте пакета приложений или пакета приложения соответственно.The information in the <MainBundle>
or <MainPackage>
attribute should match the Package/Identity element in the app bundle manifest or app package manifest respectively.
Шаг 4. Добавление дополнительных пакетовStep 4: Add the optional packages
Как и атрибут основного пакета приложений, если дополнительный пакет может являться пакетом приложения или пакетом приложений, дочерний элемент с атрибутом <OptionalPackages>
должен являться <Package>
или <Bundle>
.Similar to the main app package attribute, if the optional package can be either an app package or an app bundle, the child element within the <OptionalPackages>
attribute should be <Package>
or <Bundle>
respectively. Сведения о пакете в дочерних элементах должны соответствовать элементу идентификатора в манифеста пакета приложений или пакета приложения.The package information in the child elements should match the identity element in the bundle or package manifest.
<?xml version="1.0" encoding="utf-8"?>
<AppInstaller
xmlns="http://schemas.microsoft.com/appx/appinstaller/2017/2"
Version="1.0.0.0"
Uri="http://mywebservice.azurewebsites.net/appset.appinstaller" >
<MainBundle
Name="Contoso.MainApp"
Publisher="CN=Contoso"
Version="2.23.12.43"
Uri="http://mywebservice.azurewebsites.net/mainapp.msixbundle" />
<OptionalPackages>
<Bundle
Name="Contoso.OptionalApp1"
Publisher="CN=Contoso"
Version="2.23.12.43"
Uri="http://mywebservice.azurewebsites.net/OptionalApp1.msixbundle" />
<Bundle
Name="Contoso.OptionalApp2"
Publisher="CN=Contoso"
Version="2.23.12.43"
Uri="http://mywebservice.azurewebsites.net/OptionalApp2.msixbundle" />
<Package
Name="Fabrikam.OptionalApp3"
Publisher="CN=Fabrikam"
Version="10.34.54.23"
ProcessorArchitecture="x64"
Uri="http://mywebservice.azurewebsites.net/OptionalApp3.msix" />
</OptionalPackages>
</AppInstaller>
Шаг 5. Добавление зависимостейStep 5: Add dependencies
В элементе зависимостей можно указать требуемые пакеты платформы для основного пакета или дополнительных пакетов.In the dependencies element, you can specify the required framework packages for the main package or the optional packages.
<?xml version="1.0" encoding="utf-8"?>
<AppInstaller
xmlns="http://schemas.microsoft.com/appx/appinstaller/2017/2"
Version="1.0.0.0"
Uri="http://mywebservice.azurewebsites.net/appset.appinstaller" >
<MainBundle
Name="Contoso.MainApp"
Publisher="CN=Contoso"
Version="2.23.12.43"
Uri="http://mywebservice.azurewebsites.net/mainapp.msixbundle" />
<OptionalPackages>
<Bundle
Name="Contoso.OptionalApp1"
Publisher="CN=Contoso"
Version="2.23.12.43"
Uri="http://mywebservice.azurewebsites.net/OptionalApp1.msixbundle" />
<Bundle
Name="Contoso.OptionalApp2"
Publisher="CN=Contoso"
Version="2.23.12.43"
Uri="http://mywebservice.azurewebsites.net/OptionalApp2.msixbundle" />
<Package
Name="Fabrikam.OptionalApp3"
Publisher="CN=Fabrikam"
Version="10.34.54.23"
ProcessorArchitecture="x86"
Uri="http://mywebservice.azurewebsites.net/OptionalApp3.msix" />
</OptionalPackages>
<Dependencies>
<Package Name="Microsoft.VCLibs.140.00" Publisher="CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US" Version="14.0.24605.0" ProcessorArchitecture="x86" Uri="http://foobarbaz.com/fwkx86.appx" />
<Package Name="Microsoft.VCLibs.140.00" Publisher="CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US" Version="14.0.24605.0" ProcessorArchitecture="x64" Uri="http://foobarbaz.com/fwkx64.appx" />
</Dependencies>
</AppInstaller>
Шаг 6. Добавление параметра обновленияStep 6: Add Update setting
В файле Установщика приложений можно также указать параметр обновления, чтобы связанные наборы автоматически обновлялись при публикации нового файла Установщика приложений.The App Installer file can also specify update setting so that the related sets can be automatically updated when a newer App Installer file is published. является необязательным элементом. is an optional element. В параметре OnLaunch указывает, что проверки обновлений должны выполняться при запуске приложения, а хаурсбетвинупдатечеккс = «12» указывает, что проверка обновлений должна выполняться каждые 12 часов.Within the OnLaunch option specifies that update checks should be made on app launch, and HoursBetweenUpdateChecks=»12″ specifies that an update check should be made every 12 hours. Если параметр HoursBetweenUpdateChecks не задан, интервал проверки обновлений по умолчанию — 24 часа.If HoursBetweenUpdateChecks is not specified, the default interval used to check for updates is 24 hours. Дополнительные типы обновлений, например фоновые обновления, можно найти в схемепараметров обновления. Дополнительные типы обновлений для запуска, такие как обновления с запросом, можно найти в схеме OnLaunch.Additional types of updates, like background updates can be found in the Update Settings schema; Additional types of on-launch updates like updates with a prompt can be found in the OnLaunch schema
<?xml version="1.0" encoding="utf-8"?>
<AppInstaller
xmlns="http://schemas.microsoft.com/appx/appinstaller/2017/2"
Version="1.0.0.0"
Uri="http://mywebservice.azurewebsites.net/appset.appinstaller" >
<MainBundle
Name="Contoso.MainApp"
Publisher="CN=Contoso"
Version="2.23.12.43"
Uri="http://mywebservice.azurewebsites.net/mainapp.msixbundle" />
<OptionalPackages>
<Bundle
Name="Contoso.OptionalApp1"
Publisher="CN=Contoso"
Version="2.23.12.43"
Uri="http://mywebservice.azurewebsites.net/OptionalApp1.msixbundle" />
<Bundle
Name="Contoso.OptionalApp2"
Publisher="CN=Contoso"
Version="2.23.12.43"
Uri="http://mywebservice.azurewebsites.net/OptionalApp2.msixbundle" />
<Package
Name="Fabrikam.OptionalApp3"
Publisher="CN=Fabrikam"
Version="10.34.54.23"
ProcessorArchitecture="x86"
Uri="http://mywebservice.azurewebsites.net/OptionalApp3.msix" />
</OptionalPackages>
<Dependencies>
<Package Name="Microsoft.VCLibs.140.00" Publisher="CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US" Version="14.0.24605.0" ProcessorArchitecture="x86" Uri="http://foobarbaz.com/fwkx86.appx" />
<Package Name="Microsoft.VCLibs.140.00" Publisher="CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US" Version="14.0.24605.0" ProcessorArchitecture="x64" Uri="http://foobarbaz.com/fwkx64.appx" />
</Dependencies>
<UpdateSettings>
<OnLaunch HoursBetweenUpdateChecks="12" />
</UpdateSettings>
</AppInstaller>
Полные сведения о схеме XML см. в разделе Справочник по файлу Установщика приложений.For all of the details on the XML schema, see App Installer file reference.
Примечание
Тип файла установщика приложений является новым в Windows 10, версия 1709 (Windows 10 Creators Update).The App Installer file type is new in Windows 10, version 1709 (the Windows 10 Fall Creators Update). Развертывание приложений Windows 10 с помощью файла установщика приложения в предыдущих версиях Windows 10 не поддерживается.There is no support for deployment of Windows 10 apps using an App Installer file on previous versions of Windows 10. Элемент хаурсбетвинупдатечеккс доступен начиная с Windows 10, версия 1803.The HoursBetweenUpdateChecks element is available starting in Windows 10, version 1803.
Создание msi-пакетов и установка любого ПО средствами групповых политик Windows / Хабр
Доброго времени суток, Хабр! Хочу представить интересный, по моему мнению, способ создания msi-инсталляторов для любого программного обеспечения и, как следствие, развертывание его средствами GPO. Подчеркну, что описанный метод не подразумевает создание «слепков» системы, а использует нативные инсталляторы софта, при чем для создания msi применяются только бесплатные для коммерческого использования продукты.
Введение, пара ссылок и дисклеймер
Каждый нормальный инсталлятор ПО имеет возможность автоматической установки с определенными или заложенными по умолчанию параметрами. Суть моего метода проста и заключается в том, чтобы запаковать нативный инсталлятор в «контейнер» msi и запустить его с необходимыми параметрами командной строки. В сети куча информации по автоматической установке того или иного приложения, и я не буду заострять на этом внимание. Наша цель, повторюсь, — установка ПО средствами групповых политик. Кстати, некоторые из вас могут возразить, что установку можно производить через ZAW, но, к сожалению, данный метод применим только для установки с правами текущего пользователя и не может применяться для централизованной автоматической установки приложений.
Интересный цикл статей по установке ПО через ГП. Для новичков рекомендую прочитать все, чтобы потом не спрашивать, чем отличается тип установки «назначенный» от «публичный».
Необходимый софт. Exe to MSI Converter freeware и всем известная orca Первый нужен для того, чтобы создать msi из exe, а вторая — чтобы получившийся msi-ник смог установиться через групповые политики.
Метод не претендует на полную уникальность и в некоторых местах могут встречаться излишества, которых можно было бы избежать, но это связанно отсутствием желания и необходимости слишком глубоко вникать в параметры таблиц msi-пакетов. Первоначальной целью ставилось быстро найти бесплатный способ создания msi и после нескольких часов, проведенных в чтении зарубежных форумов и бесконечных перезагрузках виртуальной машины, метод был найден. Также, статья — это не обзор интерфейса программ, и скриншотов вы не увидите.
Создание и подготовка пакета
Пример установки будет произведен для Mozilla Firefox, т. к. это широко известный продукт, не имеющий msi-инсталлятора от разработчиков.
- Запускаем exe to msi и указываем в нем путь к exe-установщику firefox. По ранее найденной в сети информации становится понятно, что по-тихому установить огнелиса можно с параметрами -ms -ira. Их-то и указываем во втором поле exe to msi и жмем «Build MSI».
- Казалось бы все, msi-пакет готов. Действительно, запустив получившийся результат мы получим установленный в системе firefox и в статье можно было бы ставить точку. К сожалению, не все так просто. Текущий пакет установки не пригоден для развертывания через GPO и при загрузке компьютера вы будете получать совершенно ничего не объясняющие ошибки в логах «произошла неисправимая ошибка…» А все дело в том, что разработчики exe to msi тоже хотят есть и их бесплатный продукт генерирует msi «не по правилам».
- Ну что ж, берем орку и открываем в ней наш эмсиайник.
- Первым делом находим в левом списке таблицу Property и обращаем внимания на два поля — ProductCode и UpgradeCode. Эти два поля должны быть уникальны для каждого продукта, а наш exe to msi генерит всегда одинаковые. Ну что ж, не беда, жмем в верхнем меню View -> Summary Information, находим поле PackageCode и жмем New GUID. Получившийся результат копируем в буфер обмена и вставляем в ProductCode. Повторяем для UpgradeCode и наконец для самого PackageCode. Тут же в Summary Information правим поле Title на Mozilla Firefox, остальное по желанию. Это, по сути, ни на что не влияет.
- Опять же в таблице Property меням ProductName на Mozilla Firefox (я до кучи меняю еще ARPCONTACT и Manufacturer). Можно так же поставить правильное значение для ProductVersion.
- Вроде бы GUID и прочие «IDы» поменяли, но как показывает практика, этого недостаточно. Жмите в orca Tools –> Validate, снимите птицу Show INFO Messages и нажимайте Go.
- Как видите, вылезла куча ошибок на наличие/отсутствие некоторых таблиц и значений. Я не стал заморачиваться и просто взял первый попавшийся (7zip x64 9.20) небольшой msi и скопировал оттуда 4 недостающие таблицы (через Export-Import, естественно): _Validation, AdminExecuteSequence, AdminUISequence и AdvtExecuteSequence. На самом деле, я уверен, что можно создать «правильный» msi-инсталлятор, без лишнего мусора, но не забывайте, наша цель всего лишь запустить родной setup приложения в тихую.
- После добавления таблиц проходим снова Tools –> Validate (к слову, первый раз проверку можно вообще не делать и сразу импортировать таблицы). Если вы тоже взяли за основу msi от 7zip, то результатом будет шесть эрроров, которые необходимо устранить. Жмите Close, удаляйте лишние поля, отмеченные красным.
- В конце можно еще раз проверить валидацию и убедиться что остались лишь ничем не мешающие варнинги. Сохраняем msi.
- Вот в принципе и все, осталось добавить msi в ГП и назначить необходимые свойства.
Нюансы
- При установке описанным выше методом у вас появятся как бы две копии софта. Первая — собственно нужное приложение, а вторая — исходный msi-ник, ведь мы же его как бы поставили. В принципе, это ни на что не влияет, кроме как на отображение в «Установка и удаление программ», и то, только в Windows XP (если вы ничего не меняли, кроме указанного мной). Минусом может быть появление лишних программ при автоматической инвентаризации софта, если вы ее используете.
- Автоматически удалить приложение теми же средствами развертывания не получится. Точнее получится, но удалится только и так не нужный msi-контейнер. Ну можно повозиться со свойствами msi при его создании, чтобы оно захватывало с собой установленное ранее приложение, так же втихую. Я такой задачи не ставил.
- При установке обновлений ПО нужно указывать в свойствах ГП приложения, чтобы оно заменяло предыдущее, т.е обязательно предварительно удаляло старое. Это гарантирует, что у вас не будут плодиться те самые никому не сдавшиеся левые дубли приложений в «установке и удалении программ».
- Чтобы установить приложение, имеющее дистрибутив из нескольких файлов, вам придется сначала упаковать его в exe, который при запуске сам распакуется и даст команду для тихой установки. Рекомендую создавать sfx-архивы средствами того же 7-zip.
- Ничего не мешает ставить ПО через скрипты автозагрузки. Более того, такой метод более гибкий, и я давно его использую через свои скрипты. Вот только использование родных средств ГП получается намного быстрее, т. к. простое создание msi из exe занимает пару минут.
- Windows 7 почему-то не пишет «Установка управляемого приложения…», а просто говорит «пожалуйста, подождите». При первом развертывании всей кучи софта разом или при установке тяжелого приложения это может сподвигнуть юзера на звонок админу или нажатие кнопки резет.
На этом вроде бы все, надеюсь было интересно, делитесь опытом.
Путеводитель по системам для создания инсталляторов
Часть 1
Знакомство пользователя с программой чаще всего начинается с запуска инсталлятора. Внешний вид («упаковка») и функциональность продукта определяется разработчиком. Пользователю нужно иметь возможность проконтролировать процесс, выставив нужные параметры установки. Для разработчика же важно, чтобы, как минимум, его программа была установлена корректно, а инсталлятор был совместим с необходимыми платформами.
Решений для создания инсталляторов достаточно много. Чаще всего используется подсистема Windows Installer, которая уже входит в инструментарий операционной системы. Но существуют и альтернативные решения — как платные, так и бесплатные, различной функциональности. Зачастую с их помощью можно создавать пакеты с инсталлятором, не зависящим от Windows Installer.
Путеводитель включает в себя всевозможные системы для создания инсталляторов, основные аспекты их обзора следующие:
- Среда разработки, интерфейс, поддержка сценариев
- Работа с проектом, типы создаваемых пакетов, возможности импорта проектов из других сред разработки
- Пользовательские опции инсталлятора: поддержка языков, профилей и другие опции
- Поддержка расширений
NSIS (Nullsoft Scriptable Install System)
Домашняя страница: http://nsis.sourceforge.net/
NSIS — бесплатный и широко известный инструментарий для создания инсталляционных пакетов в среде Windows. Отличительные особенности — компактность, масштабируемость, поддержка плагинов и локализаций. Из других возможностей NSIS: поддержка сценариев, различных вариантов установки (включая несколько проектов внутри одного инсталлятора), создание веб-инсталляторов.
Дистрибутивы NSIS создаются на основе сценариев. Переменные, функции полностью контролируют как инсталляцию, так и деинсталляцию продукта. С помощью скриптов можно добавлять файлы и директории, вносить изменения в реестр, редактировать текстовые и двоичные файлы, создавать патчи, управлять переменными среды и даже обращаться к Windows API (посредством расширений).
Синтаксис языка NSIS достаточно прост и удобен для чтения, основная документация к нему доступна здесь. Более того, в комплекте с программой содержится большое количество примеров (файлы формата nsi доступны в папке Examples). Для редактирования nsi-сценариев пригоден любой редактор кода, где без особых усилий можно включить подсветку синтаксиса. Множество задач сразу унифицируется, если использовать специальный плагин для IDE Eclipse, EclipseNSIS, либо Venis. Venis представляет собой интуитивную визуальную среду для создания сценариев.
Удобно работать с NSIS в связке и с другими программами, например, Excelsior Installer (см. ниже).
Если возникает необходимость расширить возможности инсталлятора, можно добавить определенные функции. Плагины пишутся на C, C++, Delphi или других языках. Готовые примеры расширений доступны здесь. Функции разнообразны: от визуальных эффектов инсталлятора до создания патчей и обращения к Windows API.
Скомпилировать инсталлятор можно с помощью инструмента makensis, предварительно выбрав тип компрессии — ZLib, BZip2 или LZMA. Кроме того, сам по себе инсталлятор занимает немного места — всего 34 КБ.
Графический интерфейс инсталлятора доступен в одном из двух вариантах исполнения — Classic или Modern. Более функциональный Modern (на данный момент используется его версия 2.0) позволяет создавать страницы мастера установки с использованием текста, шрифтов, изображений, диалогами, опциями и др. На данном этапе помощь окажет программа NSIS Dialog Designer. Она позволяет быстро конструировать интерфейс, а полученный результат сохранять в формат nsdinc, который затем несложно интегрировать в .nsi-скрипт.
Резюме. Среда NSIS уже давно зарекомендовала себя, и в доказательство — список разработчиков, которые используют ее возможности. Несложный язык сценариев, наличие всех необходимых функций, возможность расширения, доступность основных и дополнительных инструментов — за счет всего этого NSIS составляет сильную конкуренцию программам в данной категории.
Inno Setup
Домашняя страница: http://www.jrsoftware.org/
Inno Setup — бесплатный инструментарий для создания инсталляторов на базе сценариев. Среди главных особенностей продукта — работа со всеми версиями ОС Windows (Windows 2000 и выше), расширенная поддержка 64-битных приложений, настраиваемые типы установки, встроенный препроцессор и мощный язык сценариев на основе Pascal.
Сценарии имеют структуру, характерную конфигурационным файлам ini-формата, поэтому код вполне хорошо читаем и удобен в редактировании. Документ разделен на секции, и каждая из них отвечает за определенную задачу инсталлятора соответственно. Всего имеется два типа секций — с параметрами и «директива—значение».
Разработчикам, знакомым с Pascal, будет на руку тот факт, что Inno использует «родственный» язык — RemObjects Pascal Script. Сценарии отвечают за добавление новых опции, создание интерфейса, вызов файлов или библиотек, настраиваемые действия (custom actions) и т. д. В рабочей папке Inno Setup находятся примеры скриптов (также доступны в меню компилятора). По умолчанию в Inno Setup входит компилятор сценариев Compiler IDE. Для быстрого старта рекомендуется также установить Inno Script Studio. Этот редактор проектов входит в редакцию QuickStart Pack, скачать ее можно здесь. Для упрощения задач может быть полезен визуальный редактор сценариев — IsTool.
Самый простой вариант создания инсталлятора — обратиться к пошаговому мастеру настройки Inno Script Studio. Здесь указывается информация о продукте, координаты программы, файл лицензии и другие данные, языки локализации, опции компилятора. Впоследствии проект доступен для компиляции, отладки либо модификации полученного сценария в окне редактора.
Редактор Inno Script Studio доступен на русском языке. Значительно проще настраивать проект последовательно, переходя по секциям, а не создавая сценарий с нуля. При добавлении нового элемента изменения вносятся в код сценария, синтаксис подсвечивается, код соответствующим образом разбит на секции ([Setup], [Types], [Components]…).
Разделы редактора не сгруппированы, но структура вполне узнаваема. Логически их можно разделить следующим образом:
- Содержимое дистрибутива: Файлы, Каталоги, Иконки, Файлы INI, Реестр
- Сообщения и пользовательские сообщения,
- Пользовательские опции: Типы, Компоненты, Задачи, Языки
- Действия: Выполнить, Удалить перед установкой, Выполнить перед деинсталляцией, Удалить после деинсталляции
- Код сценария: Код Паскаля, Этапы предкомпиляции, Этапы посткомпиляции
Русская локализация иногда вводит в заблуждение, как всегда и обстоит с не очень качественным переводом.
Из других особенностей Inno Setup — тихая инсталляция и деинсталляция. Пользователю доступны различные типы установки и локализации на выбор. Установщик может быть зашифрован, содержать цифровую подпись либо защищен паролем. К дистрибутиву может применяться bzip2- или LZMA/LZMA2-компрессия. Интерфейс — в стиле 2000/XP, иных вариантов не предусмотрено.
Резюме. Inno Setup — ближайшая альтернатива NSIS. Позволяет задействовать как мощный язык сценариев, так и удобный и гибко настраиваемый редактор Inno Script Studio, доступный практически «из коробки».
IzPack
Домашняя страница: http://izpack.org/
Чаще всего, среда разработки инсталлятора закреплена за определенной платформой, и разработчик вынужден использовать различный инструментарий для каждой из них. IzPack решает вопрос кроссплатформенности, используя для своих нужд универсальную среду разработки Java.
Главные особенности IzPack: XML-синтаксис, интеграция с различными инструментами компиляции, простой и гибкий API-интерфейс, возможность локализации.
источник
Среди особенностей инсталляторов, созданных средствами IzPack, — небольшой размер и модульность. В основе дистрибутива лежит XML-документ, где указываются все необходимые спецификации, определяется функциональность продукта. Впоследствии конфигурационный файл обрабатывается любым удобным способом, для этого используется командная строка или Apache Ant. Для наращивания функциональности инсталлятора могут быть задействованы IDE среды, такие как Eclipse, IntelliJ IDEA или Netbeans. Для составления конфигурационного файла подойдет любой редактор кода.
В XML-документе указывается информация о проекте (), интерфейс (), локализации (), файлы (), ресурсы (), панели (), содержимое ( — может быть упаковано в raw, gzip, bzip2) и др. Что касается java, в IzPack есть возможность применения действий (custom acrions) и переменных — встроенных, пользовательских и переменных среды (см. документацию и неофициальное руководство).
Для создания графического интерфейса инсталлятора предназначены панели. С их помощью определяется внешний вид, экрана приветствия, содержимое, текстовая информация (readme, лицензии), изображения. Поддерживаются различные типы интерактивных элементов (поля, переключатели и т. д.), локализация, включая русскую. Переводу поддается как интерфейс, так и содержание.
Для создания самораспаковывающихся модулей применяется метод 7-Zip SFX, использующий возможности известного архиватора. Для Mac OS также доступна оболочка под названием izpack2app.Кроме того, есть возможность создания веб-инсталлятора, для этих целей присутствует оболочка izpack2jnlp, использующая возможности Java Web Start. IzPack поддерживает опцию тихой установки.
Резюме. IzPack — одна из немногих кроссплатформенных систем для создания инсталляторов. Процесс написания конфигурации, компиляции и отладки удобен за счет интеграции со средами разработки, несложен в освоении. Из недостатков следует отметить значительно устаревший (и не оригинальный — native) вид получаемого инсталлятора.
Excelsior Installer
Домашняя страница: http://installer.excelsior-usa.com/ru/
Excelsior Installer — бесплатная программа, предназначенная для создания инсталляторов и обновлений. Основные особенности — простая интуитивная графическая оболочка, возможность интеграции с Проводником и NSIS.
Создание дистрибутива или обновления производится с помощью упаковщика (Packager). Он содержит пошаговый мастер, содержащий настройки проекта. На основе проекта очень просто скомпилировать восьмишаговый инсталлятор. Согласно описанию, это делается и вовсе двумя кликами мыши, но в обязательном порядке в упаковщике необходимо определить следующие параметры:
- Файлы и папки приложения, ярлыки
- Описание: имя компании, название продукта, версия продукта
Упаковщик состоит из разделов Files (Файлы), Settings (Настройки) и Appearance (Внешний вид). В целом, здесь содержится стандартный перечень опций, отвечающих за создание лицензионного соглашения, выбор инсталляционной директории, ярлыков, ключей реестра и другие параметры. Если изучить таблицу сравнения продуктов, легко обнаружить следующий функциональный «пробел»: инсталлятор не поддерживает файловые ассоциации, DLL-расширения, элементы управления.
Что касается доступных опций инсталлятора — можно указать профиль установки, в зависимости от привилегий текущего пользователя. Инсталлятор поддерживает локализацию, причем русский язык доступен «из коробки», остальное скачивается отдельно. Возможна автоматическая — тихая — инсталляция без запроса данных у пользователя, после установки — проверка целостности пакета или другие настраиваемые действия.
Как уже было упомянуто, возможна интеграция Excelsior с NSIS. Excelsior Installer, по сути, выступает полноценным GUI для NSIS, настройки проекта экспортируются без проблем.
В ряду с этим участником обзора, стоит выделить еще один родственный продукт — Excelsior Delivery. По большей части функции Excelsior Installer дублируются. Но есть также и несколько дополнительных функций: добавление в систему OLE- и ActiveX-элементов, файловых ассоциаций, библиотек, создание опросов пользователей. Лицензионная версия Excelsior Delivery (стоимостью $99) позволяет также применить к установщику фирменное оформление (branding). Если эта опция неважна, можно скачать некоммерческую версию программы.
Резюме. Excelsior Installer — простая и очень понятная система для создания дистрибутивов, может использоваться как надстройка к NSIS. Обратная сторона медали — усредненная функциональность как Excelsior Installer, так и Delivery.
WiX Toolset
Домашняя страница: http://wixtoolset.org/
WiX (Windows Installer XML) — бесплатный набор инструментов для создания инсталляторов (Windows Installer) с использованием спецификации XML. Из особенностей: интерфейс командной строки, интеграция с IDE, автоматизация процессов, поддержка базовых и расширенная поддержка Windows Installer.
Ядро WiX составляют компилятор (candle), компоновщик (light), библиотекарь (lit), декомпилятор (dark), бутстраппер инсталляции (burn) и другие утилиты. С их помощью можно создавать пакеты инсталляции .msi, модули слияния .msm, патчей .msp.
Создание инсталлятора состоит из нескольких основных этапов: разработка сценария, его проверка, обработка препроцессором, компиляция и компоновка. Для сборки инсталлятора и автоматизации в целом используется платформа MSBuild. Автоматизация — одно из главных преимуществ WiX при работе с достаточно ресурсоемкими проектами.
Исходный код имеет формат XML (расширение файла wxs). Сценарий описывает все этапы установки, начиная с описания проекта заканчивая действиями после установки. Редактировать его можно в любом редакторе с поддержкой данного формата.
WiX радует своими интеграционными возможностями: WiX Toolset предоставляет интерфейс командной строки. Для работы с проектом в Visual Studio (модуль IntelliSense) потребуется расширение Votive.
В затруднительных ситуациях или при отсутствии времени на изучение сценариев, хорошую службу окажет графическая оболочка WiXEdit. Ее основные преимущества — импорт существующих wxs-проектов, структурирование xml-данных с удобным чтением и навигацией. С помощью мастера также несложно создать инсталляционный файл с нуля. Причем это далеко не единственный подобный инструмент (см. здесь).
Резюме. В данном случае, многое решает спецификация XML. WiX дает возможность программистам оперировать исходными данными, не прибегая к графической оболочке. В состав WiX входят все необходимые инструменты, вдобавок к этому функциональность инсталлятора может быть улучшена за счет расширений.
Создание файла Установщика приложений в Visual Studio — MSIX
-
- Чтение занимает 2 мин
В этой статье
Начиная с Windows 10, версии 1803 и Visual Studio 2017, обновление 15,7, загруженные неопубликованные приложения можно настроить для получения автоматических обновлений с помощью .appinstaller
файла.Starting with Windows 10, Version 1803, and Visual Studio 2017, Update 15.7, sideloaded apps can be configured to receive automatic updates using an .appinstaller
file. Visual Studio поддерживает включение этих обновлений.Visual Studio supports enabling these updates.
Местоположение файла установщика приложенийApp Installer file location
Файл .appinstaller
можно разместить в общем расположении, например конечной точке HTTP или общей папке UNC. Этот файл включает путь для поиска пакетов приложения, которые требуется установить.The .appinstaller
file can be hosted in a shared location like a HTTP endpoint or a UNC shared folder, and includes the path to find the app packages to be installed. Пользователи устанавливают приложение из общего расположения и включают периодические проверки обновлений.Users install the app from the shared location and enable periodic checks for new updates.
Настройка проекта для подходящей версии WindowsConfigure the project to target the correct Windows version
Можно настроить свойство TargetPlatformMinVersion
при создании проекта или изменить его позже в свойствах проекта.You can either configure the TargetPlatformMinVersion
property when you create the project, or change it later from the project properties.
Важно!
Файл установщика приложения создается только при использовании TargetPlatformMinVersion
Windows 10 версии 1803 или более поздней.The app installer file is only generated when the TargetPlatformMinVersion
is Windows 10, Version 1803 or greater.
Создание пакетовCreate packages
Чтобы распространить приложение с помощью загрузки неопубликованных приложений, необходимо создать пакет приложения (Appx/. msix) или набор приложений (. appxbundle/. msixbundle) и опубликовать его в общем расположении.To distribute an app via sideloading, you must create an app package (.appx/.msix) or app bundle (.appxbundle/.msixbundle) and publish it in a shared location.
Для этого используйте мастер создания пакетов приложения в Visual Studio и выполните следующие шаги.To do that, use the Create App Packages wizard in Visual Studio with the following steps.
Щелкните проект правой кнопкой мыши и выберите Магазин -> Создать пакеты приложения.Right-click the project and choose Store -> Create App Packages.
Откроется мастер Создание пакетов приложения.The Create App Packages wizard appears.
Выберите Я хочу создать пакеты для загрузки неопубликованных приложений.Select I want to create packages for sideloading. и Включить автоматические обновленияand Enable automatic updates
Включить автоматические обновления включается, только если для
TargetPlatformMinVersion
проекта указана подходящая версия Windows 10.Enable automatic updates is enabled only if the project’sTargetPlatformMinVersion
is set to the correct version of Windows 10.Не забудьте выбрать поддерживаемые конфигурации архитектуры в диалоговом окне Выберите и настройте пакеты.The Select and Configure Packages dialog allows you to select the supported architecture configurations. Если выбран пакет, он создаст отдельный установщик, однако если вы не хотите использовать пакет и предпочитаете по одному пакету на архитектуру, вы получите один файл установщика на архитектуру.If you select a bundle it will generate a single installer, however if you don’t want a bundle and prefer one package per architecture you will also get one installer file per architecture. Если вы не уверены, какие архитектуры выбрать, или хотите узнать больше о том, какие архитектуры используются разными устройствами, см. информацию в разделе Архитектуры пакета приложения.If you’re unsure which architecture(s) to choose, or want to learn more about which architectures are used by various devices, see App package architectures.
Настройте любые дополнительные сведения, включая номер версии и выходное расположение пакета.Configure any additional details, such as version numbering or the package output location.
Если установлен флажок Включить автоматические обновления в шаге 2, отобразится диалоговое окно Настройка параметров обновления.If you checked Enable automatic updates in Step 2, the Configure Update Settings dialog will appear. Здесь можно указать URL-адрес установки и периодичность проверки обновлений.Here, you can specify the Installation URL and the frequency of update checks.
Если приложение успешно упаковано, в диалоговом окне отобразится расположение выходной папки, которая содержит ваш пакет приложения.When your app has been successfully packaged, a dialog will display the location of the output folder containing your app package. Выходная папка содержит все файлы, необходимые для загрузки неопубликованного приложения, включая страницу HTML, которую можно использовать для продвижения вашего приложения.The output folder includes all the files needed to sideload the app, including an HTML page that can be used to promote your app.
Публикация пакетовPublish packages
Чтобы сделать приложение доступным, необходимо опубликовать созданные файлы в указанном местоположении:To make the application available the generated files must be published to the location specified:
Если требуется опубликовать пакеты с помощью общих папок UNC, укажите один и тот же путь для выходной папки пакета приложения и URL-адреса установки (см. подробные сведения в шаге 6).If you want to publish your packages over Universal Naming Convention (UNC) shared folders, configure the app package output folder and the Installation URL (see Step 6 for details) to the same path. Мастер создаст файлы в правильном местоположении, а пользователи будут получать приложение и будущие обновления к нему по тому же пути.The wizard will generate the files in the correct location, and users will get both the app and future updates from the same path.
Публикация в местоположении в Интернете (HTTP)Publish to a web location (HTTP)
Чтобы выполнить публикацию в местоположении в Интернете, требуется доступ, позволяющий публиковать содержимое на веб-сервере. Убедитесь, что окончательный URL-адрес соответствует URL-адресу установки, определенному в мастере (см. подробные сведения в шаге 6).Publishing to a web location requires access to publish content to the web server, making sure the final URL matches the Installation URL defined in the wizard (see Step 6 for details). Как правило, для отправки файлов используется протокол FTP или SFTP, однако существуют и другие методы публикации, например MSDeploy, SSH или хранилище BLOB-объектов (в зависимости от вашего интернет-провайдера).Typically, File Transfer Protocol (FTP) or SSH File Transfer Protocol (SFTP) are used to upload the files, but there are other publishing methods like MSDeploy, SSH, or Blob storage, depending on your web provider.
Чтобы настроить веб-сервер, необходимо проверить MIME-типы, используемые для применяемых типов файлов.To configure the web server you must verify the MIME types used for the file types in use. Это пример web.config
для служб IIS:This example is of the web.config
for Internet Information Services (IIS):
<configuration>
<system.webServer>
<staticContent>
<mimeMap fileExtension=".appx" mimeType="application/vns.ms-appx" />
<mimeMap fileExtension=".appxbundle" mimeType="application/vns.ms-appx" />
<mimeMap fileExtension=".appinstaller" mimeType="application/xml" />
</staticContent>
</system.webServer>
</configuration>
Как создать для программы тихий инсталлятор? или установка Mozilla Firefox без лишних вопросов |
Здравствуйте, дорогие читатели.
сегодня по просьбам людей я решил рассказать, как из обычного установщика программы сделать тихий инстолятор.
что такое тихий инстолятор? это обычный инстолятор, но ему передаётся специальный параметр, чтобы он не задавал пользователю вопросов, связанных с установкой.
Тренироваться мы будем на Mozilla Firefox версии 27.0.1 и нашем компьютере, без которого будет бесполезен в корне этот труд! 🙂
что нам понадобится:
- руки и голова, это самое главное.
- Блокнот. это думаю у вас найдётся.
- сам инстолятор. это совсем не проблема.
- Архиватор 7-zip, но если у вас уже установлен WinRar, то и он подойдёт.
- Остальное выбирайте сами, кому пригодится больше справка по пакетным файлам, а кому и крепкий кофе с плиткой шоколада.
Предисловие
Простым языком: пакетный файл — это такой файл, в котором последовательно записаны команды для интерпритатора cmd.exe. эти команды выполняются последовательно т.к., в пакетном режиме. по этому и называются они пакетными файлами.
Для тихой установки мы будем использовать такой файл, ибо именно через него проще всего передать параметры инсталлятору, чтобы он поставил программу так, чтобы не дыма, ни огня, а программа была, появилась у нас в системе как чёрт из табакерки.
Для чего это нужно?
Всё просто: кому-то надо быстро поставить много программ, а кому-то тихо внедрить программу в систему :-), но это уже не тема данной статьи.
Я постараюсь описать всё как можно подробнее. чтобы понял даже новичок в этом деле и вопросов не возникла, но если будут, постараюсь на все ответить.
Приступаем к работе
Итак, для начала подготовимся.
Качаем 7-zip на компьютер и устанавливаем его.
Затем качаем русский дистрибутив Mozilla Firefox, однако устанавливать его пока не будем: пусть он подождёт и отдохнёт.
На этом дистрибутиве мы и будем проводить свои эксперименты в области тихой установки.
Вот и всё, подготовку объявляем завершённой, вперёд!
Создание тихого инстолятора
Так как дистрибутив Firefox является уже своего рода архивом, а главный инстолятор внутри, распаковываем его в отдельную папку с помощью 7-zip.
После распаковки в директории, куда распаковали дистрибутив, мы увидим две папки
и файл setup.exe
именно этот файл является установщиком программы, ему и будем передавать параметры.
В этой же папке давайте создадим текстовой файл, но его имя изменим на «install.bat», заметьте расширение тоже надо менять.
Создали? отлично! Теперь в контекстном меню выберем пункт «Изменить и пишем туда следующий текст:
@echo off
echo Please wait, program installing
start /wait setup.exe /s
exit
Закрываем и сохраняем изменения.
Теперь подробнее о том, что означают команды.
@echo off
Отключаем вывод команд на экран, зачем, ведь мы сами знаем, какие команды туда вписали.
start /wait setup.exe /s
Запускаем программу установки, да не просто, а передаём ей параметр «S», что значит тихую установку программы.
Он записан в конце «/s»
к тому же к команде «start» мы добавили параметр «/wait», чтобы выполнение дальнейших команд приостановилось до закрытия программы установки. Если окошко с уведомлением вам не нужно, то этот параметр убираем.
echo Please wait, program installing
Тут вовсе просто: выводим текст «Please wait, program installing» на экран.
Если параметр «wait» не используется, то выводить текст на экран большого смысла нет, так что эту строчку можно совсем исключить из файла.
exit
Просто закрываем сеанс работы с cmd.exe. он конечно и сам может, но чтобы уж точно закрылся лучше напишем.
Вот и всё! теперь запускаем созданный нами файл «install.bat» и проверяем работу.
Если что-то не так, то читаем статью с самого начала очень внимательно и повторяем всё снова, а если всё у вас получилось, то поздравляю! вы успешно научились устанавливать Firefox в тихом режиме и по аналогии сможете таким же образом установить многие программы, которые принимают параметр «S», как сигнал для тихой установки. И по правде говоря их достаточно много.
Что делать, если параметр «S» не работает, я расскажу уже в следующих статьях.
Всем желаю удачной тихой установки!
Читайте также
Типы инстоляторов и их ключи для тихой установки
Упаковка *.exe с помощью Win Rar
© Евгений Поплавский, 2014
Специально для TifloHelp.ru
Как сделать установочный файл EXE
Что вы делаете, когда создали новое программное обеспечение Windows и хотите поделиться им со всем миром? В идеале вы должны создать установочный пакет EXE.Вот как.
Что вы делаете, когда создаете новое программное обеспечение для Windows — от простого диагностического инструмента до сложной компьютерной видеоигры — и хотите поделиться им со всем миром? Что ж, вы можете сжать файлы в один ZIP-файл и распространить его.
Или вы можете пофантазировать и вместо этого создать установщик EXE.
В этом посте мы рассмотрим три различных метода: самораспаковывающийся пакет, простой установщик с использованием встроенного IExpress и расширенный установщик с использованием настраиваемой Inno Setup.
Быстрый метод: использование 7-Zip
Вероятно, вы уже используете 7-Zip для извлечения всех видов архивных файлов, и вы, вероятно, уже знаете, что 7-Zip может создавать архивные файлы, но знаете ли вы, что вы также можете использовать его для создания EXE-файла, который действует как установщик?
Он называется SFX-архивом («самораспаковывающийся») и работает, сжимая все ваши конечные файлы вместе, а затем встраивая в архив специальный EXE-файл, который знает, как все распаковать.Другими словами, получатель может извлечь SFX-архив (который выглядит как EXE-файл), даже если у него нет подходящего программного обеспечения, что может случиться с такими форматами, как 7Z, RAR, TAR и ZIP.
Как создать свой собственный SFX-архив с помощью 7-Zip:
- Подготовьте все ваши файлы и каталоги в одном основном каталоге и назовите каталог как хотите.
- Щелкните правой кнопкой мыши каталог и выберите 7-Zip> Добавить в архив …
- В разделе Options включите Create SFX Archive и выберите следующие параметры … > Archive Format: 7z> Уровень сжатия: Нормальный> Метод сжатия: LZMA2> Размер словаря: 16 МБ> Размер слова: 32> Размер сплошного блока: 2 ГБ
- Нажмите OK .Готово!
Обратите внимание, что SFX-архивы не являются настоящими файлами установщика. Они не помещают извлеченные файлы в назначенный целевой каталог. Они не изменяют реестр Windows. Они не создают журналы установки и не отображаются как «установленное программное обеспечение» в приложении «Удалить». Это буквально архивные файлы, оформленные как EXE-файлы.
Скачать — 7-Zip (бесплатно)
Простой метод: использование IExpress
IExpress — это утилита, которая поставляется в комплекте с версиями Windows, начиная с Windows XP и выше.Утилита имеет внешний графический интерфейс (называемый IExpress Wizard), но вы также можете создавать файлы установщика, используя файлы директивы самоизвлечения (SED), написанные вручную. Мы рекомендуем Мастера.
Как и 7-Zip выше, этот метод создает самораспаковывающийся архив, но с двумя основными отличиями: во-первых, конечный пользователь будет проходить через многостраничный мастер установки, а во-вторых, конечный пользователь может указать целевой каталог, в котором находится инструмент. распакует файлы.
Как создать свой установщик EXE с помощью IExpress:
- Откройте строку «Выполнить» (клавиша Windows + R ) и введите iexpress.exe для запуска мастера IExpress.
- Выберите Создать новый файл директивы самоизвлечения и щелкните Далее .
- Выберите Извлечь только файлы и нажмите Далее .
- В качестве заголовка пакета можно использовать имя вашего приложения.
- Для запроса подтверждения выберите Нет запроса или Запрашивать пользователя с . В любом случае это не имеет значения. Для конечного пользователя включение одного — всегда безопасный выбор.
- Для лицензионного соглашения: Отображение лицензии , если вы хотите, чтобы конечный пользователь согласился с каким-либо лицензионным соглашением с конечным пользователем (EULA). В противном случае можно выбрать . Не отображать лицензию .
- Добавьте все файлы, которые вы хотите видеть установленными, щелкнув Добавить , перейдя туда, где находятся файлы, и выбрав их все.
- Продолжите работу с мастером IExpress и выберите предпочтительные параметры для запросов Show Window и Finished Message .
- В качестве имени пакета щелкните Обзор , перейдите туда, где вы хотите создать установщик EXE, и дайте ему имя. Это EXE-файл, который вы собираетесь распространить среди конечных пользователей. Щелкните Далее .
- Наконец, выберите Сохранить файл директивы самоизвлечения (SED) , если вы хотите создать измененный установщик позже, например, когда вы исправили программное обеспечение и вам нужен обновленный установщик. Если вы выберете Не сохранять , вам придется выполнить весь процесс с нуля.
- На странице Создать пакет щелкните Далее . Подождите. Готово!
Обратите внимание, что у IExpress есть некоторые особенности и проблемы. Не позволяет включать пустые каталоги. Если в вашей установке есть подкаталоги, подкаталоги не будут включены. Если у вас есть несколько файлов с одинаковым именем, даже в разных каталогах, создание установщика не удастся.
Из-за этих странностей мы рекомендуем вместо этого использовать метод ниже.
Рекомендуемый метод: использование Inno Setup
Inno Setup — это утилита с открытым исходным кодом, которая активно разрабатывается с 1997 года.Он был создан частично в ответ на то, что в то время было второстепенным InstallShield Express. С тех пор он стал предпочтительным создателем установщика для тех, кто не хочет изучать проприетарные варианты.
Его самая большая привлекательность — это его гибкость.Inno Setup использует файлы сценариев с расширением ISS («Inno Setup Script») для настройки различных аспектов программы установки: какие файлы включены, где происходит установка, нужно ли создавать ярлыки и т. Д. Файлы ISS используют форматирование, аналогичное файлам INI. и может быть создан с помощью мастера установки Inno.
Как создать свой собственный установщик с помощью Inno Setup:
- Запустите приложение Inno Setup Compiler.
- В приглашении выберите Создайте новый файл сценария с помощью мастера сценариев .
- Введите имя и версию приложения. При желании вы также можете указать сведения об издателе приложения и веб-сайте приложения. Щелкните Далее .
- Выберите Базовую папку назначения , которая по умолчанию — Program Files. Введите имя папки Application , которая является именем основного каталога, в который будут помещаться ваши установочные файлы.Щелкните Далее .
- Для Главный исполняемый файл приложения найдите и выберите главный EXE-файл, который запустит ваше приложение. Если вы не устанавливаете приложение, включите . У приложения нет основного исполняемого файла . Затем добавьте файлы и папки в вашу установку с помощью кнопок Добавить файлы … и Добавить папки … . Щелкните Далее .
- На странице «Ярлыки приложений» оставьте значения по умолчанию или измените их в соответствии со своими предпочтениями.Все они говорят сами за себя. Щелкните Далее .
- На странице документации приложения вы можете указать до трех файлов TXT, которые будут отображаться в процессе установки конечного пользователя. Обычно это LICENSE.TXT, INSTALL.TXT и README.TXT, но они могут быть какими угодно. Щелкните Далее .
- На странице «Настройка языков» оставьте английский , но не стесняйтесь добавлять столько других языков, сколько хотите. Щелкните Далее .
- На странице «Параметры компилятора» вы можете настроить EXE-файл установщика: > Пользовательская папка вывода компилятора. — это место, где будет помещен полученный EXE-файл установщика. > Имя базового файла вывода компилятора — это то, что будет называться EXE-файлом. Значение по умолчанию — setup.exe . > Файл значка выборочной установки — это значок, который будет использоваться для EXE-файла установщика. Это должен быть файл ICO, который вы можете скачать или преобразовать из PNG.
- Пароль программы установки защитит неавторизованных пользователей от использования вашего установщика.Оставьте поле пустым, чтобы отключить эту функцию.
- Нажмите Готово . Когда будет предложено скомпилировать новый сценарий, нажмите Да . Когда будет предложено сохранить сценарий, выберите Нет , если это одноразовый файл установщика, или выберите Да , если вы планируете изменить или обновить его позже. Готово!
Скачать — Inno Setup (бесплатно)
Какой метод подходит вам?
Если ваше программное обеспечение очень простое или вы собираетесь распространять его среди ограниченного числа людей, используйте метод 7-Zip.Это просто, быстро и практически не требует технических знаний.
Если ваше программное обеспечение несколько простое и вы хотите предоставить конечным пользователям настоящий мастер установки, воспользуйтесь методом IExpress.
Если ваше программное обеспечение сложное и у вас за плечами большой технический опыт, воспользуйтесь методом Inno Setup.Он самый гибкий, самый мощный и не страдает от проблем, присущих IExpress.
Какой метод вы будете использовать? Есть ли другие методы, которые мы упустили? Дайте нам знать в комментариях ниже!
Изображение предоставлено: sdecoret, DaGa5 через Shutterstock.com
Как отслеживать местоположение сотового телефона, используя только номер телефона
Потеряли телефон? Пытаетесь найти ребенка или присмотреть за ним? Это приложение может помочь.
Об авторе
Джоэл Ли
(Опубликовано 1604 статей)
Джоэл Ли имеет степень бакалавра наук. Кандидат компьютерных наук и более девяти лет профессионального опыта в области написания и редактирования.Он является главным редактором MakeUseOf с 2018 года.
Ещё от Joel Lee
Подпишитесь на нашу рассылку новостей
Подпишитесь на нашу рассылку, чтобы получать технические советы, обзоры, бесплатные электронные книги и эксклюзивные предложения!
Еще один шаг…!
Подтвердите свой адрес электронной почты в только что отправленном вам электронном письме.
.
Создайте установщик из Visual Studio
В следующей статье используются параметры, доступные, начиная с версии Freeware и типа проекта.
Это руководство покажет вам, как создавать установщики для ваших решений Visual Studio с помощью Visual Studio 2017.
Мы начнем с добавления проекта расширенного установщика к существующему решению, редактирования его и создания пакета. После этого мы включим в решение новый проект Visual Studio и соберем оба проекта в одном пакете.
1. Откройте решение Visual Studio
Откройте решение, для которого вы хотите создать установочный пакет.
2. Добавьте проект расширенного установщика к решению
После загрузки решения Visual Studio:
- В диалоговом окне «Новый проект» выберите проект расширенного установщика
- В поле «Решение» выберите Добавить к варианту решения
- В поле «Имя» вы можете написать имя для своего проекта.
- Нажмите [OK], чтобы добавить проект в решение.
По умолчанию при добавлении проекта Advanced Installer Project Выходные данные сборки решения не будут автоматически добавлены в проект установщика, для этого необходимо:
- Перейти в раздел «Файлы и папки» проекта установщика
- Нажмите кнопку «Добавить выход проекта»
- Выберите «Основной вывод» и «Ссылки»
- Нажмите [OK]
Вывод каждого проекта, содержащегося в решении, автоматически синхронизируется в Advanced Insta ller проект.
После этих шагов Advanced Installer Extension для Visual Studio добавляет в проект установщика все ссылки на приложения, кроме сборок Microsoft .NET.
3. Создайте первый установочный пакет
В Visual Studio выберите «Сборка»> «Сборка решения», чтобы начать сборку.
После успешного завершения сборки будут созданы два основных файла: HelloWorld.exe, который является результатом проекта C #, и проекта установщика.msi, который является установочным пакетом.
4. Отредактируйте проект установщика
Используя программу просмотра Advanced Installer Project, вы можете редактировать основную информацию об установщике, такую как Сведения о продукте, Условия запуска, Параметры установки и многое другое. .
Предположим, у нас есть версия Advanced Installer Enterprise . По умолчанию проект установщика будет создан на основе лицензии Freeware .Поскольку мы хотим использовать функции из выпуска Enterprise , такие как выбор темы для диалоговых окон установки, нам необходимо обновить тип нашего проекта:
- Нажмите кнопку [Изменить в расширенном установщике], чтобы открыть проект установщика в расширенном режиме. Установщик
- В меню «Проект» выберите «Параметры …».
- Перейдите на вкладку «Тип проекта» и выберите Enterprise
- Нажмите кнопку [OK]
Теперь у нас есть Enterprise у нас есть полный доступ ко всем доступным функциям Advanced Installer Enterprise.
- Перейти на страницу тем
- В правом окне выберите желаемую тему и вариант для диалоговых окон установщика
- Сохраните проект и выйдите из Advanced Installer
Visual Studio спросит вас, хотите ли вы перезагрузить проект установщика, поскольку он был изменен. Нажмите кнопку [Да].
5. Добавьте еще один проект Visual Studio в решение
Если в решение добавлен проект расширенного установщика, он автоматически импортирует выходные данные сборки и всю полезную информацию, связанную с проектами, из решения.Если позже существующие проекты будут изменены или к решению будет добавлен другой проект, операцию import необходимо будет повторить.
Давайте добавим в решение новый проект Visual Studio:
- В диалоговом окне «Новый проект» в Visual Studio выберите «Visual C #»> «Приложение WPF»
- В поле «Решение» выберите параметр «Добавить в решение»
- Нажмите кнопку [OK]. Новый проект будет добавлен к решению
- Восстановить решение
6.Создайте окончательный установочный пакет
Включите второй проект в установочный пакет:
- Выберите файл Installer Project.aip в «Обозревателе решений»
- Убедитесь, что выходные сборки обоих проектов включены в пакет установщика из «Файлы. и папки »стр.
- Перестройте решение
- Протестируйте новый установочный пакет
Вновь созданный установщик будет содержать все проекты из решения.
7.Автоматический импорт файлов .VDPROJ (необязательно)
Если у вас есть решения, содержащие старые проекты развертывания Visual Studio (.vdproj), вы можете автоматически преобразовать их в проект Advanced Installer и включить его в свое решение, заменив старый VDPROJ. Просто откройте решение в Visual Studio с установленным расширением Advanced Installer VS, и VS предложит вам принять преобразование из VDPROJ в AIPROJ (проект Advanced Installer VS).
Новый проект Advanced Installer Project будет содержать все ресурсы из старого VDPROJ.Если вы хотите настроить его больше, просто используйте кнопку «Изменить в расширенном установщике», доступную при открытии файла .aip в Visual Studio.
.
Так работают установщики программного обеспечения в Windows, macOS и Linux
Современные операционные системы предоставляют простые способы установки новых приложений. К ним относятся пакеты автоматической установки, а также команды, которые устанавливают сразу несколько частей программного обеспечения. Но что на самом деле происходит, когда вы запускаете этот установщик или вводите эту команду?
Давайте посмотрим, как программное обеспечение устанавливается на трех основных настольных платформах: Windows, macOS и Linux.
Способы установки программного обеспечения
Есть несколько разных способов запустить новые приложения на вашем компьютере.В порядке возрастания сложности к ним относятся:
- Компиляция программного обеспечения — Сборка приложения из исходного кода. Только для самых технических пользователей.
- Архивы программного обеспечения — Распаковка архивов, таких как файлы ZIP, и запуск программы из любого места, где вы ее извлекли. Это может потребовать дополнительной настройки.
- Пакеты установщика — Найдите установочный файл и (дважды) щелкните, чтобы начать установку.
- Менеджеры / магазины программного обеспечения — Выбор приложения в приятном интерфейсе и нажатие большой кнопки «Установить». Это магия!
В этой статье мы рассмотрим пакеты установщика, поскольку большинство менеджеров / магазинов программного обеспечения в конечном итоге все равно имеют дело с этими типами пакетов за кулисами. Для основных современных настольных платформ — Windows, macOS и Linux — мы рассмотрим, что составляет один из этих пакетов и что происходит при их установке.
Microsoft Windows
Пакеты установщика, с которыми вы, вероятно, столкнетесь для Windows, бывают одного из двух основных типов.Исполняемые файлы (EXE) могут настроить вашу программу, выполняя тяжелую работу по размещению файлов в нужном месте и выполнению обновлений реестра Windows. Пакеты установщика Windows (MSI) дополняют это, предоставляя стандартные услуги, такие как удаление.
Вы можете проверить содержимое EXE или MSI, открыв архив с помощью 7-Zip.Если вы воспользуетесь им для просмотра собственного установщика EXE 7-Zip, вы найдете в нем несколько разных файлов:
Хотя эти файлы не содержат папки в установщике, разработчик указал каждый из них на целевой каталог.Большинство из них попадают в «место установки по умолчанию» — то же самое предложение, которое вы обычно видите для таких папок, как «C: \ Program Files \ [имя программы]» или «C: \ Program Files (x86) \ [ваш новый приложение].»
При использовании сложного инструмента, такого как InstallShield, для создания пакетов установщика, разработчики приложений могут настроить установку.Например, они могут указать, в каких версиях Windows он будет устанавливаться, настроить ярлыки для создания в меню «Пуск» и / или на рабочем столе или собрать информацию о пользователе, такую как имя, адрес и т. Д. Пример проекта InstallShield в на изображении ниже показан экран для настройки создания или обновления ключей реестра Windows.
С InstallShield файлы приложения и другие настройки упаковываются в установку .exe файл. Открытие его с помощью 7-Zip покажет, что внутри находится пакет MSI, который при запуске выглядит так же, как установка, к которой мы все привыкли. Давайте рассмотрим, что происходит во время этого процесса.
Процесс установки Windows
Установщик выполнит следующие шаги, чтобы настроить ваше приложение для использования (точный порядок выполнения может варьироваться в зависимости от настроек разработчика):
- Программа установки может содержать другие архивы, такие как вышеупомянутый MSI или форматы, такие как CAB.В качестве первого шага установщик извлечет их во временное место.
- Затем он проверит, доступны ли все установленные зависимости. Если чего-то не хватает, он загрузит это, если возможно, или выйдет из установщика с ошибкой, если нет.
- Если требуются какие-либо зависимости, они будут сначала установлены с помощью того установщика, с которым они поставляются (когда-либо прерывалась установка .NET Framework?).
- Затем установщик начнет копирование файлов приложения и размещение их в правильном месте.
- Если разработчик настроил какие-либо ярлыки, установщик создаст и укажет им фактический путь установки (помните, вы можете изменить это при запуске установщика).
- Изменения в реестре Windows, если таковые имеются, будут выполнены.
- Наконец, установщик может предложить пользователю ввести такую информацию, как имя или адрес веб-сайта.
Этот процесс может показаться сложным по сравнению со следующей операционной системой в списке. Давайте посмотрим, как установить программное обеспечение на macOS.
Apple, macOS
У установщиков Windows много чего происходит под капотом.Но если вы использовали Mac, вы знаете, что установить приложение часто так же просто, как загрузить копию приложения, открыть образ диска (DMG) и выполнить несколько простых подсказок. Иногда при загрузке даже выдается сообщение «Перетащите сюда!» икона.
Давайте погрузимся в пакет APP, а также его аналог — установщик PKG.
Структура пакета macOS
Файл APP на поверхности на самом деле проще, чем Windows по двум основным причинам.Во-первых, это стандартная папка. Единственное отличие состоит в том, что он заканчивается суффиксом «.APP». Если вы загрузите один из них в Windows, вы увидите, что он отображается так же, как любая другая папка с файлами в проводнике. Во-вторых, файлы APP требуют, чтобы было включено абсолютно все, что требуется программе. Не беспокойтесь об отсутствии зависимостей с этими типами установщиков.
Эти пакеты должны содержать три вещи в папке с названием «Contents»: 1) «Info.plist «, который содержит метаданные приложения, такие как имя, язык, номер версии и т.д .; 2) каталог» MacOS «, в котором хранится основной исполняемый файл; и 3) каталог» Ресурсы «, содержащий ресурсы, необходимые приложению для работы (например, значок приложения). Существуют и другие дополнительные папки, такие как «Frameworks» (пакеты функций, не относящиеся к приложению), «Plug-Ins» (функции для приложения, которые не требуются для его запуска) и «SharedSupport» «(посторонние данные, например, шаблоны).
Напротив, формат PKG представляет собой комбинацию Windows-подобного установщика с Unix-подобной структурой.Приложение 7-Zip также откроет файл PKG, сжатый в формате xar . Внутри находится один или несколько файлов Payload , которые также являются архивом. Чтобы извлечь его содержимое, используйте следующую цепочку команд ( cpio — это формат архива, а также программа для управления им) в терминале Mac или Linux:
cat Полезная нагрузка | gunzip -dc | cpio -i
После этого вы увидите знакомое дерево каталогов в стиле Unix.
В приведенном ниже примере я использовал конвертер документов Pandoc.Он включает двоичный файл в / usr / local / bin и некоторую документацию в / usr / local / share / man . Как все это на самом деле происходит? Мы рассмотрим, как каждый из них устанавливается на ваш Mac.
Я использовал версию 7-Zip для Windows, чтобы проиллюстрировать это, а не версию Linux только для командной строки.
Процесс установки приложения для macOS
Когда вы перетаскиваете этот файл APP в папку приложений, он на самом деле не так сильно меняет.Помните, что все необходимое для запуска программы автономно. Единственное отличие от стандартного перетаскивания состоит в том, что файл «Info.plist» регистрируется в системе.
Это позволит настроить такие параметры, как исполняемый файл, вызываемый при запуске приложения, отображаемый значок, поддерживаемые им типы файлов и многое другое.Но в остальном ваше приложение (например, пакет APP для редактора Atom, показанного ниже) теперь готово к использованию.
Процесс установки macOS PKG
С другой стороны, открытие файла PKG запускает программу установки в стиле мастера.Для простых программ это обычно установщик компонентов , который обычно выполняет следующие шаги:
- Запустите сценарий предварительной установки .
- Распакуйте содержимое «Payload» в машину.
- Запустить сценарий после установки .
Затем разработчики могут объединить несколько компонентов в единый архив продукта , установить .Это добавляет такие параметры, как отображение EULA для принятия пользователем, сбор информации от пользователя и выбор компонентов для установки. Между тем, программа установки Apple позаботится обо всех деталях по установке необходимых компонентов в фоновом режиме.
Говоря об установщиках на основе Unix, в следующем разделе мы перейдем к двум ведущим форматам пакетов Linux.
Ubuntu и Fedora Linux
Ах, DEB против RPM.Одна из великих войн пламени, уступающая только подобным vi против emacs или KDE против GNOME. Однако эти форматы больше похожи, чем различны. Давайте взглянем.
Структура файлов пакета Linux
Чтобы заглянуть внутрь файла DEB, вы можете попробовать менеджер архивов с графическим интерфейсом.В противном случае используйте команду ar . Следующая команда, введенная в терминал, извлечет содержимое пакета Debian:
ar -x имя-вашего-пакета.deb
Из этого получится три файла:
- контроль.tar.gz — он, в свою очередь, содержит один первичный файл, Control , который содержит метаданные о пакете, такие как его официальное имя, версия и зависимости. Он также может содержать другие файлы, такие как сценарии, запускаемые в процессе установки, или файлы конфигурации по умолчанию.
- data.tar.gz — Файлы, составляющие само приложение, находятся в этом архиве TAR.GZ. Здесь есть все, включая двоичные файлы, документацию и конфигурации по умолчанию. В примере пакета kde-service-menu-encfs_0.5.2_all.deb, он содержит файлы и каталоги, как показано на изображении ниже.
- debian-binary — это файл, который определяет, какую версию формата пакета Debian использует файл. Для современных дистрибутивов это будет просто «2.0» в одной строке.
В Fedora вы можете использовать команды rpm2cpio и cpio для извлечения пакета RPM и просмотра их файлов:
rpm2cpio имя-вашего-пакета.об / мин | cpio -idvm
Для пакета kde-cli-tools-5.9.4-2.fc26.x86_64.rpm, вы увидите дерево файлов, похожее на пакет DEB. Но он не предоставляет метаданные, по крайней мере, не в бинарном пакете . Вам нужно будет загрузить исходный RPM (.SRC.RPM), соответствующий вашей бинарной версии, а затем использовать ту же команду для этого файла. В него будет включен файл SPEC, содержащий многие из тех же элементов, что и файл Control в пакете Debian.
Теперь, когда у нас есть понимание структуры пакетов Linux, давайте посмотрим, что происходит, когда вы их устанавливаете.
Установка пакета Linux
Когда вы устанавливаете пакеты любого формата, независимо от внешнего интерфейса, выполняется аналогичный набор шагов:
- Система пакетов проверяет содержимое пакета, чтобы определить, отсутствуют ли зависимости.В зависимости от инструмента он либо предупредит вас, либо настроит их загрузку.
- Если пакеты содержат предустановленные сценарии или команды, они будут выполняться следующими.
- Затем система пакетов фактически извлекает файлы пакета.
- После размещения файлов запускаются сценарии после установки.
- Наконец, пакет регистрируется во внутренней базе данных с использованием его метаданных, поэтому его можно удалить позже.
Хорошее знание того, как устанавливается программное обеспечение
Поскольку разработчики операционных систем и программного обеспечения, которое на них работает, отлично справляются с задачей упрощения установки программного обеспечения, вам действительно не нужно обращать внимание на детали.Но знание того, что происходит за кулисами, даст вам некоторое спокойствие по поводу того, что устанавливается в вашей системе, а также поможет с устранением неполадок.
Сколько из перечисленных выше методов установки программного обеспечения вы использовали? Вы предпочитаете DEB или RPM? Или пакеты APP для Mac представляют собой вершину простоты использования? Случалось ли когда-нибудь установить кошмар? Дайте нам знать в комментариях ниже!
5 худших мошенников Venmo и как оставаться в безопасности
Мошенничество Venmo становится все более распространенным.Пора узнать, чем занимаются мошенники и как защитить себя.
Об авторе
Аарон Питерс
(Опубликована 31 статья)
Аарон глубоко разбирался в технологиях в качестве бизнес-аналитика и менеджера проектов на протяжении пятнадцати лет и был лояльным пользователем Ubuntu почти столько же (со времен Breezy Badger).Его интересы включают открытый исходный код, приложения для малого бизнеса, интеграцию Linux и Android, а также вычисления в текстовом режиме.
Ещё от Aaron Peters
Подпишитесь на нашу рассылку новостей
Подпишитесь на нашу рассылку, чтобы получать технические советы, обзоры, бесплатные электронные книги и эксклюзивные предложения!
Еще один шаг…!
Подтвердите свой адрес электронной почты в только что отправленном вам электронном письме.
.
c # — установщик для установки одной или нескольких программ
Переполнение стека
- Около
Продукты
- Для команд
Переполнение стека
Общественные вопросы и ответыПереполнение стека для команд
Где разработчики и технологи делятся частными знаниями с коллегамиВакансии
Программирование и связанные с ним технические возможности карьерного ростаТалант
Нанимайте технических специалистов и создавайте свой бренд работодателяРеклама
Обратитесь к разработчикам и технологам со всего мира- О компании
Загрузка…
.