はじめに
Chocolatey とは?
Chocolatey は、Windows 向けのパッケージマネージャー及びレポジトリのデファクトスタンダードです。Windows 10 以降では、標準パッケージマネージャー OneGet の標準レポジトリとして採用されています。
Chocolatey に登録されているソフトウェアは、多くの有志によって登録され、メンテナンスされています。本記事では、Chocolatey のパッケージを実際に作って公開する方法を説明します。
対象とする読者
- Chocolatey を使ったことがある
- Chocolatey に新しく登録したいパッケージがある
- 自作ソフトウェアを Chocolatey で公開したい
- Chocolatey を使って社内レポジトリを構築したい
パッケージの作成から公開までのフロー
Chocolatey のパッケージには 審査 があります。この審査が結構厳しく、パッケージの命名規則から、インストールスクリプトまで見られます。また、Chocolatey 側が用意する VM でのテストにパスする必要があります (英語ロケールなので、日本語 Windows とは挙動が異なる部分があります)。
この審査にパスすると、パッケージ公開となります。パッケージが公開されたら、作ったパッケージは自分でメンテナンスする必要があります。パッケージを更新するときも、その都度 審査 が入ります。
パッケージの構成
Chocolatey のパッケージは次のような構成で作成します。
- [パッケージ名のフォルダ]
- [パッケージ名].nuspec
- tools
- chocolateyInstall.ps1
*.nuspec ファイルは、XML 形式でパッケージのメタデータを記述します。
chocolateyInstall.ps1 は、パッケージのインストール時に実行されるスクリプトで、PowerShell のスクリプトとして記述します。
nuspec ファイルの作成
*.nuspec は Chocolatey がバックエンドで利用している NuGet で利用されるファイル形式です。.NET の開発をしている人には馴染み深いと思います。
サンプル
以下は Opera Developer パッケージで用いている nuspec ファイルを、説明用に簡略化したものです。
<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<id>opera-developer</id>
<title>Opera Developer</title>
<version>29.0.1788.0</version>
<authors>Opera</authors>
<owners>Pine Mizune</owners>
<summary>The Opera web browser makes the Web fast and fun, giving you a better web browser experience on any computer. Opera is the fastest browser on Earth, and is completely free.</summary>
<description>
The Opera web browser makes the Web fast and fun, giving you a better web browser experience on any computer. Opera is the fastest browser on Earth, and is completely free.
Updated a few times per week, Opera developer gives you a sneak peek of upcoming features and experiments that might make their way into future products.
</description>
<projectUrl>http://www.opera.com/developer</projectUrl>
<tags>browser opera developer</tags>
<iconUrl>http://cdn.rawgit.com/pine613/chocolatey-packages/master/opera-developer/opera-developer.png</iconUrl>
</metadata>
<files>
<file src="tools\**" target="tools" />
</files>
</package>
項目の説明
項目 | 内容 |
---|---|
id | パッケージインストール時に指定する ID です。かなり厳しい命名規則がありますので、要確認です (CreatePackages: Naming your package)。 |
title | パッケージ名です。正式名称を指定します。 |
version | バージョン番号です。数値のみで構成する必要があります。 |
authors | ソフトウェア の作者です。 |
owners | パッケージ の作者です。 |
summary | 簡単な説明を書きます。 |
description | ソフトウェアの説明を書きます。この説明が Chocolatey のページに表示されます。日本語のソフトウェア でも、英語で説明を書く必要があります。日本語の説明を加える場合は、英語の説明の下に書きます (任意)。ソフトウェアの対応言語が日本語のみな場合、そのことを説明に書く必要があります。 |
projectUrl | ソフトウェアの公式サイトを指定します。 |
tags | タグです。結構バラバラにつけられてます。 |
iconUrl | ソフトウェアのアイコン画像を指定します。GitHub に画像をアップロードして指定するのが、一般的です。 |
files | パッケージに含めるファイルを指定します。 |
nuspec リファレンス
インストールスクリプトの作成
インストールスクリプトの作成がパッケージ作成の肝となる作業です。
Chocolatey のパッケージは、PowerShell スクリプトを走らせることにより、インストールの自動化を行っています。スクリプトでは、インストールに必要なデータをダウンロードし、インストールするまでを行います。
これは、対象とするソフトウェアによって大きく異なりますので、分類別に別記事にて説明します。インストールスクリプトは、以下のように大雑把に分類できます。
ZIP 形式タイプ
ZIP ファイルをダウンロードしてインストール先に展開するタイプです。専用のヘルパー関数が用意されているため、容易に作成可能です。
今後、別記事で作成予定です。
サイレントインストールタイプ
インストーラー (*.exe, *.msi) をダウンロードして、サイレントインストールオプションを付与してインストールするタイプです。大多数のソフトウェアが、このタイプに当てはまります。サイレントインストールオプションさえ分かれば、専用のヘルパー関数が用意されているため、容易に作成可能です。
今後、別記事で作成予定です。
自動化スクリプトタイプ
ZIP 形式でソフトウェアが提供されておらず、サイレントインストールオプションもないタイプです。オリジナルなインストーラーによって提供されているソフトウェアが、これに当てはまります。
このタイプのソフトウェアのインストールスクリプトの作成は、難航を極めることが多いです。本当にサイレントインストールオプションが存在しないか、今一度確認してください。
今後、別記事で作成予定です。
パッケージの公開
パッケージが作成できたら、パッケージの公開作業を行います。
今後、別記事で作成予定です。
パッケージの自動更新
今後、別記事で作成予定です。