パッケージ マニフェストを作成するCreate your package manifest

重要

Windows パッケージ マネージャーと winget ツールはパブリック プレビュー段階であり、一般公開されるまでに大幅に変更される可能性があります。Windows Package Manager and the winget tool are in public preview and may be substantially modified before they are generally available. 本書に記載された情報について、Microsoft は明示または黙示を問わずいかなる保証をするものでもありません。Microsoft makes no warranties, express or implied, with respect to the information provided here.

ソフトウェア パッケージを Windows パッケージ マネージャー リポジトリに送信する場合は、まずパッケージ マニフェストを作成します。If you want to submit a software package to the Windows Package Manager repository, start by creating a package manifest. マニフェストは、インストールするアプリケーションについて説明する YAML ファイルです。The manifest is a YAML file that describes the application to be installed.

この記事では、Windows パッケージ マネージャーのパッケージ マニフェストの内容について説明します。This article describes the contents of a package manifest for Windows Package Manager.

YAML の基本YAML basics

パッケージ マニフェストに YAML 形式が選択された理由は、人間が比較的簡単に読みやすく、他の Microsoft 開発ツールと一貫性があるためです。The YAML format was chosen for package manifests because of its relative ease of human readability and consistency with other Microsoft development tools. YAML 構文に詳しくない場合は、YAML を Y 分で学習するためのページで基本を学習できます。If you are not familiar with YAML syntax, you can learn the basics at Learn YAML in Y Minutes.

注意

現時点では、Windows パッケージ マネージャーのマニフェストでは一部の YAML 機能がサポートされていません。Manifests for Windows Package Manager currently do not support all YAML features. サポートされていない YAML の機能には、アンカー、複合キー、セットなどがあります。Unsupported YAML features include anchors, complex keys, and sets.

表記規則Conventions

この記事では、次の表記規則を使用します。These conventions are used in this article:

  • : の左側は、マニフェストの定義で使用されるリテラル キーワードです。To the left of : is a literal keyword used in manifest definitions.
  • : の右側は、データ型です。To the right of : is a data type. データ型は、string などのプリミティブ型の場合と、この記事の別の場所で定義されているリッチ構造への参照の場合があります。The data type can be a primitive type like string or a reference to a rich structure defined elsewhere in this article.
  • 表記 [ datatype ] は、言及したデータ型の配列を示します。The notation [ datatype ] indicates an array of the mentioned data type. たとえば、[ string ] は文字列の配列です。For example, [ string ] is an array of strings.
  • 表記 { datatype : datatype } は、あるデータ型から別のデータ型へのマッピングです。The notation { datatype : datatype } indicates a mapping of one data type to another. たとえば、{ string: string } は文字列から文字列へのマッピングです。For example, { string: string } is a mapping of strings to strings.

マニフェストの内容Manifest contents

パッケージ マニフェストには、一連の必須項目が含まれている必要があります。また、ソフトウェア インストールのカスタマー エクスペリエンスを向上させることができる追加のオプション項目を含めることもできます。A package manifest must include a set of required items, and can also include further optional items that can help improve the customer experience of installing your software. このセクションでは、必要なマニフェスト スキーマと完全なマニフェスト スキーマについて簡単にまとめ、それぞれの例を示します。This section provides brief summaries of the required manifest schema and complete manifest schemas, and examples of each.

マニフェスト ファイルの各項目は、パスカル ケースである必要があり、重複させることはできません。Each field in the manifest file must be Pascal-cased and cannot be duplicated.

マニフェスト内の項目の完全な一覧と説明については、https://github.com/microsoft/winget-cli リポジトリのマニフェスト仕様を参照してください。For a complete list and descriptions of items in a manifest, see the manifest specification in the https://github.com/microsoft/winget-cli repository.

最低限必要なスキーマMinimal required schema

Id: string # Publisher.package format.
Publisher: string # The name of the publisher.
Name: string # The name of the application.
Version: string # Version numbering format.
License: string # The open source license or copyright.
InstallerType: string # Enumeration of supported installer types (exe, msi, msix, inno, wix, nullsoft, appx).
Installers:
  - Arch: string # Enumeration of supported architectures.
  - Url: string # Path to download installation file.
  - Sha256: string # SHA256 calculated from installer.
ManifestVersion: 0.1.0

完全なスキーマComplete schema

Id: string # Publisher.package format.
Publisher: string # The name of the publisher.
Name: string # The name of the application.
AppMoniker: string # The common name someone may use to search for the package.
Version: string # Version numbering format for package version.
Channel: string # A string representing the flight ring.
License: string # The open source license or copyright.
LicenseUrl: string # Valid secure URL to license.
MinOSVersion: string # Version numbering format for minimum version of Windows supported.
Description: string # Description of the package.
Homepage: string # Valid secure URL for the package.
Tags: list # Additional strings a user would use to search for the package.
FileExtensions: list # List of file extensions the package could support.
Protocols: list # List of protocols the package provides a handler for.
Commands: list # List of commands or aliases the user would use to run the package.
InstallerType: string # Enumeration of supported installer types (exe, msi, msix, inno, wix, nullsoft, appx).
Custom: string # Custom switches passed to the installer.
Silent: string # Switches passed to the installer for silent installation.
SilentWithProgress: string # Switches passed to the installer for non-interactive install.
Interactive: string # Experimental.
Language: string # Experimental.
Log: string # Specifies log redirection switches and path.
InstallLocation: string # Specifies alternate location to install package.
Installers: # Nested map of keys for specific installer.
  - Arch: string # Enumeration of supported architectures.
  - URL: string # Path to download installation file.
  - Sha256: string # SHA256 calculated from installer.
  - SignatureSha256: string # SHA256 calculated from signature file's hash of MSIX file.
  - Switches: # Collection of entries to override root keys. The primary supported values are: Custom, Silent, SilentWithProgress, Interactive. For a complete list see the specification at https://github.com/microsoft/winget-cli/blob/master/doc/ManifestSpecv0.1.md.
  - Scope: string # Experimental.
  - SystemAppId: string # Experimental.
Localization: # Nested map of keys for localization.
  - Language: string # Locale for display fields and localized URLs.
ManifestVersion: string # Version number format for manifest version.

注意

インストーラーが .exe で、Nullsoft または Inno を使用してビルドされている場合は、これらの値を代わりに指定できます。if your installer is an .exe and it was built using Nullsoft or Inno, you may specify those values instead. Nullsoft または Inno が指定されている場合、クライアントは、インストーラーに対してサイレントおよびサイレントの進行状況のインストール動作を自動的に設定します。When Nullsoft or Inno are specified, the client will automatically set the silent and silent with progress install behaviors for the installer.

インストーラーのスイッチInstaller switches

多くの場合、コマンド ラインからインストーラーに -? を渡すことにより、インストーラーで使用できるサイレント Switches を判別することができます。You can often figure out what silent Switches are available for an installer by passing in a -? to the installer from the command line. さまざまなインストーラーの種類で使用できる一般的なサイレント Swtiches の一部を次に示します。Here are some common silent Swtiches that can be used for different installer types.

インストーラーInstaller コマンドCommand ドキュメントDocumentation
MSIMSI /q MSI のコマンドライン オプションMSI Command-Line Options
InstallShieldInstallShield /s InstallShield のコマンドライン パラメーターInstallShield Command-Line Parameters
Inno SetupInno Setup /SILENT or /VERYSILENT Inno Setup のドキュメントInno Setup documentation
NullsoftNullsoft /S Nullsoft サイレント インストーラー/アンインストーラーNullsoft Silent Installers/Uninstallers

ヒントとベスト プラクティスTips and best practices

  • ソフトウェアを検索してインストールするときの最良のカスタマー エクスペリエンスを実現するために、必要なスキーマ以外にも任意のオプション項目を可能な限り多く含めることをお勧めします。For the best customer experience when finding and installing your software, we recommend that you include as many optional items beyond the required schema as possible. たとえば、AppMoniker フィールドはオプションです。For example, the AppMoniker field is optional. ただし、このフィールドを含めると、顧客が search コマンドを実行したときに AppMoniker 値に関連付けられた結果が表示されます (例: Visual Studio Codevscode)。However, if you include this field, customers will see results associated with the AppMoniker value when performing the search command (for example, vscode for Visual Studio Code). 指定された AppMoniker 値を持つアプリが 1 つしかない場合、顧客は完全修飾 ID ではなく、モニカーを指定してアプリケーションをインストールできます。If there is only one app with the specified AppMoniker value, customers can install your application by specifying the moniker rather than the fully qualified ID.
  • Id は一意である必要があります。The Id must be unique. 同じパッケージ ID で複数の送信を行うことはできません。You cannot have multiple submissions with the same package identifier. スペースを使用すると、ユーザーが winget クライアントを使用するときに Id の前後に引用符を入力しなければならないため、避けてください。Avoid spaces, because this will require users to put quotation marks around the Id when using the winget client.
  • 複数の発行元フォルダーを作成しないでください。Avoid creating multiple publisher folders. たとえば、"Contoso" というフォルダーが既にある場合に、"Contoso Ltd" というフォルダーを作成しないでください。For example, do not create "Contoso Ltd" if there is already a "Contoso" folder. また、フォルダーを作成するときもスペースを使用しないようにします。Also avoid spaces when creating folders.
  • 可能であれば、すべてのパッケージをサイレント インストールで送信する必要があります。All packages should be submitted with a silent install if possible. サイレント インストールをサポートしない実行可能ファイルがある場合、ユーザー エクスペリエンスが低下します。If you have an executable that does not support a silent install, the user experience will be diminished.
  • マニフェストでは、改行前の文字列の長さを 100 文字に制限します。Limit the length of strings in your manifest to 100 characters before a line break.
  • 指定したバージョンのパッケージに、複数のインストーラーの種類がある場合は、それぞれの Installers の下に InstallerType のインスタンスを配置できます。When more than one installer type exists for the specified version of the package, an instance of InstallerType can be placed under each of the Installers.