Erstellen des PaketmanifestsCreate your package manifest

Wichtig

Der Windows-Paket-Manager und das Tool winget befinden sich in der öffentlichen Vorschau und können vor der allgemeinen Verfügbarkeit noch wesentlich geändert werden.Windows Package Manager and the winget tool are in public preview and may be substantially modified before they are generally available. Microsoft übernimmt keine Garantie, weder ausdrücklich noch stillschweigend, für die hier bereitgestellten Informationen.Microsoft makes no warranties, express or implied, with respect to the information provided here.

Wenn Sie ein Softwarepaket an das Windows-Paket-Manager-Repository übermitteln möchten, erstellen Sie zunächst ein Paketmanifest.If you want to submit a software package to the Windows Package Manager repository, start by creating a package manifest. Das Manifest ist eine YAML-Datei mit einer Beschreibung der zu installierenden Anwendung.The manifest is a YAML file that describes the application to be installed.

In diesem Artikel wird der Inhalt eines Paketmanifests für den Windows-Paket-Manager beschrieben.This article describes the contents of a package manifest for Windows Package Manager.

YAML-GrundlagenYAML basics

Das YAML-Format wurde aus Gründen der relativ guten Lesbarkeit und der Konsistenz mit anderen Microsoft-Entwicklungstools für Paketmanifeste ausgewählt.The YAML format was chosen for package manifests because of its relative ease of human readability and consistency with other Microsoft development tools. Wenn Sie mit der YAML-Syntax nicht vertraut sind, können Sie sich die Grundlagen unter Learn YAML in Y Minutes (Erlernen von YAML in Y Minuten) aneignen.If you are not familiar with YAML syntax, you can learn the basics at Learn YAML in Y Minutes.

Hinweis

Manifeste für den Windows-Paket-Manager unterstützen zurzeit nicht alle YAML-Features.Manifests for Windows Package Manager currently do not support all YAML features. Zu den nicht unterstützten YAML-Features zählen Anker, komplexe Schlüssel und Sätze.Unsupported YAML features include anchors, complex keys, and sets.

KonventionenConventions

In diesem Artikel werden die folgenden Konventionen verwendet:These conventions are used in this article:

  • Links von : steht ein Literalschlüsselwort, das in Manifestdefinitionen verwendet wird.To the left of : is a literal keyword used in manifest definitions.
  • Rechts von : steht ein Datentyp.To the right of : is a data type. Der Datentyp kann ein primitiver Typ wie string oder ein Verweis auf eine umfangreiche Struktur sein, die an anderer Stelle in diesem Artikel definiert ist.The data type can be a primitive type like string or a reference to a rich structure defined elsewhere in this article.
  • Die Schreibweise [ Datentyp ] gibt ein Array des erwähnten Datentyps an.The notation [ datatype ] indicates an array of the mentioned data type. Beispielsweise steht [ string ] für ein Zeichenfolgenarray.For example, [ string ] is an array of strings.
  • Die Schreibweise { Datentyp : Datentyp } gibt die Zuordnung des einen Datentyps zum anderen an.The notation { datatype : datatype } indicates a mapping of one data type to another. Beispielsweise ist { string: string } eine Zuordnung von Zeichenfolgen zu Zeichenfolgen.For example, { string: string } is a mapping of strings to strings.

Inhalt des ManifestsManifest contents

Ein Paketmanifest muss eine Reihe erforderlicher Elemente enthalten und kann darüber hinaus weitere optionale Elemente enthalten, die zu einer höheren Benutzerfreundlichkeit der Softwareinstallation beitragen können.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. Dieser Abschnitt enthält kurze Zusammenfassungen des erforderlichen Manifestschemas und vollständige Manifestschemas sowie Beispiele für beides.This section provides brief summaries of the required manifest schema and complete manifest schemas, and examples of each.

Jedes Feld in der Manifestdatei muss die Pascal-Schreibweise verwenden und darf nicht doppelt vorkommen.Each field in the manifest file must be Pascal-cased and cannot be duplicated.

Eine vollständige Liste und Beschreibungen der Elemente in einem Manifest finden Sie in der Manifestspezifikation im https://github.com/microsoft/winget-cli-Repository.For a complete list and descriptions of items in a manifest, see the manifest specification in the https://github.com/microsoft/winget-cli repository.

Mindestens erforderliches SchemaMinimal 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

Vollständiges SchemaComplete 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).
Switches: # These can be used to change the install behavior if supported by the InstallerType.
  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.

Hinweis

Wenn Ihr Installationsprogramm eine EXE-Datei ist und mit Nullsoft oder Inno erstellt wurde, können Sie stattdessen diese Werte angeben.if your installer is an .exe and it was built using Nullsoft or Inno, you may specify those values instead. Wird Nullsoft oder Inno angegeben, legt der Client automatisch die Werte „Silent“ (Unbeaufsichtigt) und „Silent with Progress“ (Unbeaufsichtigt mit Statusanzeige) für das Installationsverhalten des Installationsprogramms fest.When Nullsoft or Inno are specified, the client will automatically set the silent and silent with progress install behaviors for the installer.

Installer-SwitchesInstaller switches

Sie können oft herausfinden, welche automatischen Switches für ein Installationsprogramm verfügbar sind, indem Sie ein -? über die Befehlszeile an das Installationsprogramm übergeben.You can often figure out what silent Switches are available for an installer by passing in a -? to the installer from the command line. Hier sehen Sie einige gebräuchliche automatische Switches, die für verschiedene Installertypen verwendet werden können.Here are some common silent Switches that can be used for different installer types.

InstallerInstaller BefehlCommand DokumentationDocumentation
MSIMSI /q Befehlszeilenoptionen für MSIMSI Command-Line Options
InstallShieldInstallShield /s InstallShield-BefehlszeilenparameterInstallShield Command-Line Parameters
Inno SetupInno Setup /SILENT or /VERYSILENT Inno Setup-DokumentationInno Setup documentation
NullsoftNullsoft /S Nullsoft-Installer für die Installation/Deinstallation im HintergrundNullsoft Silent Installers/Uninstallers

Tipps und bewährte MethodenTips and best practices

  • Um eine optimale Benutzerfreundlichkeit der Such- und Installationsfunktionen für Ihre Software zu erzielen, wird empfohlen, dass Sie über das erforderliche Schema hinaus so viele optionale Elemente wie möglich einschließen.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. Beispielsweise ist das Feld AppMoniker optional.For example, the AppMoniker field is optional. Wenn Sie dieses Feld jedoch einschließen, werden Kunden Ergebnisse angezeigt, die dem AppMoniker-Wert zugeordnet sind, wenn Sie den Befehl search ausführen (z. B. vscode für Visual Studio Code ).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 ). Wenn nur eine App mit dem angegebenen AppMoniker-Wert vorhanden ist, können Kunden die Anwendung installieren, indem Sie anstelle der vollqualifizierten ID den Moniker angeben.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.
  • Die Id muss eindeutig sein.The Id must be unique. Mehrere Übermittlungen mit dem gleichen Paketbezeichner sind nicht zulässig.You cannot have multiple submissions with the same package identifier. Vermeiden Sie Leerzeichen, da Benutzer die Id ansonsten in Anführungszeichen setzen müssen, wenn Sie den winget-Client verwenden.Avoid spaces, because this will require users to put quotation marks around the Id when using the winget client.
  • Vermeiden Sie das Erstellen mehrerer Ordner für den Herausgeber.Avoid creating multiple publisher folders. Erstellen Sie z. B. keinen Ordner „Contoso Ltd“, wenn der Ordner „Contoso“ bereits vorhanden ist.For example, do not create "Contoso Ltd" if there is already a "Contoso" folder. Vermeiden Sie Leerzeichen auch beim Erstellen von Ordnern.Also avoid spaces when creating folders.
  • Wenn möglich, sollten alle Pakete mit einer unbeaufsichtigten Installation übermittelt werden.All packages should be submitted with a silent install if possible. Wenn Sie über eine ausführbare Datei verfügen, die keine unbeaufsichtigte Installation unterstützt, beeinträchtigt dies die Benutzerfreundlichkeit.If you have an executable that does not support a silent install, the user experience will be diminished.
  • Beschränken Sie die Länge der Zeichenfolgen im Manifest auf 100 Zeichen vor einem Zeilenumbruch.Limit the length of strings in your manifest to 100 characters before a line break.
  • Wenn für die angegebene Version des Pakets mehr als ein Typ von Installationsprogramm vorhanden ist, kann eine Instanz von InstallerType unter jedem der Installers platziert werden.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.