понедельник, 26 ноября 2018 г.

Распространение Windows-приложений (Chocolatey)

Менеджеры пакетов для ОС Windows

В большинстве дистрибутивов Linux есть свои менеджеры пакетов: в Ubuntu/Mint это apt и deb, в OpenSuse это zypper. Менеджеры пакетов хороши тем, что позволяют устанавливать софт со всеми требуемыми зависимостями, к сожалению, магазин приложений Windows, на мой взгляд, не удобен. Однако довольно давно существует неплохое решение - chocolatey.org. Прочитав мануалы я понял, что создать пакет в принципе совсем не трудно, поэтому выкладываю свой гайд по созданию собственного Chocolatey-пакета для ОС семейства Windows (начиная от 7/Server 2003 до 10 и далее).

Алгоритм создания Chocolatey-пакета

Набор операции по созданию Chocolatey-пакетов довольно прост:

0. Установка необходимых инструментов в первую очередь нам понадобится сам chocolatey (choco) и набор утилит командной строки Nuget.Commandline. Как установить chocolatey можно посмотреть здесь: (https://chocolatey.org/docs/installation). Как установить Nuget.Commandline: (https://chocolatey.org/packages/NuGet.CommandLine).

1. Генерация шаблона - генерация шаблона происходит при помощи утилиты choco, при этом генерация происходит в текущей директории, поэтому прежде чем сгенерировать шаблон нужно перейти в директорию с помощью cd и выполнить команду choco new spectrumviewer , spectrumviewer - название создаваемого приложения. В .nuspec файле содержится описание приложения, а в директории tools - скрипты для установки и апгрэйда приложения. В nuspec-файле сдержится общая информация о приложении, например, название, версия, URL-адреса документации, файла лицензии и т.п. В папке tools содержится powershell-скрипт для установки приложения (chocolateyinstall.ps1). Chocolatey-приложение не может содержать файлы внутри себя, а лишь может ссылаться на какой-то URL: для загрузки и установки. Возможен вариант с установщиком exe/msi (командлет Install-ChocolateyPackage @packageArgs), путь к файлу установщику задается следующим образом:
$url        = 'https://github.com/MossbauerLab/SpectrumViewerDocs/raw/master/2.0/SpectrumViewer.msi'
$url64      = 'https://github.com/MossbauerLab/SpectrumViewerDocs/raw/master/2.0/SpectrumViewer.msi'
И вариант с portable-версией программного обеспечения (командлет Install-ChocolateyZipPackage @packageArgs).

2. Упаковка, генерация nupkg-файла
После довольно несложной настройки nuspec и chocolateyinstall.ps1 можно переходить к следующему этапу - генерации nupkg-файла: из директории, содержащей nuspec-файл необходимо выполнить следующую команду: choco pack. После генерации упакованного файла приложения можно испытать установку choco install .\spectrumviewer.2.0.nupkg .Если установка прошла благополучно, то можно проталкивать в галерею chocolatey.

3. Публикация пакета
Самая простая часть, необходимо присоединить ключ (см. свою учетную запись на chocolatey.org):
choco apikey --key ... --source https://push.chocolatey.org/
После этого проталкиваем приложение в chocolatey: choco push spectrumviewer.2.0.nupkg --source https://push.chocolatey.org/
Последнее, что остается - дождаться подтверждения размещения приложения.

Распространение Windows-приложений (Chocolatey)

Менеджеры пакетов для ОС Windows В большинстве дистрибутивов Linux есть свои менеджеры пакетов: в Ubuntu/Mint это apt и deb, в OpenSuse э...