From 88f8f016fc9e79ac66d69d6656409f7d6aac5dcf Mon Sep 17 00:00:00 2001 From: Kaleb Luedtke Date: Tue, 3 Dec 2024 11:00:24 -0600 Subject: [PATCH] Make 1.9 Supported (#195988) --- .github/PULL_REQUEST_TEMPLATE.md | 2 +- .../labelAdded.manifestValidationError.yml | 2 +- .../labelAdded.manifestVersionError.yml | 2 +- Tools/YamlCreate.ps1 | 4 +- doc/Authoring.md | 8 +- doc/manifest/README.md | 5 +- doc/manifest/schema/1.9.0/README.md | 69 ++ doc/manifest/schema/1.9.0/defaultLocale.md | 333 ++++++ doc/manifest/schema/1.9.0/installer.md | 872 ++++++++++++++++ doc/manifest/schema/1.9.0/locale.md | 318 ++++++ doc/manifest/schema/1.9.0/singleton.md | 969 ++++++++++++++++++ doc/manifest/schema/1.9.0/version.md | 71 ++ 12 files changed, 2644 insertions(+), 11 deletions(-) create mode 100644 doc/manifest/schema/1.9.0/README.md create mode 100644 doc/manifest/schema/1.9.0/defaultLocale.md create mode 100644 doc/manifest/schema/1.9.0/installer.md create mode 100644 doc/manifest/schema/1.9.0/locale.md create mode 100644 doc/manifest/schema/1.9.0/singleton.md create mode 100644 doc/manifest/schema/1.9.0/version.md diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 97409b0a99304..45449971ea265 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -7,7 +7,7 @@ Manifests - [ ] This PR only modifies one (1) manifest - [ ] Have you [validated](https://github.com/microsoft/winget-pkgs/blob/master/doc/Authoring.md#validation) your manifest locally with `winget validate --manifest `? - [ ] Have you tested your manifest locally with `winget install --manifest `? -- [ ] Does your manifest conform to the [1.6 schema](https://github.com/microsoft/winget-pkgs/tree/master/doc/manifest/schema/1.6.0)? +- [ ] Does your manifest conform to the [1.9 schema](https://github.com/microsoft/winget-pkgs/tree/master/doc/manifest/schema/1.9.0)? Note: `` is the directory's name containing the manifest you're submitting. diff --git a/.github/policies/labelAdded.manifestValidationError.yml b/.github/policies/labelAdded.manifestValidationError.yml index 8cdf9eba76339..07271b5b0e1b9 100644 --- a/.github/policies/labelAdded.manifestValidationError.yml +++ b/.github/policies/labelAdded.manifestValidationError.yml @@ -24,7 +24,7 @@ configuration: Hello @${issueAuthor}, - Please verify the manifest file is compliant with the package manager [1.6 manifest specification](https://github.com/microsoft/winget-pkgs/tree/master/doc/manifest/schema/1.6.0). + Please verify the manifest file is compliant with the package manager [1.9 manifest specification](https://github.com/microsoft/winget-pkgs/tree/master/doc/manifest/schema/1.9.0). Make sure the ID is of the form publisher.appname and that the folder structure is manifests\partition\publisher\appname\version. diff --git a/.github/policies/labelAdded.manifestVersionError.yml b/.github/policies/labelAdded.manifestVersionError.yml index e6f974577dcbd..64f087e8f11e4 100644 --- a/.github/policies/labelAdded.manifestVersionError.yml +++ b/.github/policies/labelAdded.manifestVersionError.yml @@ -24,7 +24,7 @@ configuration: Hello @${issueAuthor}, - The package manager bot determined that the ManifestVersion key does not match any version currently approved for release. Please verify the manifest file is compliant with the package manager [1.5 manifest specification](https://github.com/microsoft/winget-pkgs/tree/master/doc/manifest/schema/1.5.0) or [1.6 manifest specification](https://github.com/microsoft/winget-pkgs/tree/master/doc/manifest/schema/1.6.0). + The package manager bot determined that the ManifestVersion key does not match any version currently approved for release. Please verify the manifest file is compliant with the package manager [1.9 manifest specification](https://github.com/microsoft/winget-pkgs/tree/master/doc/manifest/schema/1.9.0). For details on the specific error, see the details link below in the build pipeline. diff --git a/Tools/YamlCreate.ps1 b/Tools/YamlCreate.ps1 index 30496092870a9..70297e9d0af33 100644 --- a/Tools/YamlCreate.ps1 +++ b/Tools/YamlCreate.ps1 @@ -190,8 +190,8 @@ if ($Settings) { exit } -$ScriptHeader = '# Created with YamlCreate.ps1 v2.4.1' -$ManifestVersion = '1.6.0' +$ScriptHeader = '# Created with YamlCreate.ps1 v2.4.2' +$ManifestVersion = '1.9.0' $PSDefaultParameterValues = @{ '*:Encoding' = 'UTF8' } $Utf8NoBomEncoding = New-Object System.Text.UTF8Encoding $False $ofs = ', ' diff --git a/doc/Authoring.md b/doc/Authoring.md index e689078755e4d..2e05558bc6a19 100644 --- a/doc/Authoring.md +++ b/doc/Authoring.md @@ -1,7 +1,7 @@ -[Manifest Specification]: manifest/schema/1.6.0 -[versionSchema]: manifest/schema/1.6.0/version.md -[defaultLocaleSchema]: manifest/schema/1.6.0/defaultLocale.md -[installerSchema]: manifest/schema/1.6.0/installer.md +[Manifest Specification]: manifest/schema/1.9.0 +[versionSchema]: manifest/schema/1.9.0/version.md +[defaultLocaleSchema]: manifest/schema/1.9.0/defaultLocale.md +[installerSchema]: manifest/schema/1.9.0/installer.md # Authoring Manifests diff --git a/doc/manifest/README.md b/doc/manifest/README.md index ae4565e24aed4..2b6d76f67426c 100644 --- a/doc/manifest/README.md +++ b/doc/manifest/README.md @@ -8,9 +8,10 @@ As new releases of the WinGet client are developed with new features and functio The community repository will often delay support for new schema versions until enough devices have been updated so customers can benefit from the newly added manifest keys. Please use the recommended schema version mentioned in the PR template. ## Manifest Schema Versions +* [1.9.0](schema/1.9.0/README.md) * [1.7.0](schema/1.7.0/README.md) -* [1.6.0](schema/1.6.0/README.md) -* [1.5.0](schema/1.5.0/README.md) +* [1.6.0 (deprecated)](schema/1.6.0/README.md) +* [1.5.0 (deprecated)](schema/1.5.0/README.md) * [1.4.0 (deprecated)](schema/1.4.0/README.md) * [1.3.0 (deprecated)](schema/1.3.0/README.md) * [1.2.0 (deprecated)](schema/1.2.0/README.md) diff --git a/doc/manifest/schema/1.9.0/README.md b/doc/manifest/schema/1.9.0/README.md new file mode 100644 index 0000000000000..1b807faead537 --- /dev/null +++ b/doc/manifest/schema/1.9.0/README.md @@ -0,0 +1,69 @@ +[schemaFolder]: https://github.com/microsoft/winget-cli/tree/master/schemas/JSON/manifests/v1.9.0 +[versionSchema]: https://github.com/microsoft/winget-cli/tree/master/schemas/JSON/manifests/v1.9.0/manifest.version.1.9.0.json +[defaultLocaleSchema]: https://github.com/microsoft/winget-cli/tree/master/schemas/JSON/manifests/v1.9.0/manifest.defaultLocale.1.9.0.json +[localeSchema]: https://github.com/microsoft/winget-cli/tree/master/schemas/JSON/manifests/v1.9.0/manifest.locale.1.9.0.json +[installerSchema]: https://github.com/microsoft/winget-cli/tree/master/schemas/JSON/manifests/v1.9.0/manifest.installer.1.9.0.json +[Windows Package Manager Manifest Creator]: https://github.com/microsoft/winget-create +[YAML Create]: https://github.com/microsoft/winget-pkgs/blob/master/Tools/YamlCreate.ps1 + +# Windows Package Manager + +## Manifest Schema 1.9 + +The Windows Package Manager 1.9 client does not support all fields in the 1.9 schema. + +The Windows Package Manager uses manifests (YAML files) to locate and install packages for Windows users. This specification provides references to JSON schemas as well as best practices. + +Manifests submitted to the Windows Package Manager Community Repository should be submitted as a multi-file manifest. Only one version of a package may be submitted per pull request. The [singleton](singleton.md) manifest format is supported by the client, but has been deprecated in the community repository. Rich tooling exists to generate manifests. The [Windows Package Manager Manifest Creator] and [YAML Create] were both designed to produce well formed and rich manifests. + +A multi-file manifest contains: +* One [version](version.md) ([JSON Schema][versionSchema]) file +* One [default locale](defaultLocale.md) ([JSON Schema][defaultLocaleSchema]) file +* One [installer](installer.md) ([JSON Schema][installerSchema]) file +* Additional optional [locale](locale.md) ([JSON Schema][localeSchema]) files + +## YAML file name and folder structure +YAML files shall be added to the repository with the following folder structure: +manifests / p / publisher / package / packageVersion / publisher.package.<manifestFile>.yaml + +Example: +`manifests/m/Microsoft/WindowsTerminal/1.9.1942/Microsoft.WindowsTerminal.installer.yaml` + +* Manifests are partitioned by the first letter of the publisher name (in lower case). For example: m. +* Publisher folder is the name of the company that publishes the tool. For example: Microsoft. +* The child folder package is the name of the application or tool. For example: WindowsTerminal. +* The child folder package version is the version of the package. For example: 1.6.10571.0. +* The filename must be a combination of the publisher name and the application name. For example: Microsoft.WindowsTerminal.yaml. + +The publisher and application folders MUST match the values used to define the Id. See PackageIdentifier: in the YAML for more detail. +The version in the folder name MUST match the version field value in the YAML file. See PackageVersion: in the YAML for more detail. + +There are two primary types of manifests. A single file manifest (singleton) and a multi-file manifest. +[JSON schemas][schemaFolder] have been provided +to help strongly type attributes and requirements. + +## YAML Syntax +Each field in the file must be PascalCased and cannot be duplicated. + +## Best Practices +The package identifier must be unique. You cannot have multiple submissions with the same package identifier. Only one pull request per package version is allowed. + +Avoid creating multiple publisher folders. For example, do not create "Contoso Ltd." if there is already a "Contoso" folder. + +All tools must support a silent install to be permitted in the Windows Package Manager Community Repository. If you have an executable that does not support a silent install, then we cannot provide that tool at this time. + +Provide as many fields as possible. The more meta-data you provide the better the user experience will be. In some cases, the fields may not yet be supported by the Windows Package Manager client (winget.exe). + +The length of strings in this specification should be limited to 100 characters before a line break. + +## Summary of Changes from 1.6.0 + +### [Version](version.md) +* No Changes +### [Default Locale](defaultLocale.md) +* No Changes +### [Installer](installer.md) +* Added `InstallerSwitches > Repair` +* Added `RepairBehavior` and `Installer > RepairBehavior` +### [Locale](locale.md) +* No Changes diff --git a/doc/manifest/schema/1.9.0/defaultLocale.md b/doc/manifest/schema/1.9.0/defaultLocale.md new file mode 100644 index 0000000000000..8641b00318b81 --- /dev/null +++ b/doc/manifest/schema/1.9.0/defaultLocale.md @@ -0,0 +1,333 @@ +[JSON schema]: https://github.com/microsoft/winget-cli/blob/master/schemas/JSON/manifests/v1.9.0/manifest.defaultLocale.1.9.0.json +[YAML]: https://yaml.org/spec/ +[semantic version]: https://semver.org +[Available languages for Windows]: https://docs.microsoft.com/windows-hardware/manufacture/desktop/available-language-packs-for-windows +[locales]: https://docs.microsoft.com/windows-hardware/manufacture/desktop/default-input-locales-for-windows-language-packs +[install]: https://docs.microsoft.com/windows/package-manager/winget/install +[list]: https://docs.microsoft.com/windows/package-manager/winget/list +[upgrade]: https://docs.microsoft.com/windows/package-manager/winget/upgrade +[uninstall-registry]: https://learn.microsoft.com/en-us/windows/win32/msi/uninstall-registry-key + +# Windows Package Manager +## Manifest Schema v1.9.0 Default Locale File + +All Windows Package Manager manifests in the Microsoft community repository are submitted using [YAML] syntax. A [JSON schema] is provided to aid authoring these files in editors, and in the other tooling related to the Windows Package Manager. This document provides detailed information regarding the usage of the YAML keys in the defaultLocale file for multi-file manifests. + +### Default Locale Manifest + +```YAML +PackageIdentifier: # The package unique identifier +PackageVersion: # The package version +PackageLocale: # The package meta-data locale +Publisher: # The publisher name +PublisherUrl: # Optional publisher home page +PublisherSupportUrl: # Optional publisher support page +PrivacyUrl: # Optional publisher privacy page +Author: # Optional author +PackageName: # The package name +PackageUrl: # Optional package home page +License: # The package license +LicenseUrl: # Optional package license page +Copyright: # Optional package copyright +CopyrightUrl: # Optional package copyright page +ShortDescription: # The short package description +Description: # Optional full package description +Moniker: # Optional most common package term +Tags: # Optional list of package terms +Agreements: # Optional package agreements + - AgreementLabel: # Optional agreement label + Agreement: # Optional agreement text + AgreementUrl: # Optional agreement URL +Documentations: # Optional documentation + - DocumentLabel: # Optional documentation label + DocumentUrl: # Optional documentation URL +ReleaseNotes: # Optional release notes +ReleaseNotesUrl: # Optional release notes URL +PurchaseUrl: # Optional purchase URL +InstallationNotes: # Optional notes displayed upon installation +ManifestType: defaultLocale # The manifest type +ManifestVersion: 1.9.0 # The manifest syntax version +``` + +## Fields + +
+ PackageIdentifier - The package unique identifier + + **Required Field** + + This key is the unique identifier for a given package. This value is generally in the form of `Publisher.Package`. It is case sensitive, and this value must match the folder structure under the partition directory in GitHub. +
+ +
+ PackageVersion - The package version + + **Required Field** + + This key represents the version of the package. It is related to the specific release this manifests targets. In some cases you will see a perfectly formed [semantic version] number, and in other cases you might see something different. These may be date driven, or they might have other characters with some package specific meaning for example. + + The Windows Package Manager client uses this version to determine whether or not an upgrade for a package is available. In some cases, packages may be released with a marketing driven version, and that causes trouble with the `winget upgrade` command. + + The current best practice for the Windows Package Manager 1.9 client is to use the value reported in Windows Apps & Features when this version of the package is installed. In some cases, packages do not report a version resulting in an upgrade loop or other unwanted behavior. +
+ +
+ PackageLocaleThe package meta-data locale + + **Required Field** + + This key represents the locale for package meta-data. The format is BCP-47. This value identifies the language for meta-data to be displayed to a user when no locale file matching their preferences is available. The Microsoft community package repository validation pipelines also use this value to determine appropriate validation rules for this file. + + **References:** + +* [Available languages for Windows] +* [Default Input Profiles (Input Locales) in Windows][locales] + + NOTE: This field is the key to determining which fields are required for the Microsoft community repository. The default locale specified in the version file must match with this value. +
+ + +
+ Publisher - The publisher name + + **Required Field** + + This key represents the name of the publisher for a given package. This field is intended to allow the full publisher's or ISV's name to be displayed as they wish. + + NOTE: With the 1.9 release of the Windows Package Manager, this name affects how packages from a source are mapped to Apps installed in Windows 10 and Windows 11 via Add / Remove Programs (ARP) and Windows Apps & Features respectively. The best practice is to ensure this matches the entry for the package when it has been installed. This should be the value of the `Publisher` subkey for the package in the [Windows registry][uninstall-registry]. The impact is associated with `winget upgrade` and `winget list`. +
+ +
+ PublisherUrl - The publisher home page + + **Optional Field** + + This key represents the web site for the publisher or ISV. +
+ +
+ PublisherSupportUrl - The publisher support page + + **Optional Field** + + This key represents the customer support web site or specific web page provided by the publisher or ISV. +
+ +
+ PrivacyUrl - The publisher privacy page or the package privacy page + + **Optional Field** + + This key represents the privacy web site or specific web page provided the publisher or ISV. If there is a privacy web site or specific web page for the package it is preferred over a generic privacy page for the publisher. +
+ +
+ Author - The package author + + **Optional Field** + + This key represents the author of a package. In some cases, the author is an individual who develops and or maintains the package. In other cases this may be a URL pointing to the contributors web page for a package. +
+ +
+ PackageName - The package name + + **Required Field** + + This key represents the name of the package. This field is intended to allow the full package name to be displayed as the publisher or ISV wishes. + + NOTE: With the 1.9 release of the Windows Package Manager, this name affects how packages from a source are mapped to Apps installed in Windows 10 via Add / Remove Programs (ARP). The best practice is to ensure this matches the ARP entry for the package name when it has been installed. This should be the value of the `DisplayName` subkey for the package in the [Windows registry][uninstall-registry]. The impact is associated with `winget upgrade` and `winget list`. +
+ +
+ PackageUrl - The package home page + + **Optional Field** + + This key represents the web site for the package. +
+ +
+ License - The package license + + **Required Field** + + This key represents the license governing the use and or distribution for the product. This could be an open source license, or a commercial license. Please note that a copyright is not considered a license. If there is no available information on a product's license, "Proprietary" should be the value in this field. +
+ +
+ LicenseUrl - The license page + + **Optional Field** + + This key represents the license web site or specific web page provided the publisher or ISV. If there is a license web site or specific web page for the package it is preferred over a generic license page for the publisher. + + If this is a link to the license file for an open source project, it should be specific to the version for the package. Some open source projects change their license over time. +
+ +
+ Copyright - The package copyright + + **Optional Field** + + This key represents the copyright for the package. +
+ +
+ CopyrightUrl - The package copyright page + + **Optional Field** + + This key represents the copyright web site or specific web page provided the publisher or ISV. If there is a copyright web site or specific web page for the package it is preferred over a generic copyright page for the publisher. + + If this is a link to the copyright file for an open source project, it should be specific to the version for the package. Some open source projects change their copyright over time. +
+ +
+ ShortDescription - The short package description + + **Required Field** + + This key represents the description for a package. It is intended for use in `winget show` to help a user understand what the package is. + + NOTE: This should be something descriptive about what the package does, and it should not simply state something like "<package name> installer" or "<package name> setup". +
+ +
+ Description - The full package description + + **Optional Field** + + This key represents the full or long description for a package. It is *not* currently used in the Windows Package Manager. + + NOTE: This was included for integration with the Microsoft Store source to provide the ability to display the full package description. +
+ +
+ Moniker - The most common package term + + **Optional Field** + + This key represents the most common term users would search for when installing or upgrading a package. If only one package uses this moniker, then the [install], [list] and [upgrade] command may match with this package. + + NOTE: Moniker is the third property evaluated when searching for a matching package. +
+ +
+ Tags - List of additional package search terms + + **Optional Field** + + This key represents other common term users would search for when looking for packages. Tags should be pertinent to what a user might search for when looking for a specific package. + + NOTE: The best practice is to present these terms in all lower case with hyphens rather than spaces. +
+ + +
+ Agreements - List of package agreements + + **Optional Field** + + This key holds any agreements a user must accept prior to download and subsequent install or upgrade. + + **Windows Package Manager Community Repository** + + Agreements are only allowed in the community repository when the manifest is maintained by a verified developer. +
+ +
+ AgreementLabel - The label for a package agreement + + **Optional Field** + + This key represents the label for a package agreement. +
+ +
+ Agreement - The text for a package agreement + + **Optional Field** + + This key represents the text or body of a package agreement. +
+ +
+ AgreementUrl - The URL for a package agreement + + **Optional Field** + + This key represents the URL for a package agreement. +
+ +
+ Documentations - List of documentation + + **Optional Field** + + This key holds any documentation for providing software guides such as manuals and troubleshooting URLs. +
+ +
+ DocumentLabel - The documentation label + + **Optional Field** + + This key represents the label for a documentation. +
+ +
+ DocumentUrl - List of documentation + + **Optional Field** + + This key represents the URL for a documentation. +
+ +
+ ReleaseNotes - The Release Notes for a package. + + **Optional Field** + + This key represents release notes for a package. +
+ +
+ ReleaseNotesUrl - The Release Notes web page for a package. + + **Optional Field** + + This key represents release notes web page for a package. +
+ +
+ PurchaseUrl - The Purchase URL for a package. + + **Optional Field** + + This key represents the purchase url for acquiring entitlement for a package. +
+ +
+ InstallationNotes - The Installation Notes for a package. + + **Optional Field** + + This key represents the notes displayed to the user upon completion of a package installation. +
+ +
+ ManifestType - The manifest type + + **Required Field** + + This key must have the value "defaultLocale". The Microsoft community package repository validation pipelines also use this value to determine appropriate validation rules when evaluating this file. +
+ +
+ ManifestVersion - The manifest syntax version + + **Required Field** + + This key must have the value "1.9.0". The Microsoft community package repository validation pipelines also use this value to determine appropriate validation rules when evaluating this file. +
diff --git a/doc/manifest/schema/1.9.0/installer.md b/doc/manifest/schema/1.9.0/installer.md new file mode 100644 index 0000000000000..ca85baebc3aaa --- /dev/null +++ b/doc/manifest/schema/1.9.0/installer.md @@ -0,0 +1,872 @@ +[JSON Schema]: https://github.com/microsoft/winget-cli/blob/master/schemas/JSON/manifests/v1.9.0/manifest.installer.1.9.0.json +[Windows Package Manager Manifest Creator]: https://github.com/microsoft/winget-create +[YAML]: https://yaml.org/spec +[semantic version]: https://semver.org +[`winget upgrade`]: https://docs.microsoft.com/windows/package-manager/winget/upgrade +[App capability declarations]: https://docs.microsoft.com/windows/uwp/packaging/app-capability-declarations +[package family name]: https://learn.microsoft.com/en-us/windows/apps/desktop/modernize/package-identity-overview#package-family-name +[product code]: https://learn.microsoft.com/en-us/windows/win32/msi/product-codes +[upgrade code]: https://learn.microsoft.com/en-us/windows/win32/msi/using-an-upgradecode +[uninstall-registry]: https://learn.microsoft.com/en-us/windows/win32/msi/uninstall-registry-key +[MSIX]: https://docs.microsoft.com/windows/msix/overview +[MSI]: https://docs.microsoft.com/windows/win32/msi/windows-installer-portal +[Inno]: https://jrsoftware.org/isinfo.php +[Nullsoft]: https://sourceforge.net/projects/nsis +[WiX]: https://wixtoolset.org +[Burn]: https://wixtoolset.org/documentation/manual/v3/bundle + +# Windows Package Manager +## Manifest Schema v1.9.0 Installer File +All Windows Package Manager manifests in the Microsoft community repository are submitted using [YAML] syntax. A [JSON schema] is provided to aid authoring these files in editors, and in the other tooling related to the Windows Package Manager. This document provides detailed information regarding the usage of the YAML keys in the installer file for multi-file manifests. + +> [!IMPORTANT] + The 1.9 manifest schema was released with the Windows Package Manager 1.9. Any fields marked *Not implemented* are not supported in the 1.9 client, but may be supported in newer versions of the client. + +### Installer Manifest + +```YAML +PackageIdentifier: # The package unique identifier +PackageVersion: # The package version +Channel: # *Not implemented* distribution channel +Installers: # The list of package installers + - Architecture: # The architecture of the installer + InstallerLocale: # Optional locale of the installer + Platform: # Optional installer supported operating system + MinimumOSVersion: # Optional installer minimum operating system version + InstallerType: # The installer type + InstallerUrl: # The installer URL + InstallerSha256: # The SHA256 hash of the installer + SignatureSha256: # Optional SHA256 hash of the MSIX signature + NestedInstallerType: # The installer type when InstallerType is an archive type + NestedInstallerFiles: # Details about the installers when InstallerType is an archive type + - RelativeFilePath: # The relative path to the nested installer file + PortableCommandAlias: # Optional command alias to be used for calling the package. Only applies when NestedInstallerType is 'portable' + Scope: # Optional installer scope + InstallModes: # Optional installer modes + InstallerSwitches: # Optional installer switches + Silent: # Optional installer switches for silent + SilentWithProgress: # Optional installer switches for silent with progress + Interactive: # Optional installer switches for interactive + InstallLocation: # Optional install location path + Log: # Optional installer log file path + Upgrade: # Optional installer switches for upgrade + Custom: # Optional installer switches for custom behavior + Repair: # Optional installer switches to use when repairing the package installation + UpgradeBehavior: # Optional upgrade method + Commands: # Optional commands or aliases to run the package + Protocols: # Optional list of protocols supported by the package + FileExtensions: # Optional list of file extensions supported by the package + Dependencies: # Optional list of dependencies required by the package + - ExternalDependencies: # *Not implemented* list of external dependencies + PackageDependencies: # Optional list of package dependencies + WindowsFeatures: # Optional list of Windows feature dependencies + WindowsLibraries: # *Not implemented* list of Windows library dependencies + PackageFamilyName: # Optional MSIX package family name + Capabilities: # Optional list of MSIX package capabilities + RestrictedCapabilities: # Optional list of MSIX package restricted capabilities + InstallerAbortsTerminal: # Optional indicator for packages that abort terminal + InstallLocationRequired: # Optional indicator for packages that require install location + RequireExplicitUpgrade: # Optional indicator for packages that upgrade themselves + ElevationRequirement: # Optional scope required to install package + UnsupportedOSArchitectures: # Optional architectures the package is not supported on + Markets: # Optional markets the package is allowed to be installed + ExcludedMarkets: # Optional markets the package is not allowed to be installed + InstallerSuccessCodes: # Optional non-zero installer success codes + ExpectedReturnCodes: # Optional non-zero installer return codes + - InstallerReturnCode: # Optional non-zero installer return code + ReturnResponse: # Optional response for an expected return code + ReturnResponseUrl: # Optional response URL for an expected return code + ProductCode: # Optional product code of the installer + AppsAndFeaturesEntries: # Optional entries from the Add and Remove Programs (ARP) table + - DisplayName: # Optional program name shown in the ARP entry + DisplayVersion: # Optional version displayed in the ARP entry + Publisher: # Optional publisher displayed in the ARP entry + ProductCode: # Optional product code of the installer + UpgradeCode: # Optional upgrade code of the installer + InstallerType: # Optional installer type + UnsupportedArguments: # Optional list of Windows Package Manager Client arguments the installer does not support + - UnsupportedArgument: # Optional unsupported Windows Package Manager Client argument + DisplayInstallWarnings: # *Not implemented* Optional indicator for packages that are known to interfere with running application during install + ReleaseDate: # Optional release date + InstallationMetadata: # Optional metadata for deeper installation detection + - DefaultInstallLocation: # Optional default install location for the package + Files: # Optional list of files installed by the package + - RelativeFilePath: # Optional relative path to the installed file + FileSha256: # Optional Sha256 of the installed file + FileType: # Optional installed file type. Treated as 'other' if not specified + InvocationParameter: # Optional parameter for invocable files + DisplayName: # Optional display name for invocable files + DownloadCommandProhibited: # Optional indicator for packages which cannot be downloaded for offline installation + RepairBehavior: # Optional repair method to use with 'winget repair` + ArchiveBinariesDependOnPath: # Optional indication to add the install location directly to PATH. Only applies to an archive containing portable packages +ManifestType: installer # The manifest type +ManifestVersion: 1.9.0 # The manifest syntax version +``` + +### Installer Minimal Example + +Path: manifests/m/Microsoft/WindowsTerminal/1.9.1942/Microsoft.WindowsTerminal.installer.yaml + +```YAML +PackageIdentifier: Microsoft.WindowsTerminal +PackageVersion: 1.9.1942.0 +Installers: + - Architecture: x64 + InstallerType: msix + InstallerUrl: https://github.com/microsoft/terminal/releases/download/v1.9.1942.0/Microsoft.WindowsTerminal_1.9.1942.0_8wekyb3d8bbwe.msixbundle + InstallerSha256: 578D987D58B3CE5F6BF3316C6A5AECE8EB6B94DBCD1963413D81CB313D6C28D5 +ManifestType: installer +ManifestVersion: 1.9.0 +``` + +### Installer Complex Example + +Path: manifests/m/Microsoft/WindowsTerminal/1.9.1942/Microsoft.WindowsTerminal.installer.yaml + +```YAML +PackageIdentifier: Microsoft.WindowsTerminal +PackageVersion: 1.9.1942.0 +Platform: +- Windows.Desktop +MinimumOSVersion: 10.0.18362.0 +InstallerType: msix +InstallModes: +- silent +PackageFamilyName: Microsoft.WindowsTerminal_8wekyb3d8bbwe +Installers: +- Architecture: x64 + InstallerUrl: https://github.com/microsoft/terminal/releases/download/v1.9.1942.0/Microsoft.WindowsTerminal_1.9.1942.0_8wekyb3d8bbwe.msixbundle + InstallerSha256: 578D987D58B3CE5F6BF3316C6A5AECE8EB6B94DBCD1963413D81CB313D6C28D5 + SignatureSha256: 889A0BA756E74386F95A37F6A813C6D383DC21349A2D18E2B192D4E0E7F80659 +- Architecture: arm64 + InstallerUrl: https://github.com/microsoft/terminal/releases/download/v1.9.1942.0/Microsoft.WindowsTerminal_1.9.1942.0_8wekyb3d8bbwe.msixbundle + InstallerSha256: 578D987D58B3CE5F6BF3316C6A5AECE8EB6B94DBCD1963413D81CB313D6C28D5 + SignatureSha256: 889A0BA756E74386F95A37F6A813C6D383DC21349A2D18E2B192D4E0E7F80659 +- Architecture: x86 + InstallerUrl: https://github.com/microsoft/terminal/releases/download/v1.9.1942.0/Microsoft.WindowsTerminal_1.9.1942.0_8wekyb3d8bbwe.msixbundle + InstallerSha256: 578D987D58B3CE5F6BF3316C6A5AECE8EB6B94DBCD1963413D81CB313D6C28D5 + SignatureSha256: 889A0BA756E74386F95A37F6A813C6D383DC21349A2D18E2B192D4E0E7F80659 +ManifestType: installer +ManifestVersion: 1.9.0 +``` + +## Fields + +
+ PackageIdentifier - The package unique identifier + + **Required Field** + + This key is the unique identifier for a given package. This value is generally in the form of `Publisher.Package`. It is case sensitive, and this value must match the folder structure under the partition directory in GitHub. +
+ +
+ PackageVersion - The package version + + **Required Field** + + This key represents the version of the package. It is related to the specific release this manifests targets. In some cases you will see a perfectly formed [semantic version] number, and in other cases you might see something different. These may be date driven, or they might have other characters with some package specific meaning for example. + + The Windows Package Manager client uses this version to determine if an upgrade for a package is available. In some cases, packages may be released with a marketing driven version, and that causes trouble with the [`winget upgrade`] command. + + NOTE: The current best practice is to use the value reported in Add / Remove Programs when this version of the package is installed. In some cases, packages do not report a version resulting in an upgrade loop or other unwanted behavior. This practice may seem contrary to using semantic versioning, but it provides the best end to end experience for customers. It will take time for publishers and ISVs to migrate to semantic versioning, and some may intentionally choose to preserve other versioning schemes. In these cases, it is best practice to include the "AppsAndFeaturesEntries" section for each installer. +
+ +
+ Channel - The distribution channel + + **Optional Field** + + This key represents the distribution channel for a package. Examples may include "stable" or "beta". + + NOTE: This key is included for future use. The Windows Package Manager currently does not have any behavior associated with this key. The intent behind this key is to help disambiguate the different channels for packages lacking support for side by side installation. Some packages support having more than one package channel available on a system simultaneously; in this case it is better to use unique packages rather than channels. This key is intended to ensure the proper channel for a package is used during install and upgrade scenarios. +
+ +
+ Installers - Package installer + + **Required Field** + + The key represents an installer for a package. + + IMPORTANT: Many of the keys related to installers may either be at the root level of the manifest, or included in an installer. Any values provided at the root level and not specified in an installer will be inherited. +
+ +
+ Architecture - The installer target architecture + + **Required Field** + + This key represents the hardware architecture targeted by the installer. The Windows Package Manager will attempt to determine the best architecture to use. If emulation is available and the native hardware architecture does not have a supported installer, the emulated architecture may be used. + + Available architectures: + * x86 + * x64 + * arm + * arm64 + * neutral + +
+ +
+ InstallerLocale - Locale for package installer + + **Optional Field** + + This key represents the locale for an installer *not* the package meta-data. Some installers are compiled with locale or language specific properties. If this key is present, it is used to represent the package locale for an installer. + + NOTE: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply. +
+ +
+ Platform - The installer supported operating system + + **Optional Field** + + This key represents the Windows platform targeted by the installer. The Windows Package Manager currently supports "Windows.Desktop" and "Windows.Universal". The Windows Package Manager client currently has no behavior associated with this property. It was added for future looking scenarios. + + NOTE: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply. +
+ +
+ MinimumOSVersion - The installer minimum operating system version + + **Optional Field** + + This key represents the minimum version of the Windows operating system supported by the package. + + NOTE: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply. +
+ +
+ InstallerType - Enumeration of supported installer types. + + **Required Field** + + This key represents the installer type for the package. The Windows Package Manager supports [MSIX], [MSI], and executable installers. Some well known formats ([Inno], [Nullsoft], [WiX], and [Burn]) provide standard sets of installer switches to provide different installer experiences. Portable packages are supported as of Windows Package Manager 1.3. Zip packages are supported as of Windows Package Manager 1.5. + + IMPORTANT: The Windows Package Manager 1.9 does not support loose executables with the .com file extension directly. Progressive Web Applications (PWAs) and fonts are also not supported. + + NOTE: The Windows Package Manager defaults to the install mode providing install progress. A best practice is to determine if one of the supported installer technologies was used to build an installer with the .exe file extension. The [Windows Package Manager Manifest Creator] tool can be used to determine if one of the known tools was used to build an installer with the .exe file extension. + + NOTE: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply. +
+ +
+ InstallerUrl - The installer Url + + **Required Field** + + This key represents the URL to download the installer. +
+ +
+ InstallerSha256 - Sha256 is required. Sha256 of the installer + + **Required Field** + + This key represents the SHA 256 hash for the installer. It is used to confirm the installer has not been modified. The Windows Package Manager will compare the hash in the manifest with the calculated hash of the installer after it has been downloaded. + + NOTE: The [Windows Package Manager Manifest Creator] can be used to determine the SHA 256 of the installer. The `winget hash <pathToInstaller>` command can also be used to determine the SHA 256 of the installer. +
+ +
+ SignatureSha256 - SignatureSha256 is recommended for appx or msix. It is the sha256 of signature file inside appx or msix. Could be used during streaming install if applicable + + **Optional Field** + + This key represents the signature file (AppxSignature.p7x) inside an MSIX installer. It is used to provide streaming install for MSIX packages. + + IMPORTANT: MSIX installers must be signed to be included in the Microsoft community package repository. If the installer is an MSIX this signature should be included in the manifest. The [Windows Package Manager Manifest Creator] can be used to determine the signature SHA 256. The `winget hash --msix` command can also be used to determine the signature SHA 256. +
+ +
+ NestedInstallerType - NestedInstallerType is required when InstallerType is an archive type such as '.zip' + + **Required Field** + + This key represents the installer type of the file within the archive which will be used as the installer. +
+ +
+ NestedInstallerFiles - NestedInstallerFiles is required when InstallerType is an archive type such as '.zip' + + **Required Field** + + This key is a list of all the installers to be executed within an archive. + + IMPORTANT: This field can only contain one nested installer file unless the NestedInstallerType is 'portable' +
+ +
+ RelativeFilePath - RelativeFilePath is required within NestedInstallerFiles + + **Required Field** + + The relative path to the installer file contained within the archive. +
+ +
+ PortableCommandAlias - The command alias to be used for calling the package + + **Optional Field** + + The alias which is added to the PATH for calling the package from the command line. + + IMPORTANT: This field is only valid when NestedInstallerType is 'portable' +
+ +
+ Scope - Scope indicates if the installer is per user or per machine + + **Optional Field** + + This key represents the scope the package is installed under. The two configurations are "user" and "machine". Some installers support only one of these scopes while others support both via arguments passed to the installer using "InstallerSwitches". + + NOTE: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply. +
+ +
+ InstallModes - List of supported installer modes + + **Optional Field** + + This key represents the install modes supported by the installer. The Microsoft community package repository requires a package support "silent" and "silent with progress". The Windows Package Manager also supports "interactive" installers. The Windows Package Manager client does not have any behavior associated with this key. + + IMPORTANT: Some installers will attempt to install missing dependencies. If these dependencies require user interaction, the package will not be allowed into the Microsoft community package repository. + + NOTE: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply. +
+ +
+ InstallerSwitches - Switches passed to installers + + **Optional Field** + + This key represents the set of switches passed to installers. + + **Windows Package Manager Community Repository** + + The Microsoft community repository currently requires support for silent and silent with progress installation. Many custom .exe installers will require the proper switches to meet this requirement. The [Windows Package Manager Manifest Creator] tool can be used to determine if one of the known tools was used to build an installer with the .exe file extension. In the event the tool is unable to determine the tool used to build the installer, the publisher may have documentation for the proper switches. +
+ +
+ Silent - Silent is the value that should be passed to the installer when user chooses a silent or quiet install + + **Optional Field** + + This key represents switches passed to the installer to provide a silent install experience. These would be used when the command `winget install --silent` is executed. + + NOTE: When the Windows Package Manager installs a package using the "silent" install mode, any custom switches will also be passed to the installer. If a user applies override switches via command line via the Windows Package Manager, none of the switches from the manifest will be passed to the installer. + + NOTE: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply. +
+ +
+ SilentWithProgress - SilentWithProgress is the value that should be passed to the installer when user chooses a non-interactive install + + **Optional Field** + + This key represents switches passed to the installer to provide a silent with progress install experience. This is intended to allow a progress indication to the user, and the indication may come from an installer UI dialogue, but it must not require user interaction to complete. The Windows Package Manager currently defaults to this install experience. + + NOTE: When the Windows Package Manager installs a package using the "silent with progress" install mode, any custom switches will also be passed to the installer. If a user applies override switches via command line via the Windows Package Manager, none of the switches from the manifest will be passed to the installer. +
+ +
+ Interactive - Interactive is the value that should be passed to the installer when user chooses an interactive install + + **Optional Field** + + This key represents switches passed to the installer to provide an interactive install experience. This is intended to allow a user to interact with the installer. These would be used when the command `winget install --interactive` is executed. + + NOTE: When the Windows Package Manager installs a package using the "interactive" install mode, any custom switches will also be passed to the installer. If a user applies override switches via command line via the Windows Package Manager, none of the switches from the manifest will be passed to the installer. +
+ +
+ InstallLocation - InstallLocation is the value passed to the installer for custom install location. + + **Optional Field** + + This key represents the path to install the package if the installer supports installing the package in a user configurable location. The **<INSTALLPATH>** token can be included in the switch value so the Windows Package Manager will replace the token with user provided path. +
+ +
+ Log - Log is the value passed to the installer for custom log file path. + + **Optional Field** + + This key represents the path logs will be directed to if the installer supports specifying the log path in a user configurable location. The **<LOGPATH>** token can be included in the switch value so the Windows Package Manager will replace the token with user provided path. +
+ +
+ Upgrade - Upgrade is the value that should be passed to the installer when user chooses an upgrade. + + **Optional Field** + + This key represents the switches to be passed to the installer during an upgrade. This will happen only if the upgrade behavior is "install". + + NOTE: If a user applies override switches via command line via the Windows Package Manager, none of the switches from the manifest will be passed to the installer. +
+ +
+ Custom - Custom switches will be passed directly to the installer by the Windows Package Manager. + + **Optional Field** + + This key represents any switches the Windows Package Manager will pass to the installer in addition to "Silent", "SilentWithProgress", and "Interactive". + + NOTE: If a user applies override switches via command line via the Windows Package Manager, none of the switches from the manifest will be passed to the installer. +
+ +
+ Repair - Repair is the value that should be passed to the installer when a user chooses to repair an existing installation + + **Optional Field** + + This key represents the switches to be passed during the repair of an existing installation. This will be passed to the installer, ModifyPath ARP command, or Uninstaller ARP command depending on the RepairBehavior specified in the manifest. + + NOTE: If a user applies override switches via command line via the Windows Package Manager, none of the switches from the manifest will be passed to the installer. +
+ +
+ UpgradeBehavior - The upgrade method + + **Optional Field** + + This key represents what the Windows Package Manager should do regarding the currently installed package during a package upgrade. If the package should be uninstalled first, the "uninstallPrevious" value should be specified. If the package should not be upgraded through WinGet, the "deny" value should be specified. + + NOTE: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply. +
+ +
+ Commands - List of commands or aliases to run the package + + **Optional Field** + + This key represents any commands or aliases used to execute the package after it has been installed. + + IMPORTANT: The Windows Package Manager does not update the path during the install workflow. In those cases, the user may need to restart their shell or terminal before the command will execute the newly installed package. The Windows Package Manager does not support any behavior related to commands or aliases. + + NOTE: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply. +
+ +
+ Protocols - List of protocols the package provides a handler for + + **Optional Field** + + This key represents any protocols (i.e. URI schemes) supported by the package. For example: `["ftp", "ldap"]`. Entries shouldn't have trailing colons. The Windows Package Manager does not support any behavior related to protocols handled by a package. + + NOTE: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply. +
+ +
+ FileExtensions - List of file extensions the package could support + + **Optional Field** + + This key represents any file extensions supported by the package. For example: `["html", "jpg"]`. Entries shouldn't have leading dots. The Windows Package Manager does not support any behavior related to the file extensions supported by the package. + + NOTE: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply. +
+ +
+ Dependencies - List of dependencies needed to install or execute the package + + **Optional Field** + + This key represents any dependencies required to install or run the package. + + IMPORTANT: External Dependencies are not supported. Package dependencies are referenced by their package identifier and must come from the same source. Windows Features may require a reboot before they are enabled. Windows Libraries are not supported. + + NOTE: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply. +
+ +
+ ExternalDependencies - List of external package dependencies + + **Optional Field** + + This key represents any external dependencies required to install or run the package. + + IMPORTANT: The Windows Package Manager does not support any behavior related to external dependencies. +
+ +
+ PackageDependencies - List of package dependencies from current source + + **Optional Field** + + This key represents any packages from the same source required to install or run the package. + + IMPORTANT: Dependencies are referenced by their package identifier and must come from the same source. +
+ +
+ WindowsFeatures - List of Windows feature dependencies + + **Optional Field** + + This key represents any Windows features required to install or run the package. +
+ +
+ WindowsLibraries - List of Windows library dependencies + + **Optional Field** + + This key represents any Windows libraries required to install or run the package. + + IMPORTANT: The Windows Package Manager does not support any behavior related to Windows Libraries. +
+ +
+ PackageFamilyName - PackageFamilyName for appx or msix installer. Could be used for correlation of packages across sources + + **Optional Field** + + This key represents the [package family name] specified in an MSIX installer. This value is used to assist with matching packages from a source to the program installed in Windows via Add / Remove Programs for list, and upgrade behavior. + + NOTE: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply. +
+ +
+ Capabilities - List of appx or msix installer capabilities + + **Optional Field** + + This key represents the capabilities provided by an MSIX package. More information is available for [App capability declarations] + + NOTE: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply. +
+ +
+ RestrictedCapabilities - List of appx or msix installer restricted capabilities + + **Optional Field** + + This key represents the restricted capabilities provided by an MSIX package. More information is available for [App capability declarations] + + NOTE: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply. +
+ +
+ InstallerAbortsTerminal - Indicator for installers that abort the terminal. + + **Optional Field** + + This key represents the behavior associated with installers that abort the terminal. This most often occurs when a user is performing an upgrade of the running terminal. + + NOTE: Windows Terminal no longer causes this to occur as the MSIX install behavior from the Windows Package Manager is deferred registration. +
+ +
+ InstallLocationRequired - Indicator for packages requiring an install location to be specified. + + **Optional Field** + + This key represents the requirement to have an install location specified. These installers are known to deploy files to the location the installer is executed in. +
+ +
+ RequireExplicitUpgrade - Indicator for packages that upgrade themselves. + + **Optional Field** + + This key identifies packages that upgrade themselves. By default, they are excluded from `winget upgrade --all`. +
+ +
+ ElevationRequirement - Indicator for elevation requirements when installing or upgrading packages. + + **Optional Field** + + This key represents which scope a package is required to be executed under. Some packages require user level execution while others require administrative level execution. + +* elevationRequired - Must be run from a shell that is running in an administrative context (e.g - Admin user using powershell/terminal/cmd with "Run as Administrator") +* elevationProhibited - Must be run from a shell that is not running in an administrative context +* elevatesSelf - If called from a non-administrative context, will request elevation. If called from an administrative context, may or may not request elevation. +
+ +
+ UnsupportedOSArchitectures - List of unsupported architectures for a package. + + **Optional Field** + + This key represents any architectures a package is known not to be compatible with. Generally, this is associated with emulation modes. +
+ +
+ Markets - List of supported markets for a package. + + **Optional Field** + + This key represents any markets a package may be installed in. + + IMPORTANT: If a market is listed in both this key and the ExcludedMarkets key, the market will be excluded. Both keys are present to reduce the need to list the larger set of markets. +
+ +
+ ExcludedMarkets - List of unsupported markets for a package. + + **Optional Field** + + This key represents any markets a package may not be installed in. + + IMPORTANT: If a market is listed in both this key and the Markets key, the market will be excluded. Both keys are present to reduce the need to list the larger set of markets. +
+ +
+ InstallerSuccessCodes - List of additional non-zero installer success exit codes other than known default values by the Windows Package Manager. + + **Optional Field** + + This key represents any status codes returned by the installer representing a success condition other than zero. + + IMPORTANT: Some return codes indicate a reboot is suggested or required. The Windows Package Manager does not support the reboot behavior currently. Some installers will force a reboot, and the Windows Package Manager does not currently suppress reboot behavior. + + NOTE: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply. +
+ +
+ ExpectedReturnCodes - List of additional non-zero installer exit codes other than known default values by the Windows Package Manager. + + **Optional Field** + + This key represents any status codes returned by the installer representing a condition other than zero. + + IMPORTANT: Some return codes indicate a reboot is suggested or required. The Windows Package Manager does not support the reboot behavior currently. Some installers will force a reboot, and the Windows Package Manager does not currently suppress reboot behavior. + + NOTE: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply. +
+ +
+ InstallerReturnCode - The non-zero installer exit code other than known default values by the Windows Package Manager. + + **Optional Field** + + This key represents any status code returned by the installer representing a condition other than zero. MSIX and MSI packages have well known return codes. This is primarily intended for executable installers that have custom or unique return codes that can be mapped to a return response. +
+ +
+ ReturnResponse - The return response to be displayed in the event an expected return code is encountered. + + **Optional Field** + + This key represents a return response to display when an installer returns an expected return code. MSIX and MSI packages have well known return codes. This is primarily intended for executable installers that have custom or unique return codes that can be mapped to a return response. + + NOTE: An enumerated list of values in the JSON schema must be specified for consistency of user experience. +
+ +
+ ReturnResponseUrl - The return response URL to be displayed in the event an expected return code is encountered. + + **Optional Field** + + This key represents a return response URL to display when an installer returns an expected return code. MSIX and MSI packages have well known return codes. This is primarily intended for executable installers that have custom or unique return codes that can be mapped to a return response. + + NOTE: An enumerated list of values in the JSON schema must be specified for consistency of user experience. +
+ +
+ ProductCode - ProductCode is used for correlation of packages with manifests is configured sources. + + **Optional Field** + + This key represents the [product code] specified in an MSI installer. This value is used to assist with matching packages from a source to the program installed in Windows via Add / Remove Programs for list, and upgrade behavior. + + NOTE: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply. +
+ +
+ AppsAndFeaturesEntries - AppsAndFeaturesEntries are used to match installed packages with manifests in configured sources. + + **Optional Field** + + This key represents the values reported by Windows Apps & Features. When a package is installed, entries are made into the Windows Registry. +
+ +
+ DisplayName - DisplayName is what is displayed in the Control Panel for installed packages. + + **Optional Field** + + This key represents the package name as displayed in Windows Apps & Features. This is the value of the `DisplayName` subkey for the package in the [Windows registry][uninstall-registry]. It is used to help correlate installed packages with manifests in configured sources. +
+ +
+ DisplayVersion - DisplayVersion is the version displayed in the Control Panel for installed packages. + + **Optional Field** + + This key represents the package version as displayed in Windows Apps & Features. This is the value of the `DisplayVersion` subkey for the package in the [Windows registry][uninstall-registry]. It is used to help correlate installed packages with manifests in configured sources. + + > Note: When the PackageVersion and DisplayVersion are the same, the DisplayVersion should be omitted from the AppsAndFeaturesEntries +
+ +
+ Publisher - Publisher is the value of the package publisher reported in the Windows registry. + + **Optional Field** + + This key represents the package publisher as displayed in Windows Apps & Features. This is the value of the `Publisher` subkey for the package in the [Windows registry][uninstall-registry]. It is used to help correlate installed packages with manifests in configured sources. +
+ +
+ ProductCode - ProductCode is used for correlation of packages with manifests in configured sources. + + **Optional Field** + + This key represents the [product code] for a package. It is used to help correlate installed packages with manifests in configured sources. + + NOTE: This key is displayed twice for completeness. When AppsAndFeaturesEntries are specified, the ProductCode should be placed both within the installer and the AppsAndFeaturesEntries +
+ +
+ UpgradeCode - UpgradeCode is used for correlation of packages with manifests in configured sources. + + **Optional Field** + + This key represents the [upgrade code] for a package. It is used to help correlate installed packages with manifests in configured sources. +
+ +
+ InstallerType - Enumeration of supported installer types. + + **Optional Field** + + This key represents the installer type for the package. It is used to help correlate installed packages with manifests in configured sources. In some cases, an installer is an .exe based installer, but contains an MSI installer. This key will help the Windows Package Manager understand if upgrading an MSI should be performed when it is contained in an .exe installer. + + NOTE: This key is displayed twice for completeness. When AppsAndFeaturesEntries are specified, the InstallerType should be placed within the installer only, unless the AppsAndFeaturesEntries represent a different InstallerType +
+ +
+ UnsupportedArguments - List of unsupported Windows Package Manager Client arguments for an installer. + + **Optional Field** + + This key represents the list of Windows Package Manager Client arguments the installer does not support. Only the `--log` and `--location` arguments can be specified as unsupported arguments for an installer. + +
+ +
+ DisplayInstallWarnings - Indicator for displaying a warning message prior to install or upgrade. + + **Optional Field** + +This key represents whether a warning message is displayed to the user prior to install or upgrade if the package is known to interfere with any running applications. + +NOTE: The DisplayInstallWarnings behavior is not implemented in the Windows Package Manager 1.9 client. +
+ +
+ ReleaseDate - The Release Date for a package. + + **Optional Field** + + This key represents the release date for a package, in RFC 3339 / ISO 8601 format, i.e. "YYYY-MM-DD". +
+ +
+ InstallationMetadata - Details about the installation. + + **Optional Field** + + This key allows for additional metadata to be used for deeper installation detection. +
+ +
+ DefaultInstallLocation - The default installed package location. + + **Optional Field** + + This key represents the default install location for the package. +
+ +
+ Files - The list of installed files. + + **Optional Field** + + This key represents the files installed for the package. +
+ +
+ RelativeFilePath - The relative path to the installed file. + + **Optional Field** + + This key represents the path to the installed file relative to the default install location. +
+ +
+ FileSha256 - The optional Sha256 of the installed file. + + **Optional Field** + + This key represents the Sha256 hash of the installed file. +
+ +
+ FileType - The optional installed file type. + + **Optional Field** + + This key represents the type of the installed file - `launch`, `uninstall`, or `other`. If not specified, the file is treated as `other`. +
+ +
+ InvocationParameter - Optional parameter for invocable files. + + **Optional Field** + + This key represents the parameter to use for invocable files. +
+ +
+ DisplayName - Optional display name for invocable files + + **Optional Field** + + This key represents the display name to use for invocable files. +
+ +
+ DownloadCommandProhibited - Optional indicator for packages which cannot be downloaded for offline installation + + **Optional Field** + + When `true`, this flag will prohibit the manifest from being downloaded for offline installation with the `winget download` command +
+ +
+ RepairBehavior - Optional repair method to use with 'winget repair` + + **Optional Field** + + This field controls what method is used to repair existing installations of packages. Specifying `modify` will use the ModifyPath string from the package's ARP data, `uninstaller` will use the Uninstall string from the package's ARP data, and `installer` will download and run the installer. In each case, the `Repair` value from `InstallerSwitches` will be added as an argument when invoking the command to repair the package. +
+ +
+ ArchiveBinariesDependOnPath - Optional indication to add the install location directly to PATH. Only applies to an archive containing portable packages + + **Optional Field** + + This field controls the behavior of environment variables when installing portable packages from an archive (i.e `zip`). Specifying `true` will add the install location directly to the `PATH` environment variable. Specifying `false` or leaving the value unset will use the default behavior of adding a symlink to the `links` folder, if supported, or adding the install location directly to `PATH` if symlinks are not supported. +
+ +
+ ManifestType - The manifest type + + **Required Field** + + This key must have the value "installer". The Microsoft community package repository validation pipelines also use this value to determine appropriate validation rules when evaluating this file. +
+ +
+ ManifestVersion - The manifest syntax version + + **Required Field** + + This key must have the value "1.9.0". The Microsoft community package repository validation pipelines also use this value to determine appropriate validation rules when evaluating this file. +
diff --git a/doc/manifest/schema/1.9.0/locale.md b/doc/manifest/schema/1.9.0/locale.md new file mode 100644 index 0000000000000..1eeb9356d72df --- /dev/null +++ b/doc/manifest/schema/1.9.0/locale.md @@ -0,0 +1,318 @@ +[JSON schema]: https://github.com/microsoft/winget-cli/blob/master/schemas/JSON/manifests/v1.9.0/manifest.locale.1.9.0.json +[YAML]: https://yaml.org/spec +[semantic version]: https://semver.org +[Available languages for Windows]: https://docs.microsoft.com/windows-hardware/manufacture/desktop/available-language-packs-for-windows +[locales]: https://docs.microsoft.com/windows-hardware/manufacture/desktop/default-input-locales-for-windows-language-packs +[install]: https://docs.microsoft.com/windows/package-manager/winget/install +[list]: https://docs.microsoft.com/windows/package-manager/winget/list +[upgrade]: https://docs.microsoft.com/windows/package-manager/winget/upgrade +[uninstall-registry]: https://learn.microsoft.com/en-us/windows/win32/msi/uninstall-registry-key + +# Windows Package Manager +## Manifest Schema v1.9.0 Locale File + +All Windows Package Manager manifests in the Microsoft community repository are submitted using [YAML] syntax. A [JSON schema] is provided to aid authoring these files in editors, and in the other tooling related to the Windows Package Manager. This document provides detailed information regarding the usage of the YAML keys in the locale file for multi-file manifests. + +### Locale Manifest + +```YAML +PackageIdentifier: # The package unique identifier +PackageVersion: # The package version +PackageLocale: # The package meta-data locale +Publisher: # Optional publisher name +PublisherUrl: # Optional publisher home page +PublisherSupportUrl: # Optional publisher support page +PrivacyUrl: # Optional publisher privacy page +Author: # Optional author +PackageName: # Optional package name +PackageUrl: # Optional package home page +License: # Optional package license +LicenseUrl: # Optional package license page +Copyright: # Optional package copyright +CopyrightUrl: # Optional package copyright page +ShortDescription: # Optional short package description +Description: # Optional full package description +Tags: # Optional list of package terms +Agreements: # Optional package agreements + - AgreementLabel: # Optional agreement label + Agreement: # Optional agreement text + AgreementUrl: # Optional agreement URL +Documentations: # Optional documentation + - DocumentLabel: # Optional documentation label + DocumentUrl: # Optional documentation URL +ReleaseNotes: # Optional release notes +ReleaseNotesUrl: # Optional release notes URL +PurchaseUrl: # Optional purchase URL +InstallationNotes: # Optional notes displayed upon installation +ManifestType: locale # The manifest type +ManifestVersion: 1.9.0 # The manifest syntax version +``` + +## Fields + +
+ PackageIdentifier - The package unique identifier + + **Required Field** + + This key is the unique identifier for a given package. This value is generally in the form of `Publisher.Package`. It is case sensitive, and this value must match the folder structure under the partition directory in GitHub. +
+ +
+ PackageVersion - The package version + + **Required Field** + + This key represents the version of the package. It is related to the specific release this manifests targets. In some cases you will see a perfectly formed [semantic version] number, and in other cases you might see something different. These may be date driven, or they might have other characters with some package specific meaning for example. + + The Windows Package Manager client uses this version to determine whether or not an upgrade for a package is available. In some cases, packages may be released with a marketing driven version, and that causes trouble with the `winget upgrade` command. + + The current best practice is to use the value reported in Add / Remove Programs when this version of the package is installed. In some cases, packages do not report a version resulting in an upgrade loop or other unwanted behavior. +
+ +
+ PackageLocale - The package meta-data locale + + **Required Field** + + This key represents the locale for package meta-data. The format is BCP-47. This value identifies the language for meta-data to be displayed to a user when no locale file matching their preferences is available. The Microsoft community package repository validation pipelines also use this value to determine appropriate validation rules for this file. + + **References** + +* [Available languages for Windows] +* [Default Input Profiles (Input Locales) in Windows][locales] + + NOTE: This field is the key to determining which fields are required for the Microsoft community repository. The default locale specified in the version file must match with this value. +
+ +
+ Publisher - The publisher name + + **Optional Field** + + This key represents the name of the publisher for a given package. This field is intended to allow the full publisher's or ISV's name to be displayed as they wish. + + NOTE: With the 1.9 release of the Windows Package Manager, this name affects how packages from a source are mapped to Apps installed in Windows 10 and Windows 11 via Add / Remove Programs (ARP). The best practice is to ensure this matches the ARP entry for the package when it has been installed. This should be the value of the `Publisher` subkey for the package in the [Windows registry][uninstall-registry]. The impact is associated with `winget upgrade` and `winget list`. +
+ +
+ PublisherUrl - The publisher home page + + **Optional Field** + + This key represents the web site for the publisher or ISV. +
+ +
+ PublisherSupportUrl - The publisher support page + + **Optional Field** + + This key represents the customer support web site or specific web page provided by the publisher or ISV. +
+ +
+ PrivacyUrl - The publisher privacy page or the package privacy page + + **Optional Field** + + This key represents the privacy web site or specific web page provided the publisher or ISV. If there is a privacy web site or specific web page for the package, it is preferred over a generic privacy page for the publisher. +
+ +
+ Author - The package author + + **Optional Field** + + This key represents the author of a package. In some cases, the author is an individual who develops and or maintains the package. +
+ +
+ PackageName - The package name + + **Optional Field** + + This key represents the name of the package. This field is intended to allow the full package name to be displayed as the publisher or ISV wishes. + + NOTE: With the 1.9 release of the Windows Package Manager, this name affects how packages from a source are mapped to Apps installed in Windows 10 via Add / Remove Programs (ARP). The best practice is to ensure this matches the ARP entry for the package name when it has been installed. This should be the value of the `DisplayName` subkey for the package in the [Windows registry][uninstall-registry]. The impact is associated with `winget upgrade` and `winget list`. +
+ +
+ PackageUrl - The package home page + + **Optional Field** + + This key represents the web site for the package. +
+ +
+ License - The package license + + **Optional Field** + + This key represents the license governing the use and or distribution for the product. This could be an open source license, or a commercial license. Please note that a copyright is not considered a license. If there is no available information on a product's license, "Proprietary" should be the value in this field. +
+ +
+ LicenseUrl - The license page + + **Optional Field** + + This key represents the license web site or specific web page provided the publisher or ISV. If there is a license web site or specific web page for the package, it is preferred over a generic license page for the publisher. + + If this is a link to the license file for an open source project, it should be specific to the version for the package. Some open source projects change their license over time. +
+ +
+ Copyright - The package copyright + + **Optional Field** + + This key represents the copyright for the package. +
+ +
+ CopyrightUrl - The package copyright page + + **Optional Field** + + This key represents the copyright web site or specific web page provided the publisher or ISV. If there is a copyright web site or specific web page for the package, it is preferred over a generic copyright page for the publisher. + + If this is a link to the copyright file for an open source project, it should be specific to the version for the package. Some open source projects change their copyright over time. +
+ +
+ ShortDescription - The short package description + + **Optional Field** + + This key represents the description for a package. It is intended for use in `winget show` to help a user understand what the package is. + + NOTE: This should be something descriptive about what the package does, and it should not simply state something like "<package name> installer" or "<package name> setup". +
+ +
+ Description - The full package description + + **Optional Field** + + This key represents the full or long description for a package. It is *not* currently used in the Windows Package Manager. + + NOTE: This was included for future integration with the Microsoft Store source to provide the ability to display the full package description. +
+ +
+ Tags - List of additional package search terms + + **Optional Field** + + This key represents other common term users would search for when looking for packages. + + NOTE: The best practice is to present these terms in all lower case with hyphens rather than spaces. +
+ +
+ Agreements/b> - List of package agreements + + **Optional Field** + + This key holds any agreements a user must accept prior to download and subsequent install or upgrade. + + IMPORTANT: In the Windows Package Manager Community Repository, these are only allowed to be submitted by verified developers. +
+ +
+ AgreementLabel - The label for a package agreement + + **Optional Field** + + This key represents the label for a package agreement. +
+ +
+ Agreement - The text for a package agreement + + **Optional Field** + + This key represents the text or body of a package agreement. +
+ +
+ AgreementUrl - The URL for a package agreement + + **Optional Field** + + This key represents the URL for a package agreement. +
+ +
+ Documentations - List of documentation + + **Optional Field** + + This key holds any documentation for providing software guides such as manuals and troubleshooting URLs. +
+ +
+ DocumentLabel - The documentation label + + **Optional Field** + + This key represents the label for a documentation. +
+ +
+ DocumentUrl - List of documentation + + **Optional Field** + + This key represents the URL for a documentation. +
+ +
+ ReleaseNotes - The Release Notes for a package. + + **Optional Field** + + This key represents release notes for a package. +
+ +
+ ReleaseNotesUrl - The Release Notes web page for a package. + + **Optional Field** + + This key represents release notes web page for a package. +
+ +
+ PurchaseUrl - The Purchase URL for a package. + + **Optional Field** + + This key represents the purchase url for acquiring entitlement for a package. +
+ +
+ InstallationNotes - The Installation Notes for a package. + + **Optional Field** + + This key represents the notes displayed to the user upon completion of a package installation. +
+ +
+ ManifestType - The manifest type + + **Required Field** + + This key must have the value "locale". The Microsoft community package repository validation pipelines also use this value to determine appropriate validation rules when evaluating this file. +
+ +
+ ManifestVersion - The manifest syntax version + + **Required Field** + + This key must have the value "1.9.0". The Microsoft community package repository validation pipelines also use this value to determine appropriate validation rules when evaluating this file. +
diff --git a/doc/manifest/schema/1.9.0/singleton.md b/doc/manifest/schema/1.9.0/singleton.md new file mode 100644 index 0000000000000..cdf0854f4b40f --- /dev/null +++ b/doc/manifest/schema/1.9.0/singleton.md @@ -0,0 +1,969 @@ +[JSON schema]: https://github.com/microsoft/winget-cli/blob/master/schemas/JSON/manifests/v1.9.0/manifest.singleton.1.9.0.json +[semantic version]: https://semver.org +[install]: https://docs.microsoft.com/windows/package-manager/winget/install +[list]: https://docs.microsoft.com/windows/package-manager/winget/list +[upgrade]: https://docs.microsoft.com/windows/package-manager/winget/upgrade +[MSIX]: https://docs.microsoft.com/windows/msix/overview +[MSI]: https://docs.microsoft.com/windows/win32/msi/windows-installer-portal +[Inno]: https://jrsoftware.org/isinfo.php +[Nullsoft]: https://sourceforge.net/projects/nsis +[WiX]: https://wixtoolset.org +[Burn]: https://wixtoolset.org/documentation/manual/v3/bundle +[Windows Package Manager Manifest Creator]: https://github.com/microsoft/winget-create +[App capability declarations]: https://docs.microsoft.com/windows/uwp/packaging/app-capability-declarations + +## Minimal singleton YAML file example +As specified in the singleton [JSON schema], only a number of fields are required. The singleton format is only valid for packages containing a single installer and a single locale. If more than one installer or locale is provided, the multiple YAML file format and schema must be used. + +> [!WARNING] +The singleton manifest format has been deprecated in the Windows Package Manager Community Repository. The Windows Package Manager 1.9 client still supports singleton manifests. + +### Singleton Manifest + +```YAML +PackageIdentifier: # The package unique identifier +PackageVersion: # The package version +Channel: # *Not implemented* distribution channel +PackageLocale: # The package meta-data locale +Publisher: # The publisher name +PackageName: # The package name +License: # The package license +ShortDescription: # The short package description +Description: # Optional full package description +Moniker: # Optional most common package term +Tags: # Optional list of package terms +Agreements: # Optional package agreements + - AgreementLabel: # Optional agreement label + Agreement: # Optional agreement text + AgreementUrl: # Optional agreement URL +Documentations: # Optional documentation + - DocumentLabel: # Optional documentation label + DocumentUrl: # Optional documentation URL +ReleaseDate: # Optional release date +ReleaseNotes: # Optional release notes +ReleaseNotesUrl: # Optional release notes URL +PurchaseUrl: # Optional purchase URL +InstallationNotes: # Optional notes displayed upon installation +Installers: # The package installer + - Architecture: # The architecture of the installer + InstallerLocale: # Optional locale of the installer + Platform: # Optional installer supported operating system + MinimumOSVersion: # Optional installer minimum operating system version + InstallerType: # The installer type + InstallerUrl: # The installer URL + InstallerSha256: # The SHA256 hash of the installer + SignatureSha256: # Optional SHA256 hash of the MSIX signature + NestedInstallerType: # The installer type when InstallerType is an archive type + NestedInstallerFiles: # Details about the installers when InstallerType is an archive type + - RelativeFilePath: # The relative path to the nested installer file + PortableCommandAlias: # The command alias to be used for calling the package. Only applies when NestedInstallerType is 'portable' + Scope: # Optional installer scope + InstallModes: # Optional installer modes + InstallerSwitches: # Optional installer switches + Silent: # Optional installer switches for silent + SilentWithProgress: # Optional installer switches for silent with progress + Interactive: # Optional installer switches for interactive + InstallLocation: # Optional install location path + Log: # Optional installer log file path + Upgrade: # Optional installer switches for upgrade + Custom: # Optional installer switches for custom behavior + Repair: # Optional installer switches to use when repairing the package installation + UpgradeBehavior: # Optional upgrade method + Commands: # Optional commands or aliases to run the package + Protocols: # Optional list of protocols supported by the package + FileExtensions: # Optional list of file extensions supported by the package + Dependencies: # Optional list of dependencies required by the package + - ExternalDependencies: # *Not implemented* list of external dependencies + PackageDependencies: # Optional list of package dependencies + WindowsFeatures: # Optional list of Windows feature dependencies + WindowsLibraries: # *Not implemented* list of Windows library dependencies + PackageFamilyName: # Optional MSIX package family name + Capabilities: # Optional list of MSIX package capabilities + RestrictedCapabilities: # Optional list of MSIX package restricted capabilities + InstallerAbortsTerminal: # Optional indicator for packages that abort terminal + InstallLocationRequired: # Optional indicator for packages that require install location + RequireExplicitUpgrade: # Optional indicator for packages that upgrade themselves + ElevationRequirement: # Scope required to install package + UnsupportedOSArchitectures: # Optional architectures the package is not supported on + Markets: # Optional markets the package is allowed to be installed + ExcludedMarkets: # Optional markets the package is not allowed to be installed + InstallerSuccessCodes: # Optional non-zero installer success codes + ExpectedReturnCodes: # Optional non-zero installer return codes + - InstallerReturnCode: # Optional non-zero installer return code + ReturnResponse: # Optional response for an expected return code + ReturnResponseUrl: # Optional response URL for an expected return code + ProductCode: # Optional product code of the installer + AppsAndFeaturesEntries: # Optional entries from the Add and Remove Programs (ARP) table + - DisplayName: # Optional program name shown in the ARP entry + DisplayVersion: # Optional version displayed in the ARP entry + Publisher: # Optional publisher displayed in the ARP entry + ProductCode: # Optional product code of the installer + UpgradeCode: # Optional upgrade code of the installer + InstallerType: # Optional installer type + UnsupportedArguments: # Optional list of Windows Package Manager Client arguments the installer does not support + - UnsupportedArgument: # Optional unsupported Windows Package Manager Client argument + DisplayInstallWarnings: # *Not implemented* Optional indicator for packages that are known to interfere with running application during install + InstallationMetadata: # Optional metadata for deeper installation detection + - DefaultInstallLocation: # Optional default install location for the package + Files: # Optional list of files installed by the package + - RelativeFilePath: # Optional relative path to the installed file + FileSha256: # Optional Sha256 of the installed file + FileType: # Optional installed file type. Treated as 'other' if not specified + InvocationParameter: # Optional parameter for invocable files + DisplayName: # Optional display name for invocable files + DownloadCommandProhibited: # Optional indicator for packages which cannot be downloaded for offline installation + RepairBehavior: # Optional repair method to use with 'winget repair` + ArchiveBinariesDependOnPath: # Optional indication to add the install location directly to PATH. Only applies to an archive containing portable packages +ManifestType: singleton # The manifest type +ManifestVersion: 1.9.0 # The manifest syntax version +``` + +### [Singleton Minimal Example](#tab/minimal/) + +```YAML +PackageIdentifier: Microsoft.WindowsTerminal +PackageVersion: 1.6.10571.0 +PackageLocale: en-US +Publisher: Microsoft +PackageName: Windows Terminal +License: MIT +ShortDescription: The new Windows Terminal, a tabbed command line experience for Windows. +Installers: + - Architecture: x64 + InstallerType: msix + InstallerUrl: https://github.com/microsoft/terminal/releases/download/v1.6.10571.0/Microsoft.WindowsTerminal_1.6.10571.0_8wekyb3d8bbwe.msixbundle + InstallerSha256: 092aa89b1881e058d31b1a8d88f31bb298b5810afbba25c5cb341cfa4904d843 + SignatureSha256: e53f48473621390c8243ada6345826af7c713cf1f4bbbf0d030599d1e4c175ee +ManifestType: singleton +ManifestVersion: 1.9.0 +``` + +## Fields + +
+ PackageIdentifier - The package unique identifier + + **Required Field** + + This key is the unique identifier for a given package. This value is generally in the form of `Publisher.Package`. It is case sensitive, and this value must match the folder structure under the partition directory in GitHub. +
+ +
+ PackageVersion - The package version + + **Required Field** + + This key represents the version of the package. It is related to the specific release this manifests targets. In some cases you will see a perfectly formed [semantic version] number, and in other cases you might see something different. These may be date driven, or they might have other characters with some package specific meaning for example. + + The Windows Package Manager client uses this version to determine if an upgrade for a package is available. In some cases, packages may be released with a marketing driven version, and that causes trouble with the [`winget upgrade`][upgrade] command. + + NOTE: The current best practice is to use the value reported in Add / Remove Programs when this version of the package is installed. In some cases, packages do not report a version resulting in an upgrade loop or other unwanted behavior. This practice may seem contrary to using semantic versioning, but it provides the best end to end experience for customers. It will take time for publishers and ISVs to migrate to semantic versioning, and some may intentionally choose to preserve other versioning schemes. In these cases, it is best practice to include the "AppsAndFeaturesEntries" section for each installer. +
+ +
+ Channel - The distribution channel + + **Optional Field** + + This key represents the distribution channel for a package. Examples may include "stable" or "beta". + + NOTE: This key is included for future use. The Windows Package Manager currently does not have any behavior associated with this key. The intent behind this key is to help disambiguate the different channels for packages lacking support for side by side installation. Some packages support having more than one package channel available on a system simultaneously; in this case it is better to use unique packages rather than channels. This key is intended to ensure the proper channel for a package is used during install and upgrade scenarios. +
+ +
+ Description - The full package description + + **Optional Field** + + This key represents the full or long description for a package. It is *not* currently used in the Windows Package Manager. + + NOTE: This was included for future integration with the Microsoft Store source to provide the ability to display the full package description. +
+ +
+ Moniker - The most common package term + + **Optional Field** + + This key represents the most common term users would search for when installing or upgrading a package. If only one package uses this moniker, then the [install], [list] and [upgrade] command may match with this package. + + NOTE: Moniker is the third property evaluated when searching for a matching package. +
+ +
+ Tags - List of additional package search terms + + **Optional Field** + + This key represents other common term users would search for when looking for packages. + + NOTE: The best practice is to present these terms in all lower case with hyphens rather than spaces. +
+ +
+ Agreements - List of package agreements + + **Optional Field** + + This key holds any agreements a user must accept prior to download and subsequent install or upgrade. + + IMPORTANT: In the Windows Package Manager Community Repository, these are only allowed to be submitted by verified developers. +
+ +
+ AgreementLabel - The label for a package agreement + + **Optional Field** + + This key represents the label for a package agreement. +
+ +
+ Agreement - The text for a package agreement + + **Optional Field** + + This key represents the text or body of a package agreement. +
+ +
+ AgreementUrl - The URL for a package agreement + + **Optional Field** + + This key represents the URL for a package agreement. +
+ +
+ Documentations - List of documentation + + **Optional Field** + + This key holds any documentation for providing software guides such as manuals and troubleshooting URLs. +
+ +
+ DocumentLabel - The documentation label + + **Optional Field** + + This key represents the label for a documentation. +
+ +
+ DocumentUrl - List of documentation + + **Optional Field** + + This key represents the URL for a documentation. +
+ +
+ ReleaseDate - The Release Date for a package. + + **Optional Field** + + This key represents the release date for a package, in RFC 3339 / ISO 8601 format, i.e. "YYYY-MM-DD". +
+ +
+ ReleaseNotes - The Release Notes for a package. + + **Optional Field** + + This key represents release notes for a package. +
+ +
+ ReleaseNotesUrl - The Release Notes web page for a package. + + **Optional Field** + + This key represents release notes web page for a package. +
+ +
+ PurchaseUrl - The Purchase URL for a package. + + **Optional Field** + + This key represents the purchase url for acquiring entitlement for a package. +
+ +
+ InstallationNotes - The Installation Notes for a package. + + **Optional Field** + + This key represents the notes displayed to the user upon completion of a package installation. +
+ +
+ Installers - Package installer + + **Required Field** + + The key represents an installer for a package. + + IMPORTANT: Many of the keys related to installers may either be at the root level of the manifest, or included in an installer. Any values provided at the root level and not specified in an installer will be inherited. +
+ +
+ Architecture - The installer target architecture + + **Required Field** + + This key represents the hardware architecture targeted by the installer. The Windows Package Manager will attempt to determine the best architecture to use. If emulation is available and the native hardware architecture does not have a supported installer, the emulated architecture may be used. +
+ +
+ InstallerLocale - Locale for package installer + + **Optional Field** + + This key represents the locale for an installer *not* the package meta-data. Some installers are compiled with locale or language specific properties. If this key is present, it is used to represent the package locale for an installer. + + NOTE: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply. + +
+ +
+ Platform - The installer supported operating system + + **Optional Field** + + This key represents the Windows platform targeted by the installer. The Windows Package Manager currently supports "Windows.Desktop" and "Windows.Universal". The Windows Package Manager client currently has no behavior associated with this property. It was added for future looking scenarios. + + NOTE: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply. +
+ +
+ MinimumOSVersion - The installer minimum operating system version + + **Optional Field** + + This key represents the minimum version of the Windows operating system supported by the package. + + NOTE: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply. +
+ +
+ InstallerType - Enumeration of supported installer types. + + **Required Field** + + This key represents the installer type for the package. The Windows Package Manager supports [MSIX], [MSI], and executable installers. Some well known formats ([Inno], [Nullsoft], [WiX], and [Burn]) provide standard sets of installer switches to provide different installer experiences. Portable packages are supported as of Windows Package Manager 1.3. Zip packages are supported as of Windows Package Manager 1.5. + + IMPORTANT: The Windows Package Manager does not support loose executables with the .exe or .com file extension directly. Progressive Web Applications (PWAs) and fonts are also not supported. + + NOTE: The Windows Package Manager defaults to the install mode providing install progress. A best practice is to determine if one of the supported installer technologies was used to build an installer with the .exe file extension. The [Windows Package Manager Manifest Creator] tool can be used to determine if one of the known tools was used to build an installer with the .exe file extension. + + NOTE: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply. +
+ +
+ InstallerUrl - The installer Url + + **Required Field** + + This key represents the URL to download the installer. +
+ +
+ InstallerSha256 - Sha256 is required. Sha256 of the installer + + **Required Field** + + This key represents the SHA 256 hash for the installer. It is used to confirm the installer has not been modified. The Windows Package Manager will compare the hash in the manifest with the calculated hash of the installer after it has been downloaded. + + NOTE: The [Windows Package Manager Manifest Creator] can be used to determine the SHA 256 of the installer. The `winget hash <pathToInstaller>` command can also be used to determine the SHA 256 of the installer. +
+ +
+ SignatureSha256 - SignatureSha256 is recommended for appx or msix. It is the sha256 of the signature file inside the appx or msix. Could be used during streaming install if applicable. + + **Optional Field** + + This key represents the signature file (AppxSignature.p7x) inside an MSIX installer. It is used to provide streaming install for MSIX packages. + + IMPORTANT: MSIX installers must be signed to be included in the Microsoft community package repository. If the installer is an MSIX this signature should be included in the manifest. The [Windows Package Manager Manifest Creator] can be used to determine the signature SHA 256. The `winget hash --msix` command can also be used to determine the signature SHA 256. +
+ +
+ NestedInstallerType - NestedInstallerType is required when InstallerType is an archive type such as '.zip' + + **Required Field** + + This key represents the installer type of the file within the archive which will be used as the installer. +
+ +
+ NestedInstallerFiles - NestedInstallerFiles is required when InstallerType is an archive type such as '.zip' + + **Required Field** + + This key is a list of all the installers to be executed within an archive. + + > Note: This field can only contain one nested installer file unless the NestedInstallerType is 'portable' +
+ +
+ RelativeFilePath - RelativeFilePath is required within NestedInstallerFiles + + **Required Field** + + The relative path to the installer file contained within the archive. +
+ +
+ PortableCommandAlias - The command alias to be used for calling the package + + **Required Field** + + The alias which is added to the PATH for calling the package from the command line. + + > Note: This field is only valid when NestedInstallerType is 'portable' +
+ +
+ Scope - Scope indicates if the installer is per user or per machine + + **Optional Field** + + This key represents the scope the package is installed under. The two configurations are "user" and "machine". Some installers support only one of these scopes while others support both via arguments passed to the installer using "InstallerSwitches". + + NOTE: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply. +
+ +
+ InstallModes - List of supported installer modes + + **Optional Field** + + This key represents the install modes supported by the installer. The Microsoft community package repository requires a package support "silent" and "silent with progress". The Windows Package Manager also supports "interactive" installers. The Windows Package Manager client does not have any behavior associated with this key. + + IMPORTANT: Some installers will attempt to install missing dependencies. If these dependencies require user interaction, the package will not be allowed into the Microsoft community package repository. + + NOTE: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply. +
+ +
+ InstallerSwitches - Switches passed to installers + + **Optional Field** + + This key represents the set of switches passed to installers. + + IMPORTANT: The Microsoft community repository currently requires support for silent and silent with progress installation. Many custom .exe installers will require the proper switches to meet this requirement. The [Windows Package Manager Manifest Creator] tool can be used to determine if one of the known tools was used to build an installer with the .exe file extension. In the event the tool is unable to determine the tool used to build the installer, the publisher may have documentation for the proper switches. +
+ +
+ Silent - Silent is the value that should be passed to the installer when user chooses a silent or quiet install + + **Optional Field** + + This key represents switches passed to the installer to provide a silent install experience. These would be used when the command `winget install --silent` is executed. + + NOTE: When the Windows Package Manager installs a package using the "silent" install mode, any custom switches will also be passed to the installer. If a user applies override switches via command line via the Windows Package Manager, none of the switches from the manifest will be passed to the installer. + + NOTE: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply. +
+ +
+ SilentWithProgress - SilentWithProgress is the value that should be passed to the installer when user chooses a non-interactive install + + **Optional Field** + + This key represents switches passed to the installer to provide a silent with progress install experience. This is intended to allow a progress indication to the user, and the indication may come from an installer UI dialogue, but it must not require user interaction to complete. The Windows Package Manager currently defaults to this install experience. + + NOTE: When the Windows Package Manager installs a package using the "silent with progress" install mode, any custom switches will also be passed to the installer. If a user applies override switches via command line via the Windows Package Manager, none of the switches from the manifest will be passed to the installer. +
+ +
+ Interactive - Interactive is the value that should be passed to the installer when user chooses an interactive install + + **Optional Field** + + This key represents switches passed to the installer to provide an interactive install experience. This is intended to allow a user to interact with the installer. These would be used when the command `winget install --interactive` is executed. + + NOTE: When the Windows Package Manager installs a package using the "interactive" install mode, any custom switches will also be passed to the installer. If a user applies override switches via command line via the Windows Package Manager, none of the switches from the manifest will be passed to the installer. +
+ +
+ InstallLocation - InstallLocation is the value passed to the installer for custom install location. + + **Optional Field** + + This key represents the path to install the package if the installer supports installing the package in a user configurable location. The **<INSTALLPATH>** token can be included in the switch value so the Windows Package Manager will replace the token with the user provided path. +
+ +
+ Log - Log is the value passed to the installer for custom log file path. + + **Optional Field** + + This key represents the path logs will be directed to if the installer supports specifying the log path in a user configurable location. The **<LOGPATH>** token can be included in the switch value so the Windows Package Manager will replace the token with the user provided path. +
+ +
+ Upgrade - Upgrade is the value that should be passed to the installer when user chooses an upgrade. + + **Optional Field** + + This key represents the switches to be passed to the installer during an upgrade. This will happen only if the upgrade behavior is "install". + + NOTE: If a user applies override switches via command line via the Windows Package Manager, none of the switches from the manifest will be passed to the installer. +
+ +
+ Custom - Custom switches will be passed directly to the installer by the Windows Package Manager. + + **Optional Field** + + This key represents any switches the Windows Package Manager will pass to the installer in addition to "Silent", "SilentWithProgress", and "Interactive". + + NOTE: If a user applies override switches via command line via the Windows Package Manager, none of the switches from the manifest will be passed to the installer. +
+ +
+ Repair - Repair is the value that should be passed to the installer when a user chooses to repair an existing installation + + **Optional Field** + + This key represents the switches to be passed during the repair of an existing installation. This will be passed to the installer, ModifyPath ARP command, or Uninstaller ARP command depending on the RepairBehavior specified in the manifest. + + NOTE: If a user applies override switches via command line via the Windows Package Manager, none of the switches from the manifest will be passed to the installer. +
+ +
+ UpgradeBehavior - The upgrade method + + **Optional Field** + + This key represents what the Windows Package Manager should do regarding the currently installed package during a package upgrade. If the package should be uninstalled first, the "uninstallPrevious" value should be specified. If the package should not be upgraded through WinGet, the "deny" value should be specified. + + NOTE: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply. +
+ +
+ Commands - List of commands or aliases to run the package + + **Optional Field** + + This key represents any commands or aliases used to execute the package after it has been installed. + + IMPORTANT: The Windows Package Manager does not update the path during the install workflow. In those cases, the user may need to restart their shell or terminal before the command will execute the newly installed package. The Windows Package Manager does not support any behavior related to commands or aliases. + + NOTE: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply. +
+ +
+ Protocols - List of protocols the package provides a handler for + + **Optional Field** + + This key represents any protocols supported by the package. The Windows Package Manager does not support any behavior related to protocols handled by a package. + + NOTE: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply. +
+ +
+ FileExtensions - List of file extensions the package could support + + **Optional Field** + + This key represents any file extensions supported by the package. The Windows Package Manager does not support any behavior related to the file extensions supported by the package. + + NOTE: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply. +
+ +
+ Dependencies - List of dependencies needed to install or execute the package + + **Optional Field** + + This key represents any dependencies required to install or run the package. + + IMPORTANT: The Windows Package Manager does not support any behavior related to dependencies. + + NOTE: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply. +
+ +
+ ExternalDependencies - List of external package dependencies + + **Optional Field** + + This key represents any external dependencies required to install or run the package. + + IMPORTANT: The Windows Package Manager does not support any behavior related to dependencies. +
+ +
+ PackageDependencies - List of package dependencies from current source + + **Optional Field** + + This key represents any packages from the same source required to install or run the package. + + IMPORTANT: The Windows Package Manager does not support any behavior related to dependencies. +
+ +
+ WindowsFeatures - List of Windows feature dependencies + + **Optional Field** + + This key represents any Windows features required to install or run the package. + + IMPORTANT: The Windows Package Manager does not support any behavior related to dependencies. +
+ +
+ WindowsLibraries - List of Windows library dependencies + + **Optional Field** + + This key represents any Windows libraries required to install or run the package. + + IMPORTANT: The Windows Package Manager does not support any behavior related to dependencies. +
+ +
+ PackageFamilyName - PackageFamilyName for appx or msix installer. Could be used for correlation of packages across sources + + **Optional Field** + + This key represents the package family name specified in an MSIX installer. This value is used to assist with matching packages from a source to the program installed in Windows via Add / Remove Programs for list, and upgrade behavior. + + NOTE: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply. +
+ +
+ Capabilities - List of appx or msix installer capabilities + + **Optional Field** + + This key represents the capabilities provided by an MSIX package. More information is available for [App capability declarations] + + NOTE: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply. +
+ +
+ RestrictedCapabilities - List of appx or msix installer restricted capabilities + + **Optional Field** + + This key represents the restricted capabilities provided by an MSIX package.More information is available for [App capability declarations] + + NOTE: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply. +
+ +
+ InstallerAbortsTerminal - Indicator for installers that abort the terminal. + + **Optional Field** + + This key represents the behavior associated with installers that abort the terminal. This most often occurs when a user is performing an upgrade of the running terminal. + + NOTE: Windows Terminal no longer causes this to occur as the MSIX install behavior from the Windows Package Manager is deferred registration. +
+ +
+ InstallLocationRequired - Indicator for packages requiring an install location to be specified. + + **Optional Field** + + This key represents the requirement to have an install location specified. These installers are known to deploy files to the location the installer is executed in. +
+ +
+ RequireExplicitUpgrade - Indicator for packages that upgrade themselves. + + **Optional Field** + + This key identifies packages that upgrade themselves. By default, they are excluded from `winget upgrade --all`. +
+ +
+ ElevationRequirement - Indicator for elevation requirements when installing or upgrading packages. + + **Optional Field** + + This key represents which scope a package is required to be executed under. Some packages require user level execution while others require administrative level execution. +
+ +
+ UnsupportedOSArchitectures - List of unsupported architectures for a package. + + **Optional Field** + + This key represents any architectures a package is known not to be compatible with. Generally, this is associated with emulation modes. +
+ +
+ Markets - List of supported markets for a package. + + **Optional Field** + + This key represents any markets a package may be installed in. + + IMPORTANT: If a market is listed in both this key and the ExcludedMarkets key, the market will be excluded. Both keys are present to reduce the need to list the larger set of markets. +
+ +
+ ExcludedMarkets - List of unsupported markets for a package. + + **Optional Field** + + This key represents any markets a package may not be installed in. + + IMPORTANT: If a market is listed in both this key and the Markets key, the market will be excluded. Both keys are present to reduce the need to list the larger set of markets. +
+ +
+ InstallerSuccessCodes - List of additional non-zero installer success exit codes other than known default values by the Windows Package Manager. + + **Optional Field** + + This key represents any status codes returned by the installer representing a success condition other than zero. + + IMPORTANT: Some return codes indicate a reboot is suggested or required. The Windows Package Manager does not support the reboot behavior currently. Some installers will force a reboot, and the Windows Package Manager does not currently suppress reboot behavior. + + NOTE: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply. +
+ +
+ ExpectedReturnCodes - List of additional non-zero installer exit codes other than known default values by the Windows Package Manager. + + **Optional Field** + + This key represents any status codes returned by the installer representing a condition other than zero. + + IMPORTANT: Some return codes indicate a reboot is suggested or required. The Windows Package Manager does not support the reboot behavior currently. Some installers will force a reboot, and the Windows Package Manager does not currently suppress reboot behavior. + + NOTE: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply. +
+ +
+ InstallerReturnCode - The non-zero installer exit code other than known default values by the Windows Package Manager. + + **Optional Field** + + This key represents any status code returned by the installer representing a condition other than zero. MSIX and MSI packages have well known return codes. This is primarily intended for executable installers that have custom or unique return coes that can be mapped to a return response. +
+ +
+ ReturnResponse - The return response to be displayed in the event an expected return code is encountered. + + **Optional Field** + + This key represents a return response to display when an installer returns an expected return code. MSIX and MSI packages have well known return codes. This is primarily intended for executable installers that have custom or unique return coes that can be mapped to a return response. + + NOTE: An enumerated list of values in the JSON schema must be specified for consistency of user experience. +
+ +
+ ReturnResponseUrl - The return response URL to be displayed in the event an expected return code is encountered. + + **Optional Field** + + This key represents a return response URL to display when an installer returns an expected return code. MSIX and MSI packages have well known return codes. This is primarily intended for executable installers that have custom or unique return codes that can be mapped to a return response. + + NOTE: An enumerated list of values in the JSON schema must be specified for consistency of user experience. +
+ +
+ ProductCode - ProductCode is used for correlation of packages with manifests in configured sources. + + **Optional Field** + + This key represents the product code specified in an MSI installer. This value is used to assist with matching packages from a source to the program installed in Windows via Add / Remove Programs for list, and upgrade behavior. + + NOTE: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply. +
+ +
+ AppsAndFeaturesEntries - AppsAndFeaturesEntries are used to match installed packages with manifests in configured sources. + + **Optional Field** + + This key represents the values reported by Windows Apps & Features. When a package is installed, entries are made into the Windows Registry. +
+ +
+ DisplayName - DisplayName is what is displayed in the Control Panel for installed packages. + + **Optional Field** + + This key represents the package name as displayed in Windows Apps & Features. It is used to help correlate installed packages with manifests in configured sources. +
+ +
+ DisplayVersion - DisplayVersion is the version displayed in the Control Panel for installed packages. + + **Optional Field** + + This key represents the package version as displayed in Windows Apps & Features. It is used to help correlate installed packages with manifests in configured sources. + + > Note: When the PackageVersion and DisplayVersion are the same, the DisplayVersion should be omitted from the AppsAndFeaturesEntries +
+ +
+ Publisher - Publisher is the value of the package publisher reported in the Windows registry. + + **Optional Field** + + This key represents the Publisher reported in the Windows registry. It is used to help correlate installed packages with manifests in configured sources. +
+ +
+ ProductCode - ProductCode is used for correlation of packages with manifests in configured sources. + + **Optional Field** + + This key represents the product code for a package. It is used to help correlate installed packages with manifests in configured sources. + + NOTE: This key is displayed twice for completeness. When AppsAndFeaturesEntries are specified, the ProductCode should be placed both within the installer and the AppsAndFeaturesEntries +
+ +
+ UpgradeCode - UpgradeCode is used for correlation of packages with manifests in configured sources. + + **Optional Field** + + This key represents the upgrade code for a package. It is used to help correlate installed packages with manifests in configured sources. +
+ +
+ InstallerType - Enumeration of supported installer types. + + **Optional Field** + + This key represents the installer type for the package. It is used to help correlate installed packages with manifests in configured sources. In some cases, an installer is an .exe based installer, but contains an MSI installer. This key will help the Windows Package Manager understand if upgrading an MSI should be performed when it is contained in an .exe installer. + + NOTE: This key is displayed twice for completeness. When AppsAndFeaturesEntries are specified, the InstallerType should be placed within the installer only, unless the AppsAndFeaturesEntries represent a different InstallerType +
+ +
+ UnsupportedArguments - List of unsupported Windows Package Manager Client arguments for an installer. + + **Optional Field** + + This key represents the list of Windows Package Manager Client arguments the installer does not support. Only the `--log` and `--location` arguments can be specified as unsupported arguments for an installer. + +
+ +
+ DisplayInstallWarnings - Indicator for displaying a warning message prior to install or upgrade. + + **Optional Field** + +This key represents whether a warning message is displayed to the user prior to install or upgrade if the package is known to interfere with any running applications. + +NOTE: The DisplayInstallWarnings behavior is not implemented in the Windows Package Manager 1.9 client. +
+ +
+ InstallationMetadata - Details about the installation. + + **Optional Field** + + This key allows for additional metadata to be used for deeper installation detection. +
+ +
+ DefaultInstallLocation - The default installed package location. + + **Optional Field** + + This key represents the default install location for the package. +
+ +
+ Files - The list of installed files. + + **Optional Field** + + This key represents the files installed for the package. +
+ +
+ RelativeFilePath - The relative path to the installed file. + + **Optional Field** + + This key represents the path to the installed file relative to the default install location. +
+ +
+ FileSha256 - The optional Sha256 of the installed file. + + **Optional Field** + + This key represents the Sha256 hash of the installed file. +
+ +
+ FileType - The optional installed file type. + + **Optional Field** + + This key represents the type of the installed file - `launch`, `uninstall`, or `other`. If not specified, the file is treated as `other`. +
+ +
+ InvocationParameter - Optional parameter for invocable files. + + **Optional Field** + + This key represents the parameter to use for invocable files. +
+ +
+ DisplayName - Optional display name for invocable files + + **Optional Field** + + This key represents the display name to use for invocable files. +
+ +
+ DownloadCommandProhibited - Optional indicator for packages which cannot be downloaded for offline installation + + **Optional Field** + + When `true`, this flag will prohibit the manifest from being downloaded for offline installation with the `winget download` command +
+ +
+ RepairBehavior - Optional repair method to use with 'winget repair` + + **Optional Field** + + This field controls what method is used to repair existing installations of packages. Specifying `modify` will use the ModifyPath string from the package's ARP data, `uninstaller` will use the Uninstall string from the package's ARP data, and `installer` will download and run the installer. In each case, the `Repair` value from `InstallerSwitches` will be added as an argument when invoking the command to repair the package. +
+ +
+ ArchiveBinariesDependOnPath - Optional indication to add the install location directly to PATH. Only applies to an archive containing portable packages + + **Optional Field** + + This field controls the behavior of environment variables when installing portable packages from an archive (i.e `zip`). Specifying `true` will add the install location directly to the `PATH` environment variable. Specifying `false` or leaving the value unset will use the default behavior of adding a symlink to the `links` folder, if supported, or adding the install location directly to `PATH` if symlinks are not supported. +
+ +
+ ManifestType - The manifest type + + **Required Field** + + This key must have the value "installer". The Microsoft community package repository validation pipelines also use this value to determine appropriate validation rules when evaluating this file. +
+ +
+ ManifestVersion - The manifest syntax version + + **Required Field** + + This key must have the value "1.9.0". The Microsoft community package repository validation pipelines also use this value to determine appropriate validation rules when evaluating this file. +
diff --git a/doc/manifest/schema/1.9.0/version.md b/doc/manifest/schema/1.9.0/version.md new file mode 100644 index 0000000000000..4b0c514a1340f --- /dev/null +++ b/doc/manifest/schema/1.9.0/version.md @@ -0,0 +1,71 @@ +[JSON schema]: https://github.com/microsoft/winget-cli/blob/master/schemas/JSON/manifests/v1.9.0/manifest.version.1.9.0.json +[YAML]: https://yaml.org/spec +[semantic version]: https://semver.org + +# Windows Package Manager +## Manifest Schema v1.9.0 Version File + +All Windows Package Manager manifests in the Microsoft community repository are submitted using [YAML] syntax. A [JSON schema] is provided to aid authoring these files in editors, and in the other tooling related to the Windows Package Manager. This document provides detailed information regarding the usage of the YAML keys in the version file for multi-file manifests. + +### Version Manifest + +```YAML +PackageIdentifier: # The package unique identifier +PackageVersion: # The package version +DefaultLocale: # The default package meta-data locale +ManifestType: version # The manifest type +ManifestVersion: 1.9.0 # The manifest syntax version +``` + +## Fields + +
+ PackageIdentifier - The package unique identifier + + **Required Field** + + This key is the unique identifier for a given package. + + **Windows Package Manager Community Repository** + + This value is generally in the form of `Publisher.Package`. It is case sensitive, and this value must match the folder structure under the partition directory. +
+ +
+ PackageVersion - The package version + + **Required Field** + + This key represents the version of the package. It is related to the specific release this manifests targets. In some cases you will see a perfectly formed [semantic version] number, and in other cases you might see something different. These may be date driven, or they might have other characters with some package specific meaning for example. + + The Windows Package Manager client uses this version to determine whether or not an upgrade for a package is available. In some cases, packages may be released with a marketing driven version, and that causes trouble with the `winget upgrade` command. + + The current best practice is to use the value reported in Add / Remove Programs when this version of the package is installed. In some cases, packages do not report a version resulting in an upgrade loop or other unwanted behavior. +
+ +
+ DefaultLocale - The default package meta-data locale + + **Required Field** + + This key represents the default locale for package meta-data. The format is BCP-47. This value identifies the language for meta-data to be displayed to a user when no locale file matching their preferences is available. + + **Windows Package Manager Community Repository** + + The validation pipelines use this value to ensure the corresponding locale file is present and conforms with the defaultLocale YAML specification. +
+ +
+ ManifestType - The manifest type + + **Required Field** + + This key must have the value "version". The Microsoft community package repository validation pipelines also use this value to determine appropriate validation rules when evaluating this file. +
+ +
+ ManifestVersion - The manifest syntax version + + **Required Field** + This key must have the value "1.9.0". The Microsoft community package repository validation pipelines also use this value to determine appropriate validation rules when evaluating this file. +