commit c46f651326df41d745816688ff98e072be20eb2d parent 2dfe512566e3b93772eca768a79f537310c2355b Author: yao-msft <50888816+yao-msft@users.noreply.github.com> Date: Tue, 16 Aug 2022 15:39:43 -0700 Bump manifest schema version to 1.4 (#2451) Diffstat:
45 files changed, 2840 insertions(+), 2840 deletions(-)
diff --git a/schemas/JSON/manifests/v1.3.0/manifest.defaultLocale.1.3.0.json b/schemas/JSON/manifests/v1.3.0/manifest.defaultLocale.1.3.0.json @@ -1,213 +0,0 @@ -{ - "$id": "https://aka.ms/winget-manifest.defaultlocale.1.3.0.schema.json", - "$schema": "http://json-schema.org/draft-07/schema#", - "description": "A representation of a multiple-file manifest representing a default app metadata in the OWC. v1.3.0", - "definitions": { - "Url": { - "type": [ "string", "null" ], - "pattern": "^([Hh][Tt][Tt][Pp][Ss]?)://.+$", - "maxLength": 2048, - "description": "Optional Url type" - }, - "Tag": { - "type": [ "string", "null" ], - "minLength": 1, - "maxLength": 40, - "description": "Package moniker or tag" - }, - "Agreement": { - "type": "object", - "properties": { - "AgreementLabel": { - "type": [ "string", "null" ], - "minLength": 1, - "maxLength": 100, - "description": "The label of the Agreement. i.e. EULA, AgeRating, etc. This field should be localized. Either Agreement or AgreementUrl is required. When we show the agreements, we would Bold the AgreementLabel" - }, - "Agreement": { - "type": [ "string", "null" ], - "minLength": 1, - "maxLength": 10000, - "description": "The agreement text content." - }, - "AgreementUrl": { - "$ref": "#/definitions/Url", - "description": "The agreement URL." - } - } - }, - "Documentation": { - "type": "object", - "properties": { - "DocumentLabel": { - "type": [ "string", "null" ], - "minLength": 1, - "maxLength": 100, - "description": "The label of the documentation for providing software guides such as manuals and troubleshooting URLs." - }, - "DocumentUrl": { - "$ref": "#/definitions/Url", - "description": "The documentation URL." - } - } - } - }, - "type": "object", - "properties": { - "PackageIdentifier": { - "type": "string", - "pattern": "^[^\\.\\s\\\\/:\\*\\?\"<>\\|\\x01-\\x1f]{1,32}(\\.[^\\.\\s\\\\/:\\*\\?\"<>\\|\\x01-\\x1f]{1,32}){1,3}$", - "maxLength": 128, - "description": "The package unique identifier" - }, - "PackageVersion": { - "type": "string", - "pattern": "^[^\\\\/:\\*\\?\"<>\\|\\x01-\\x1f]+$", - "maxLength": 128, - "description": "The package version" - }, - "PackageLocale": { - "type": "string", - "default": "en-US", - "pattern": "^([a-zA-Z]{2,3}|[iI]-[a-zA-Z]+|[xX]-[a-zA-Z]{1,8})(-[a-zA-Z]{1,8})*$", - "maxLength": 20, - "description": "The package meta-data locale" - }, - "Publisher": { - "type": "string", - "minLength": 2, - "maxLength": 256, - "description": "The publisher name" - }, - "PublisherUrl": { - "$ref": "#/definitions/Url", - "description": "The publisher home page" - }, - "PublisherSupportUrl": { - "$ref": "#/definitions/Url", - "description": "The publisher support page" - }, - "PrivacyUrl": { - "$ref": "#/definitions/Url", - "description": "The publisher privacy page or the package privacy page" - }, - "Author": { - "type": [ "string", "null" ], - "minLength": 2, - "maxLength": 256, - "description": "The package author" - }, - "PackageName": { - "type": "string", - "minLength": 2, - "maxLength": 256, - "description": "The package name" - }, - "PackageUrl": { - "$ref": "#/definitions/Url", - "description": "The package home page" - }, - "License": { - "type": "string", - "minLength": 3, - "maxLength": 512, - "description": "The package license" - }, - "LicenseUrl": { - "$ref": "#/definitions/Url", - "description": "The license page" - }, - "Copyright": { - "type": [ "string", "null" ], - "minLength": 3, - "maxLength": 512, - "description": "The package copyright" - }, - "CopyrightUrl": { - "$ref": "#/definitions/Url", - "description": "The package copyright page" - }, - "ShortDescription": { - "type": "string", - "minLength": 3, - "maxLength": 256, - "description": "The short package description" - }, - "Description": { - "type": [ "string", "null" ], - "minLength": 3, - "maxLength": 10000, - "description": "The full package description" - }, - "Moniker": { - "$ref": "#/definitions/Tag", - "description": "The most common package term" - }, - "Tags": { - "type": [ "array", "null" ], - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 16, - "uniqueItems": true, - "description": "List of additional package search terms" - }, - "Agreements": { - "type": [ "array", "null" ], - "items": { - "$ref": "#/definitions/Agreement" - }, - "maxItems": 128 - }, - "ReleaseNotes": { - "type": [ "string", "null" ], - "minLength": 1, - "maxLength": 10000, - "description": "The package release notes" - }, - "ReleaseNotesUrl": { - "$ref": "#/definitions/Url", - "description": "The package release notes url" - }, - "PurchaseUrl": { - "$ref": "#/definitions/Url", - "description": "The purchase url for acquiring entitlement for the package." - }, - "InstallationNotes": { - "type": [ "string", "null" ], - "minLength": 1, - "maxLength": 256, - "description": "The notes displayed to the user upon completion of a package installation." - }, - "Documentations": { - "type": [ "array", "null" ], - "items": { - "$ref": "#/definitions/Documentation" - }, - "maxItems": 256 - }, - "ManifestType": { - "type": "string", - "default": "defaultLocale", - "const": "defaultLocale", - "description": "The manifest type" - }, - "ManifestVersion": { - "type": "string", - "default": "1.3.0", - "pattern": "^(0|[1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])(\\.(0|[1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])){2}$", - "description": "The manifest syntax version" - } - }, - "required": [ - "PackageIdentifier", - "PackageVersion", - "PackageLocale", - "Publisher", - "PackageName", - "License", - "ShortDescription", - "ManifestType", - "ManifestVersion" - ] -}- \ No newline at end of file diff --git a/schemas/JSON/manifests/v1.3.0/manifest.installer.1.3.0.json b/schemas/JSON/manifests/v1.3.0/manifest.installer.1.3.0.json @@ -1,831 +0,0 @@ -{ - "$id": "https://aka.ms/winget-manifest.installer.1.3.0.schema.json", - "$schema": "http://json-schema.org/draft-07/schema#", - "description": "A representation of a single-file manifest representing an app installers in the OWC. v1.3.0", - "definitions": { - "PackageIdentifier": { - "type": "string", - "pattern": "^[^\\.\\s\\\\/:\\*\\?\"<>\\|\\x01-\\x1f]{1,32}(\\.[^\\.\\s\\\\/:\\*\\?\"<>\\|\\x01-\\x1f]{1,32}){1,3}$", - "maxLength": 128, - "description": "The package unique identifier" - }, - "PackageVersion": { - "type": "string", - "pattern": "^[^\\\\/:\\*\\?\"<>\\|\\x01-\\x1f]+$", - "maxLength": 128, - "description": "The package version" - }, - "Locale": { - "type": [ "string", "null" ], - "pattern": "^([a-zA-Z]{2,3}|[iI]-[a-zA-Z]+|[xX]-[a-zA-Z]{1,8})(-[a-zA-Z]{1,8})*$", - "maxLength": 20, - "description": "The installer meta-data locale" - }, - "Channel": { - "type": [ "string", "null" ], - "minLength": 1, - "maxLength": 16, - "description": "The distribution channel" - }, - "Platform": { - "type": [ "array", "null" ], - "items": { - "title": "Platform", - "type": "string", - "enum": [ - "Windows.Desktop", - "Windows.Universal" - ] - }, - "maxItems": 2, - "uniqueItems": true, - "description": "The installer supported operating system" - }, - "MinimumOSVersion": { - "type": [ "string", "null" ], - "pattern": "^(0|[1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])(\\.(0|[1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])){0,3}$", - "description": "The installer minimum operating system version" - }, - "Url": { - "type": [ "string", "null" ], - "pattern": "^([Hh][Tt][Tt][Pp][Ss]?)://.+$", - "maxLength": 2048, - "description": "Url type" - }, - "InstallerType": { - "type": [ "string", "null" ], - "enum": [ - "msix", - "msi", - "appx", - "exe", - "zip", - "inno", - "nullsoft", - "wix", - "burn", - "pwa", - "portable" - ], - "description": "Enumeration of supported installer types. InstallerType is required in either root level or individual Installer level" - }, - "NestedInstallerType": { - "type": [ "string", "null" ], - "enum": [ - "msix", - "msi", - "appx", - "exe", - "inno", - "nullsoft", - "wix", - "burn", - "portable" - ], - "description": "Enumeration of supported nested installer types contained inside an archive file" - }, - "NestedInstallerFiles": { - "type": [ "array", "null" ], - "items": { - "type": "object", - "title": "NestedInstallerFile", - "properties": { - "RelativeFilePath": { - "type": "string", - "minLength": 1, - "maxLength": 512, - "description": "The relative path to the nested installer file" - }, - "PortableCommandAlias": { - "type": [ "string", "null" ], - "minLength": 1, - "maxLength": 40, - "description": "The command alias to be used for calling the package. Only applies to the nested portable package" - } - }, - "required": [ "RelativeFilePath" ], - "description": "A nested installer file contained inside an archive" - }, - "maxItems": 1024, - "description": "List of nested installer files contained inside an archive" - }, - "Architecture": { - "type": "string", - "enum": [ - "x86", - "x64", - "arm", - "arm64", - "neutral" - ], - "description": "The installer target architecture" - }, - "Scope": { - "type": [ "string", "null" ], - "enum": [ - "user", - "machine" - ], - "description": "Scope indicates if the installer is per user or per machine" - }, - "InstallModes": { - "type": [ "array", "null" ], - "items": { - "title": "InstallModes", - "type": "string", - "enum": [ - "interactive", - "silent", - "silentWithProgress" - ] - }, - "maxItems": 3, - "uniqueItems": true, - "description": "List of supported installer modes" - }, - "InstallerSwitches": { - "type": "object", - "properties": { - "Silent": { - "type": [ "string", "null" ], - "minLength": 1, - "maxLength": 512, - "description": "Silent is the value that should be passed to the installer when user chooses a silent or quiet install" - }, - "SilentWithProgress": { - "type": [ "string", "null" ], - "minLength": 1, - "maxLength": 512, - "description": "SilentWithProgress is the value that should be passed to the installer when user chooses a non-interactive install" - }, - "Interactive": { - "type": [ "string", "null" ], - "minLength": 1, - "maxLength": 512, - "description": "Interactive is the value that should be passed to the installer when user chooses an interactive install" - }, - "InstallLocation": { - "type": [ "string", "null" ], - "minLength": 1, - "maxLength": 512, - "description": "InstallLocation is the value passed to the installer for custom install location. <INSTALLPATH> token can be included in the switch value so that winget will replace the token with user provided path" - }, - "Log": { - "type": [ "string", "null" ], - "minLength": 1, - "maxLength": 512, - "description": "Log is the value passed to the installer for custom log file path. <LOGPATH> token can be included in the switch value so that winget will replace the token with user provided path" - }, - "Upgrade": { - "type": [ "string", "null" ], - "minLength": 1, - "maxLength": 512, - "description": "Upgrade is the value that should be passed to the installer when user chooses an upgrade" - }, - "Custom": { - "type": [ "string", "null" ], - "minLength": 1, - "maxLength": 2048, - "description": "Custom switches will be passed directly to the installer by winget" - } - } - }, - "InstallerReturnCode": { - "type": "integer", - "format": "long", - "not": { - "enum": [ 0 ] - }, - "minimum": -2147483648, - "maximum": 4294967295, - "description": "An exit code that can be returned by the installer after execution" - }, - "InstallerSuccessCodes": { - "type": [ "array", "null" ], - "items": { - "$ref": "#/definitions/InstallerReturnCode" - }, - "maxItems": 16, - "uniqueItems": true, - "description": "List of additional non-zero installer success exit codes other than known default values by winget" - }, - "ExpectedReturnCodes": { - "type": [ "array", "null" ], - "items": { - "type": "object", - "title": "ExpectedReturnCode", - "properties": { - "InstallerReturnCode": { - "$ref": "#/definitions/InstallerReturnCode" - }, - "ReturnResponse": { - "type": "string", - "enum": [ - "packageInUse", - "installInProgress", - "fileInUse", - "missingDependency", - "diskFull", - "insufficientMemory", - "noNetwork", - "contactSupport", - "rebootRequiredToFinish", - "rebootRequiredForInstall", - "rebootInitiated", - "cancelledByUser", - "alreadyInstalled", - "downgrade", - "blockedByPolicy", - "custom" - ] - }, - "ReturnResponseUrl": { - "$ref": "#/definitions/Url", - "description": "The return response url to provide additional guidance for expected return codes" - } - } - }, - "maxItems": 128, - "description": "Installer exit codes for common errors" - }, - "UpgradeBehavior": { - "type": [ "string", "null" ], - "enum": [ - "install", - "uninstallPrevious" - ], - "description": "The upgrade method" - }, - "Commands": { - "type": [ "array", "null" ], - "items": { - "type": "string", - "minLength": 1, - "maxLength": 40 - }, - "maxItems": 16, - "uniqueItems": true, - "description": "List of commands or aliases to run the package" - }, - "Protocols": { - "type": [ "array", "null" ], - "items": { - "type": "string", - "maxLength": 2048 - }, - "maxItems": 16, - "uniqueItems": true, - "description": "List of protocols the package provides a handler for" - }, - "FileExtensions": { - "type": [ "array", "null" ], - "items": { - "type": "string", - "pattern": "^[^\\\\/:\\*\\?\"<>\\|\\x01-\\x1f]+$", - "maxLength": 64 - }, - "maxItems": 512, - "uniqueItems": true, - "description": "List of file extensions the package could support" - }, - "Dependencies": { - "type": [ "object", "null" ], - "properties": { - "WindowsFeatures": { - "type": [ "array", "null" ], - "items": { - "type": "string", - "minLength": 1, - "maxLength": 128 - }, - "maxItems": 16, - "uniqueItems": true, - "description": "List of Windows feature dependencies" - }, - "WindowsLibraries": { - "type": [ "array", "null" ], - "items": { - "type": "string", - "minLength": 1, - "maxLength": 128 - }, - "maxItems": 16, - "uniqueItems": true, - "description": "List of Windows library dependencies" - }, - "PackageDependencies": { - "type": [ "array", "null" ], - "items": { - "type": "object", - "properties": { - "PackageIdentifier": { - "$ref": "#/definitions/PackageIdentifier" - }, - "MinimumVersion": { - "$ref": "#/definitions/PackageVersion" - } - }, - "required": [ "PackageIdentifier" ] - }, - "maxItems": 16, - "uniqueItems": true, - "description": "List of package dependencies from current source" - }, - "ExternalDependencies": { - "type": [ "array", "null" ], - "items": { - "type": "string", - "minLength": 1, - "maxLength": 128 - }, - "maxItems": 16, - "uniqueItems": true, - "description": "List of external package dependencies" - } - } - }, - "PackageFamilyName": { - "type": [ "string", "null" ], - "pattern": "^[A-Za-z0-9][-\\.A-Za-z0-9]+_[A-Za-z0-9]{13}$", - "maxLength": 255, - "description": "PackageFamilyName for appx or msix installer. Could be used for correlation of packages across sources" - }, - "ProductCode": { - "type": [ "string", "null" ], - "minLength": 1, - "maxLength": 255, - "description": "ProductCode could be used for correlation of packages across sources" - }, - "Capabilities": { - "type": [ "array", "null" ], - "items": { - "type": "string", - "minLength": 1, - "maxLength": 40 - }, - "maxItems": 1000, - "uniqueItems": true, - "description": "List of appx or msix installer capabilities" - }, - "RestrictedCapabilities": { - "type": [ "array", "null" ], - "items": { - "type": "string", - "minLength": 1, - "maxLength": 40 - }, - "maxItems": 1000, - "uniqueItems": true, - "description": "List of appx or msix installer restricted capabilities" - }, - "Market": { - "type": "string", - "pattern": "^[A-Z]{2}$", - "description": "The installer target market" - }, - "MarketArray": { - "type": [ "array", "null" ], - "uniqueItems": true, - "maxItems": 256, - "items": { - "$ref": "#/definitions/Market" - }, - "description": "Array of markets" - }, - "Markets": { - "description": "The installer markets", - "type": [ "object", "null" ], - "oneOf": [ - { - "properties": { - "AllowedMarkets": { - "$ref": "#/definitions/MarketArray" - } - }, - "required": [ "AllowedMarkets" ] - }, - { - "properties": { - "ExcludedMarkets": { - "$ref": "#/definitions/MarketArray" - } - }, - "required": [ "ExcludedMarkets" ] - } - ] - }, - "InstallerAbortsTerminal": { - "type": [ "boolean", "null" ], - "description": "Indicates whether the installer will abort terminal. Default is false" - }, - "ReleaseDate": { - "type": [ "string", "null" ], - "format": "date", - "description": "The installer release date" - }, - "InstallLocationRequired": { - "type": [ "boolean", "null" ], - "description": "Indicates whether the installer requires an install location provided" - }, - "RequireExplicitUpgrade": { - "type": [ "boolean", "null" ], - "description": "Indicates whether the installer should be pinned by default from upgrade" - }, - "DisplayInstallWarnings": { - "type": [ "boolean", "null" ], - "description": "Indicates whether winget should display a warning message if the install or upgrade is known to interfere with running applications." - }, - "UnsupportedOSArchitectures": { - "type": [ "array", "null" ], - "uniqueItems": true, - "items": { - "type": "string", - "title": "UnsupportedOSArchitecture", - "enum": [ - "x86", - "x64", - "arm", - "arm64" - ] - }, - "description": "List of OS architectures the installer does not support" - }, - "UnsupportedArguments": { - "type": [ "array", "null" ], - "uniqueItems": true, - "items": { - "type": "string", - "title": "UnsupportedArgument", - "enum": [ - "log", - "location" - ] - }, - "description": "List of winget arguments the installer does not support" - }, - "AppsAndFeaturesEntry": { - "type": "object", - "properties": { - "DisplayName": { - "type": [ "string", "null" ], - "minLength": 1, - "maxLength": 256, - "description": "The DisplayName registry value" - }, - "Publisher": { - "type": [ "string", "null" ], - "minLength": 1, - "maxLength": 256, - "description": "The Publisher registry value" - }, - "DisplayVersion": { - "type": [ "string", "null" ], - "minLength": 1, - "maxLength": 128, - "description": "The DisplayVersion registry value" - }, - "ProductCode": { - "$ref": "#/definitions/ProductCode" - }, - "UpgradeCode": { - "$ref": "#/definitions/ProductCode" - }, - "InstallerType": { - "$ref": "#/definitions/InstallerType" - } - }, - "description": "Various key values under installer's ARP entry" - }, - "AppsAndFeaturesEntries": { - "type": [ "array", "null" ], - "uniqueItems": true, - "maxItems": 128, - "items": { - "$ref": "#/definitions/AppsAndFeaturesEntry" - }, - "description": "List of ARP entries." - }, - "ElevationRequirement": { - "type": [ "string", "null" ], - "enum": [ - "elevationRequired", - "elevationProhibited", - "elevatesSelf" - ], - "description": "The installer's elevation requirement" - }, - "InstallationMetadata": { - "type": "object", - "title": "InstallationMetadata", - "properties": { - "DefaultInstallLocation": { - "type": [ "string", "null" ], - "minLength": 1, - "maxLength": 2048, - "description": "Represents the default installed package location. Used for deeper installation detection." - }, - "Files": { - "type": [ "array", "null" ], - "uniqueItems": true, - "maxItems": 2048, - "items": { - "type": "object", - "title": "InstalledFile", - "properties": { - "RelativeFilePath": { - "type": "string", - "minLength": 1, - "maxLength": 2048, - "description": "The relative path to the installed file." - }, - "FileSha256": { - "type": [ "string", "null" ], - "pattern": "^[A-Fa-f0-9]{64}$", - "description": "Optional Sha256 of the installed file." - }, - "FileType": { - "type": [ "string", "null" ], - "enum": [ - "launch", - "uninstall", - "other" - ], - "description": "The optional installed file type. If not specified, the file is treated as other." - }, - "InvocationParameter": { - "type": [ "string", "null" ], - "minLength": 1, - "maxLength": 2048, - "description": "Optional parameter for invocable files." - }, - "DisplayName": { - "type": [ "string", "null" ], - "minLength": 1, - "maxLength": 256, - "description": "Optional display name for invocable files." - } - }, - "required": [ "RelativeFilePath" ], - "description": "Represents an installed file." - }, - "description": "List of installed files." - } - }, - "description": "Details about the installation. Used for deeper installation detection." - }, - "Installer": { - "type": "object", - "properties": { - "InstallerLocale": { - "$ref": "#/definitions/Locale" - }, - "Platform": { - "$ref": "#/definitions/Platform" - }, - "MinimumOSVersion": { - "$ref": "#/definitions/MinimumOSVersion" - }, - "Architecture": { - "$ref": "#/definitions/Architecture" - }, - "InstallerType": { - "$ref": "#/definitions/InstallerType" - }, - "NestedInstallerType": { - "$ref": "#/definitions/NestedInstallerType" - }, - "NestedInstallerFiles": { - "$ref": "#/definitions/NestedInstallerFiles" - }, - "Scope": { - "$ref": "#/definitions/Scope" - }, - "InstallerUrl": { - "type": "string", - "pattern": "^([Hh][Tt][Tt][Pp][Ss]?)://.+$", - "maxLength": 2048, - "description": "The installer Url" - }, - "InstallerSha256": { - "type": "string", - "pattern": "^[A-Fa-f0-9]{64}$", - "description": "Sha256 is required. Sha256 of the installer" - }, - "SignatureSha256": { - "type": [ "string", "null" ], - "pattern": "^[A-Fa-f0-9]{64}$", - "description": "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" - }, - "InstallModes": { - "$ref": "#/definitions/InstallModes" - }, - "InstallerSwitches": { - "$ref": "#/definitions/InstallerSwitches" - }, - "InstallerSuccessCodes": { - "$ref": "#/definitions/InstallerSuccessCodes" - }, - "ExpectedReturnCodes": { - "$ref": "#/definitions/ExpectedReturnCodes" - }, - "UpgradeBehavior": { - "$ref": "#/definitions/UpgradeBehavior" - }, - "Commands": { - "$ref": "#/definitions/Commands" - }, - "Protocols": { - "$ref": "#/definitions/Protocols" - }, - "FileExtensions": { - "$ref": "#/definitions/FileExtensions" - }, - "Dependencies": { - "$ref": "#/definitions/Dependencies" - }, - "PackageFamilyName": { - "$ref": "#/definitions/PackageFamilyName" - }, - "ProductCode": { - "$ref": "#/definitions/ProductCode" - }, - "Capabilities": { - "$ref": "#/definitions/Capabilities" - }, - "RestrictedCapabilities": { - "$ref": "#/definitions/RestrictedCapabilities" - }, - "Markets": { - "$ref": "#/definitions/Markets" - }, - "InstallerAbortsTerminal": { - "$ref": "#/definitions/InstallerAbortsTerminal" - }, - "ReleaseDate": { - "$ref": "#/definitions/ReleaseDate" - }, - "InstallLocationRequired": { - "$ref": "#/definitions/InstallLocationRequired" - }, - "RequireExplicitUpgrade": { - "$ref": "#/definitions/RequireExplicitUpgrade" - }, - "DisplayInstallWarnings": { - "$ref": "#/definitions/DisplayInstallWarnings" - }, - "UnsupportedOSArchitectures": { - "$ref": "#/definitions/UnsupportedOSArchitectures" - }, - "UnsupportedArguments": { - "$ref": "#/definitions/UnsupportedArguments" - }, - "AppsAndFeaturesEntries": { - "$ref": "#/definitions/AppsAndFeaturesEntries" - }, - "ElevationRequirement": { - "$ref": "#/definitions/ElevationRequirement" - }, - "InstallationMetadata": { - "$ref": "#/definitions/InstallationMetadata" - } - }, - "required": [ - "Architecture", - "InstallerUrl", - "InstallerSha256" - ] - } - }, - "type": "object", - "properties": { - "PackageIdentifier": { - "$ref": "#/definitions/PackageIdentifier" - }, - "PackageVersion": { - "$ref": "#/definitions/PackageVersion" - }, - "Channel": { - "$ref": "#/definitions/Channel" - }, - "InstallerLocale": { - "$ref": "#/definitions/Locale" - }, - "Platform": { - "$ref": "#/definitions/Platform" - }, - "MinimumOSVersion": { - "$ref": "#/definitions/MinimumOSVersion" - }, - "InstallerType": { - "$ref": "#/definitions/InstallerType" - }, - "NestedInstallerType": { - "$ref": "#/definitions/NestedInstallerType" - }, - "NestedInstallerFiles": { - "$ref": "#/definitions/NestedInstallerFiles" - }, - "Scope": { - "$ref": "#/definitions/Scope" - }, - "InstallModes": { - "$ref": "#/definitions/InstallModes" - }, - "InstallerSwitches": { - "$ref": "#/definitions/InstallerSwitches" - }, - "InstallerSuccessCodes": { - "$ref": "#/definitions/InstallerSuccessCodes" - }, - "ExpectedReturnCodes": { - "$ref": "#/definitions/ExpectedReturnCodes" - }, - "UpgradeBehavior": { - "$ref": "#/definitions/UpgradeBehavior" - }, - "Commands": { - "$ref": "#/definitions/Commands" - }, - "Protocols": { - "$ref": "#/definitions/Protocols" - }, - "FileExtensions": { - "$ref": "#/definitions/FileExtensions" - }, - "Dependencies": { - "$ref": "#/definitions/Dependencies" - }, - "PackageFamilyName": { - "$ref": "#/definitions/PackageFamilyName" - }, - "ProductCode": { - "$ref": "#/definitions/ProductCode" - }, - "Capabilities": { - "$ref": "#/definitions/Capabilities" - }, - "RestrictedCapabilities": { - "$ref": "#/definitions/RestrictedCapabilities" - }, - "Markets": { - "$ref": "#/definitions/Markets" - }, - "InstallerAbortsTerminal": { - "$ref": "#/definitions/InstallerAbortsTerminal" - }, - "ReleaseDate": { - "$ref": "#/definitions/ReleaseDate" - }, - "InstallLocationRequired": { - "$ref": "#/definitions/InstallLocationRequired" - }, - "RequireExplicitUpgrade": { - "$ref": "#/definitions/RequireExplicitUpgrade" - }, - "DisplayInstallWarnings": { - "$ref": "#/definitions/DisplayInstallWarnings" - }, - "UnsupportedOSArchitectures": { - "$ref": "#/definitions/UnsupportedOSArchitectures" - }, - "UnsupportedArguments": { - "$ref": "#/definitions/UnsupportedArguments" - }, - "AppsAndFeaturesEntries": { - "$ref": "#/definitions/AppsAndFeaturesEntries" - }, - "ElevationRequirement": { - "$ref": "#/definitions/ElevationRequirement" - }, - "InstallationMetadata": { - "$ref": "#/definitions/InstallationMetadata" - }, - "Installers": { - "type": "array", - "items": { - "$ref": "#/definitions/Installer" - }, - "minItems": 1, - "maxItems": 1024 - }, - "ManifestType": { - "type": "string", - "default": "installer", - "const": "installer", - "description": "The manifest type" - }, - "ManifestVersion": { - "type": "string", - "default": "1.3.0", - "pattern": "^(0|[1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])(\\.(0|[1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])){2}$", - "description": "The manifest syntax version" - } - }, - "required": [ - "PackageIdentifier", - "PackageVersion", - "Installers", - "ManifestType", - "ManifestVersion" - ] -}- \ No newline at end of file diff --git a/schemas/JSON/manifests/v1.3.0/manifest.locale.1.3.0.json b/schemas/JSON/manifests/v1.3.0/manifest.locale.1.3.0.json @@ -1,204 +0,0 @@ -{ - "$id": "https://aka.ms/winget-manifest.locale.1.3.0.schema.json", - "$schema": "http://json-schema.org/draft-07/schema#", - "description": "A representation of a multiple-file manifest representing app metadata in other locale in the OWC. v1.3.0", - "definitions": { - "Url": { - "type": [ "string", "null" ], - "pattern": "^([Hh][Tt][Tt][Pp][Ss]?)://.+$", - "maxLength": 2048, - "description": "Optional Url type" - }, - "Tag": { - "type": [ "string", "null" ], - "minLength": 1, - "maxLength": 40, - "description": "Package tag" - }, - "Agreement": { - "type": "object", - "properties": { - "AgreementLabel": { - "type": [ "string", "null" ], - "minLength": 1, - "maxLength": 100, - "description": "The label of the Agreement. i.e. EULA, AgeRating, etc. This field should be localized. Either Agreement or AgreementUrl is required. When we show the agreements, we would Bold the AgreementLabel" - }, - "Agreement": { - "type": [ "string", "null" ], - "minLength": 1, - "maxLength": 10000, - "description": "The agreement text content." - }, - "AgreementUrl": { - "$ref": "#/definitions/Url", - "description": "The agreement URL." - } - } - }, - "Documentation": { - "type": "object", - "properties": { - "DocumentLabel": { - "type": [ "string", "null" ], - "minLength": 1, - "maxLength": 100, - "description": "The label of the documentation for providing software guides such as manuals and troubleshooting URLs." - }, - "DocumentUrl": { - "$ref": "#/definitions/Url", - "description": "The documentation URL." - } - } - } - }, - "type": "object", - "properties": { - "PackageIdentifier": { - "type": "string", - "pattern": "^[^\\.\\s\\\\/:\\*\\?\"<>\\|\\x01-\\x1f]{1,32}(\\.[^\\.\\s\\\\/:\\*\\?\"<>\\|\\x01-\\x1f]{1,32}){1,3}$", - "maxLength": 128, - "description": "The package unique identifier" - }, - "PackageVersion": { - "type": "string", - "pattern": "^[^\\\\/:\\*\\?\"<>\\|\\x01-\\x1f]+$", - "maxLength": 128, - "description": "The package version" - }, - "PackageLocale": { - "type": "string", - "pattern": "^([a-zA-Z]{2,3}|[iI]-[a-zA-Z]+|[xX]-[a-zA-Z]{1,8})(-[a-zA-Z]{1,8})*$", - "maxLength": 20, - "description": "The package meta-data locale" - }, - "Publisher": { - "type": [ "string", "null" ], - "minLength": 2, - "maxLength": 256, - "description": "The publisher name" - }, - "PublisherUrl": { - "$ref": "#/definitions/Url", - "description": "The publisher home page" - }, - "PublisherSupportUrl": { - "$ref": "#/definitions/Url", - "description": "The publisher support page" - }, - "PrivacyUrl": { - "$ref": "#/definitions/Url", - "description": "The publisher privacy page or the package privacy page" - }, - "Author": { - "type": [ "string", "null" ], - "minLength": 2, - "maxLength": 256, - "description": "The package author" - }, - "PackageName": { - "type": [ "string", "null" ], - "minLength": 2, - "maxLength": 256, - "description": "The package name" - }, - "PackageUrl": { - "$ref": "#/definitions/Url", - "description": "The package home page" - }, - "License": { - "type": [ "string", "null" ], - "minLength": 3, - "maxLength": 512, - "description": "The package license" - }, - "LicenseUrl": { - "$ref": "#/definitions/Url", - "description": "The license page" - }, - "Copyright": { - "type": [ "string", "null" ], - "minLength": 3, - "maxLength": 512, - "description": "The package copyright" - }, - "CopyrightUrl": { - "$ref": "#/definitions/Url", - "description": "The package copyright page" - }, - "ShortDescription": { - "type": [ "string", "null" ], - "minLength": 3, - "maxLength": 256, - "description": "The short package description" - }, - "Description": { - "type": [ "string", "null" ], - "minLength": 3, - "maxLength": 10000, - "description": "The full package description" - }, - "Tags": { - "type": [ "array", "null" ], - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 16, - "uniqueItems": true, - "description": "List of additional package search terms" - }, - "Agreements": { - "type": [ "array", "null" ], - "items": { - "$ref": "#/definitions/Agreement" - }, - "maxItems": 128 - }, - "ReleaseNotes": { - "type": [ "string", "null" ], - "minLength": 1, - "maxLength": 10000, - "description": "The package release notes" - }, - "ReleaseNotesUrl": { - "$ref": "#/definitions/Url", - "description": "The package release notes url" - }, - "PurchaseUrl": { - "$ref": "#/definitions/Url", - "description": "The purchase url for acquiring entitlement for the package." - }, - "InstallationNotes": { - "type": [ "string", "null" ], - "minLength": 1, - "maxLength": 256, - "description": "The notes displayed to the user upon completion of a package installation." - }, - "Documentations": { - "type": [ "array", "null" ], - "items": { - "$ref": "#/definitions/Documentation" - }, - "maxItems": 256 - }, - "ManifestType": { - "type": "string", - "default": "locale", - "const": "locale", - "description": "The manifest type" - }, - "ManifestVersion": { - "type": "string", - "default": "1.3.0", - "pattern": "^(0|[1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])(\\.(0|[1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])){2}$", - "description": "The manifest syntax version" - } - }, - "required": [ - "PackageIdentifier", - "PackageVersion", - "PackageLocale", - "ManifestType", - "ManifestVersion" - ] -}- \ No newline at end of file diff --git a/schemas/JSON/manifests/v1.3.0/manifest.singleton.1.3.0.json b/schemas/JSON/manifests/v1.3.0/manifest.singleton.1.3.0.json @@ -1,993 +0,0 @@ -{ - "$id": "https://aka.ms/winget-manifest.singleton.1.3.0.schema.json", - "$schema": "http://json-schema.org/draft-07/schema#", - "description": "A representation of a single-file manifest representing an app in the OWC. v1.3.0", - "definitions": { - "PackageIdentifier": { - "type": "string", - "pattern": "^[^\\.\\s\\\\/:\\*\\?\"<>\\|\\x01-\\x1f]{1,32}(\\.[^\\.\\s\\\\/:\\*\\?\"<>\\|\\x01-\\x1f]{1,32}){1,3}$", - "maxLength": 128, - "description": "The package unique identifier" - }, - "PackageVersion": { - "type": "string", - "pattern": "^[^\\\\/:\\*\\?\"<>\\|\\x01-\\x1f]+$", - "maxLength": 128, - "description": "The package version" - }, - "Locale": { - "type": [ "string", "null" ], - "pattern": "^([a-zA-Z]{2,3}|[iI]-[a-zA-Z]+|[xX]-[a-zA-Z]{1,8})(-[a-zA-Z]{1,8})*$", - "maxLength": 20, - "description": "The package meta-data locale" - }, - "Url": { - "type": [ "string", "null" ], - "pattern": "^([Hh][Tt][Tt][Pp][Ss]?)://.+$", - "maxLength": 2048, - "description": "Optional Url type" - }, - "Tag": { - "type": [ "string", "null" ], - "minLength": 1, - "maxLength": 40, - "description": "Package moniker or tag" - }, - "Agreement": { - "type": "object", - "properties": { - "AgreementLabel": { - "type": [ "string", "null" ], - "minLength": 1, - "maxLength": 100, - "description": "The label of the Agreement. i.e. EULA, AgeRating, etc. This field should be localized. Either Agreement or AgreementUrl is required. When we show the agreements, we would Bold the AgreementLabel" - }, - "Agreement": { - "type": [ "string", "null" ], - "minLength": 1, - "maxLength": 10000, - "description": "The agreement text content." - }, - "AgreementUrl": { - "$ref": "#/definitions/Url", - "description": "The agreement URL." - } - } - }, - "Documentation": { - "type": "object", - "properties": { - "DocumentLabel": { - "type": [ "string", "null" ], - "minLength": 1, - "maxLength": 100, - "description": "The label of the documentation for providing software guides such as manuals and troubleshooting URLs." - }, - "DocumentUrl": { - "$ref": "#/definitions/Url", - "description": "The documentation URL." - } - } - }, - "Channel": { - "type": [ "string", "null" ], - "minLength": 1, - "maxLength": 16, - "description": "The distribution channel" - }, - "Platform": { - "type": [ "array", "null" ], - "items": { - "title": "Platform", - "type": "string", - "enum": [ - "Windows.Desktop", - "Windows.Universal" - ] - }, - "maxItems": 2, - "uniqueItems": true, - "description": "The installer supported operating system" - }, - "MinimumOSVersion": { - "type": [ "string", "null" ], - "pattern": "^(0|[1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])(\\.(0|[1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])){0,3}$", - "description": "The installer minimum operating system version" - }, - "InstallerType": { - "type": [ "string", "null" ], - "enum": [ - "msix", - "msi", - "appx", - "exe", - "zip", - "inno", - "nullsoft", - "wix", - "burn", - "pwa", - "portable" - ], - "description": "Enumeration of supported installer types. InstallerType is required in either root level or individual Installer level" - }, - "NestedInstallerType": { - "type": [ "string", "null" ], - "enum": [ - "msix", - "msi", - "appx", - "exe", - "inno", - "nullsoft", - "wix", - "burn", - "portable" - ], - "description": "Enumeration of supported nested installer types contained inside an archive file" - }, - "NestedInstallerFiles": { - "type": [ "array", "null" ], - "items": { - "type": "object", - "title": "NestedInstallerFile", - "properties": { - "RelativeFilePath": { - "type": "string", - "minLength": 1, - "maxLength": 512, - "description": "The relative path to the nested installer file" - }, - "PortableCommandAlias": { - "type": [ "string", "null" ], - "minLength": 1, - "maxLength": 40, - "description": "The command alias to be used for calling the package. Only applies to the nested portable package" - } - }, - "required": [ "RelativeFilePath" ], - "description": "A nested installer file contained inside an archive" - }, - "maxItems": 1024, - "description": "List of nested installer files contained inside an archive" - }, - "Architecture": { - "type": "string", - "enum": [ - "x86", - "x64", - "arm", - "arm64", - "neutral" - ], - "description": "The installer target architecture" - }, - "Scope": { - "type": [ "string", "null" ], - "enum": [ - "user", - "machine" - ], - "description": "Scope indicates if the installer is per user or per machine" - }, - "InstallModes": { - "type": [ "array", "null" ], - "items": { - "title": "InstallModes", - "type": "string", - "enum": [ - "interactive", - "silent", - "silentWithProgress" - ] - }, - "maxItems": 3, - "uniqueItems": true, - "description": "List of supported installer modes" - }, - "InstallerSwitches": { - "type": "object", - "properties": { - "Silent": { - "type": [ "string", "null" ], - "minLength": 1, - "maxLength": 512, - "description": "Silent is the value that should be passed to the installer when user chooses a silent or quiet install" - }, - "SilentWithProgress": { - "type": [ "string", "null" ], - "minLength": 1, - "maxLength": 512, - "description": "SilentWithProgress is the value that should be passed to the installer when user chooses a non-interactive install" - }, - "Interactive": { - "type": [ "string", "null" ], - "minLength": 1, - "maxLength": 512, - "description": "Interactive is the value that should be passed to the installer when user chooses an interactive install" - }, - "InstallLocation": { - "type": [ "string", "null" ], - "minLength": 1, - "maxLength": 512, - "description": "InstallLocation is the value passed to the installer for custom install location. <INSTALLPATH> token can be included in the switch value so that winget will replace the token with user provided path" - }, - "Log": { - "type": [ "string", "null" ], - "minLength": 1, - "maxLength": 512, - "description": "Log is the value passed to the installer for custom log file path. <LOGPATH> token can be included in the switch value so that winget will replace the token with user provided path" - }, - "Upgrade": { - "type": [ "string", "null" ], - "minLength": 1, - "maxLength": 512, - "description": "Upgrade is the value that should be passed to the installer when user chooses an upgrade" - }, - "Custom": { - "type": [ "string", "null" ], - "minLength": 1, - "maxLength": 2048, - "description": "Custom switches will be passed directly to the installer by winget" - } - } - }, - "InstallerReturnCode": { - "type": "integer", - "format": "long", - "not": { - "enum": [ 0 ] - }, - "minimum": -2147483648, - "maximum": 4294967295, - "description": "An exit code that can be returned by the installer after execution" - }, - "InstallerSuccessCodes": { - "type": [ "array", "null" ], - "items": { - "$ref": "#/definitions/InstallerReturnCode" - }, - "maxItems": 16, - "uniqueItems": true, - "description": "List of additional non-zero installer success exit codes other than known default values by winget" - }, - "ExpectedReturnCodes": { - "type": [ "array", "null" ], - "items": { - "type": "object", - "title": "ExpectedReturnCode", - "properties": { - "InstallerReturnCode": { - "$ref": "#/definitions/InstallerReturnCode" - }, - "ReturnResponse": { - "type": "string", - "enum": [ - "packageInUse", - "installInProgress", - "fileInUse", - "missingDependency", - "diskFull", - "insufficientMemory", - "noNetwork", - "contactSupport", - "rebootRequiredToFinish", - "rebootRequiredForInstall", - "rebootInitiated", - "cancelledByUser", - "alreadyInstalled", - "downgrade", - "blockedByPolicy", - "custom" - ] - }, - "ReturnResponseUrl": { - "$ref": "#/definitions/Url", - "description": "The return response url to provide additional guidance for expected return codes" - } - } - }, - "maxItems": 128, - "description": "Installer exit codes for common errors" - }, - "UpgradeBehavior": { - "type": [ "string", "null" ], - "enum": [ - "install", - "uninstallPrevious" - ], - "description": "The upgrade method" - }, - "Commands": { - "type": [ "array", "null" ], - "items": { - "type": "string", - "minLength": 1, - "maxLength": 40 - }, - "maxItems": 16, - "uniqueItems": true, - "description": "List of commands or aliases to run the package" - }, - "Protocols": { - "type": [ "array", "null" ], - "items": { - "type": "string", - "maxLength": 2048 - }, - "maxItems": 16, - "uniqueItems": true, - "description": "List of protocols the package provides a handler for" - }, - "FileExtensions": { - "type": [ "array", "null" ], - "items": { - "type": "string", - "pattern": "^[^\\\\/:\\*\\?\"<>\\|\\x01-\\x1f]+$", - "maxLength": 64 - }, - "maxItems": 512, - "uniqueItems": true, - "description": "List of file extensions the package could support" - }, - "Dependencies": { - "type": [ "object", "null" ], - "properties": { - "WindowsFeatures": { - "type": [ "array", "null" ], - "items": { - "type": "string", - "minLength": 1, - "maxLength": 128 - }, - "maxItems": 16, - "uniqueItems": true, - "description": "List of Windows feature dependencies" - }, - "WindowsLibraries": { - "type": [ "array", "null" ], - "items": { - "type": "string", - "minLength": 1, - "maxLength": 128 - }, - "maxItems": 16, - "uniqueItems": true, - "description": "List of Windows library dependencies" - }, - "PackageDependencies": { - "type": [ "array", "null" ], - "items": { - "type": "object", - "properties": { - "PackageIdentifier": { - "$ref": "#/definitions/PackageIdentifier" - }, - "MinimumVersion": { - "$ref": "#/definitions/PackageVersion" - } - }, - "required": [ "PackageIdentifier" ] - }, - "maxItems": 16, - "description": "List of package dependencies from current source" - }, - "ExternalDependencies": { - "type": [ "array", "null" ], - "items": { - "type": "string", - "minLength": 1, - "maxLength": 128 - }, - "maxItems": 16, - "uniqueItems": true, - "description": "List of external package dependencies" - } - } - }, - "PackageFamilyName": { - "type": [ "string", "null" ], - "pattern": "^[A-Za-z0-9][-\\.A-Za-z0-9]+_[A-Za-z0-9]{13}$", - "maxLength": 255, - "description": "PackageFamilyName for appx or msix installer. Could be used for correlation of packages across sources" - }, - "ProductCode": { - "type": [ "string", "null" ], - "minLength": 1, - "maxLength": 255, - "description": "ProductCode could be used for correlation of packages across sources" - }, - "Capabilities": { - "type": [ "array", "null" ], - "items": { - "type": "string", - "minLength": 1, - "maxLength": 40 - }, - "maxItems": 1000, - "uniqueItems": true, - "description": "List of appx or msix installer capabilities" - }, - "RestrictedCapabilities": { - "type": [ "array", "null" ], - "items": { - "type": "string", - "minLength": 1, - "maxLength": 40 - }, - "maxItems": 1000, - "uniqueItems": true, - "description": "List of appx or msix installer restricted capabilities" - }, - "Market": { - "type": "string", - "pattern": "^[A-Z]{2}$", - "description": "The installer target market" - }, - "MarketArray": { - "type": [ "array", "null" ], - "uniqueItems": true, - "maxItems": 256, - "items": { - "$ref": "#/definitions/Market" - }, - "description": "Array of markets" - }, - "Markets": { - "description": "The installer markets", - "type": [ "object", "null" ], - "oneOf": [ - { - "properties": { - "AllowedMarkets": { - "$ref": "#/definitions/MarketArray" - } - }, - "required": [ "AllowedMarkets" ] - }, - { - "properties": { - "ExcludedMarkets": { - "$ref": "#/definitions/MarketArray" - } - }, - "required": [ "ExcludedMarkets" ] - } - ] - }, - "InstallerAbortsTerminal": { - "type": [ "boolean", "null" ], - "description": "Indicates whether the installer will abort terminal. Default is false" - }, - "ReleaseDate": { - "type": [ "string", "null" ], - "format": "date", - "description": "The installer release date" - }, - "InstallLocationRequired": { - "type": [ "boolean", "null" ], - "description": "Indicates whether the installer requires an install location provided" - }, - "RequireExplicitUpgrade": { - "type": [ "boolean", "null" ], - "description": "Indicates whether the installer should be pinned by default from upgrade" - }, - "DisplayInstallWarnings": { - "type": [ "boolean", "null" ], - "description": "Indicates whether winget should display a warning message if the install or upgrade is known to interfere with running applications." - }, - "UnsupportedOSArchitectures": { - "type": [ "array", "null" ], - "uniqueItems": true, - "items": { - "type": "string", - "title": "UnsupportedOSArchitecture", - "enum": [ - "x86", - "x64", - "arm", - "arm64" - ] - }, - "description": "List of OS architectures the installer does not support" - }, - "UnsupportedArguments": { - "type": [ "array", "null" ], - "uniqueItems": true, - "items": { - "type": "string", - "title": "UnsupportedArgument", - "enum": [ - "log", - "location" - ] - }, - "description": "List of winget arguments the installer does not support" - }, - "AppsAndFeaturesEntry": { - "type": "object", - "properties": { - "DisplayName": { - "type": [ "string", "null" ], - "minLength": 1, - "maxLength": 256, - "description": "The DisplayName registry value" - }, - "Publisher": { - "type": [ "string", "null" ], - "minLength": 1, - "maxLength": 256, - "description": "The Publisher registry value" - }, - "DisplayVersion": { - "type": [ "string", "null" ], - "minLength": 1, - "maxLength": 128, - "description": "The DisplayVersion registry value" - }, - "ProductCode": { - "$ref": "#/definitions/ProductCode" - }, - "UpgradeCode": { - "$ref": "#/definitions/ProductCode" - }, - "InstallerType": { - "$ref": "#/definitions/InstallerType" - } - }, - "description": "Various key values under installer's ARP entry" - }, - "AppsAndFeaturesEntries": { - "type": [ "array", "null" ], - "uniqueItems": true, - "maxItems": 128, - "items": { - "$ref": "#/definitions/AppsAndFeaturesEntry" - }, - "description": "List of ARP entries." - }, - "ElevationRequirement": { - "type": [ "string", "null" ], - "enum": [ - "elevationRequired", - "elevationProhibited", - "elevatesSelf" - ], - "description": "The installer's elevation requirement" - }, - "InstallationMetadata": { - "type": "object", - "title": "InstallationMetadata", - "properties": { - "DefaultInstallLocation": { - "type": [ "string", "null" ], - "minLength": 1, - "maxLength": 2048, - "description": "Represents the default installed package location. Used for deeper installation detection." - }, - "Files": { - "type": [ "array", "null" ], - "uniqueItems": true, - "maxItems": 2048, - "items": { - "type": "object", - "title": "InstalledFile", - "properties": { - "RelativeFilePath": { - "type": "string", - "minLength": 1, - "maxLength": 2048, - "description": "The relative path to the installed file." - }, - "FileSha256": { - "type": [ "string", "null" ], - "pattern": "^[A-Fa-f0-9]{64}$", - "description": "Optional Sha256 of the installed file." - }, - "FileType": { - "type": [ "string", "null" ], - "enum": [ - "launch", - "uninstall", - "other" - ], - "description": "The optional installed file type. If not specified, the file is treated as other." - }, - "InvocationParameter": { - "type": [ "string", "null" ], - "minLength": 1, - "maxLength": 2048, - "description": "Optional parameter for invocable files." - }, - "DisplayName": { - "type": [ "string", "null" ], - "minLength": 1, - "maxLength": 256, - "description": "Optional display name for invocable files." - } - }, - "required": [ "RelativeFilePath" ], - "description": "Represents an installed file." - }, - "description": "List of installed files." - } - }, - "description": "Details about the installation. Used for deeper installation detection." - }, - "Installer": { - "type": "object", - "properties": { - "InstallerLocale": { - "$ref": "#/definitions/Locale" - }, - "Platform": { - "$ref": "#/definitions/Platform" - }, - "MinimumOSVersion": { - "$ref": "#/definitions/MinimumOSVersion" - }, - "Architecture": { - "$ref": "#/definitions/Architecture" - }, - "InstallerType": { - "$ref": "#/definitions/InstallerType" - }, - "NestedInstallerType": { - "$ref": "#/definitions/NestedInstallerType" - }, - "NestedInstallerFiles": { - "$ref": "#/definitions/NestedInstallerFiles" - }, - "Scope": { - "$ref": "#/definitions/Scope" - }, - "InstallerUrl": { - "type": "string", - "pattern": "^([Hh][Tt][Tt][Pp][Ss]?)://.+$", - "maxLength": 2048, - "description": "The installer Url" - }, - "InstallerSha256": { - "type": "string", - "pattern": "^[A-Fa-f0-9]{64}$", - "description": "Sha256 is required. Sha256 of the installer" - }, - "SignatureSha256": { - "type": [ "string", "null" ], - "pattern": "^[A-Fa-f0-9]{64}$", - "description": "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" - }, - "InstallModes": { - "$ref": "#/definitions/InstallModes" - }, - "InstallerSwitches": { - "$ref": "#/definitions/InstallerSwitches" - }, - "InstallerSuccessCodes": { - "$ref": "#/definitions/InstallerSuccessCodes" - }, - "ExpectedReturnCodes": { - "$ref": "#/definitions/ExpectedReturnCodes" - }, - "UpgradeBehavior": { - "$ref": "#/definitions/UpgradeBehavior" - }, - "Commands": { - "$ref": "#/definitions/Commands" - }, - "Protocols": { - "$ref": "#/definitions/Protocols" - }, - "FileExtensions": { - "$ref": "#/definitions/FileExtensions" - }, - "Dependencies": { - "$ref": "#/definitions/Dependencies" - }, - "PackageFamilyName": { - "$ref": "#/definitions/PackageFamilyName" - }, - "ProductCode": { - "$ref": "#/definitions/ProductCode" - }, - "Capabilities": { - "$ref": "#/definitions/Capabilities" - }, - "RestrictedCapabilities": { - "$ref": "#/definitions/RestrictedCapabilities" - }, - "Markets": { - "$ref": "#/definitions/Markets" - }, - "InstallerAbortsTerminal": { - "$ref": "#/definitions/InstallerAbortsTerminal" - }, - "ReleaseDate": { - "$ref": "#/definitions/ReleaseDate" - }, - "InstallLocationRequired": { - "$ref": "#/definitions/InstallLocationRequired" - }, - "RequireExplicitUpgrade": { - "$ref": "#/definitions/RequireExplicitUpgrade" - }, - "DisplayInstallWarnings": { - "$ref": "#/definitions/DisplayInstallWarnings" - }, - "UnsupportedOSArchitectures": { - "$ref": "#/definitions/UnsupportedOSArchitectures" - }, - "UnsupportedArguments": { - "$ref": "#/definitions/UnsupportedArguments" - }, - "AppsAndFeaturesEntries": { - "$ref": "#/definitions/AppsAndFeaturesEntries" - }, - "ElevationRequirement": { - "$ref": "#/definitions/ElevationRequirement" - }, - "InstallationMetadata": { - "$ref": "#/definitions/InstallationMetadata" - } - }, - "required": [ - "Architecture", - "InstallerUrl", - "InstallerSha256" - ] - } - }, - "type": "object", - "properties": { - "PackageIdentifier": { - "$ref": "#/definitions/PackageIdentifier" - }, - "PackageVersion": { - "$ref": "#/definitions/PackageVersion" - }, - "PackageLocale": { - "$ref": "#/definitions/Locale" - }, - "Publisher": { - "type": "string", - "minLength": 2, - "maxLength": 256, - "description": "The publisher name" - }, - "PublisherUrl": { - "$ref": "#/definitions/Url", - "description": "The publisher home page" - }, - "PublisherSupportUrl": { - "$ref": "#/definitions/Url", - "description": "The publisher support page" - }, - "PrivacyUrl": { - "$ref": "#/definitions/Url", - "description": "The publisher privacy page or the package privacy page" - }, - "Author": { - "type": [ "string", "null" ], - "minLength": 2, - "maxLength": 256, - "description": "The package author" - }, - "PackageName": { - "type": "string", - "minLength": 2, - "maxLength": 256, - "description": "The package name" - }, - "PackageUrl": { - "$ref": "#/definitions/Url", - "description": "The package home page" - }, - "License": { - "type": "string", - "minLength": 3, - "maxLength": 512, - "description": "The package license" - }, - "LicenseUrl": { - "$ref": "#/definitions/Url", - "description": "The license page" - }, - "Copyright": { - "type": [ "string", "null" ], - "minLength": 3, - "maxLength": 512, - "description": "The package copyright" - }, - "CopyrightUrl": { - "$ref": "#/definitions/Url", - "description": "The package copyright page" - }, - "ShortDescription": { - "type": "string", - "minLength": 3, - "maxLength": 256, - "description": "The short package description" - }, - "Description": { - "type": [ "string", "null" ], - "minLength": 3, - "maxLength": 10000, - "description": "The full package description" - }, - "Moniker": { - "$ref": "#/definitions/Tag", - "description": "The most common package term" - }, - "Tags": { - "type": [ "array", "null" ], - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 16, - "uniqueItems": true, - "description": "List of additional package search terms" - }, - "Agreements": { - "type": [ "array", "null" ], - "items": { - "$ref": "#/definitions/Agreement" - }, - "maxItems": 128 - }, - "ReleaseNotes": { - "type": [ "string", "null" ], - "minLength": 1, - "maxLength": 10000, - "description": "The package release notes" - }, - "ReleaseNotesUrl": { - "$ref": "#/definitions/Url", - "description": "The package release notes url" - }, - "PurchaseUrl": { - "$ref": "#/definitions/Url", - "description": "The purchase url for acquiring entitlement for the package." - }, - "InstallationNotes": { - "type": [ "string", "null" ], - "minLength": 1, - "maxLength": 256, - "description": "The notes displayed to the user upon completion of a package installation." - }, - "Documentations": { - "type": [ "array", "null" ], - "items": { - "$ref": "#/definitions/Documentation" - }, - "maxItems": 256 - }, - "Channel": { - "$ref": "#/definitions/Channel" - }, - "InstallerLocale": { - "$ref": "#/definitions/Locale" - }, - "Platform": { - "$ref": "#/definitions/Platform" - }, - "MinimumOSVersion": { - "$ref": "#/definitions/MinimumOSVersion" - }, - "InstallerType": { - "$ref": "#/definitions/InstallerType" - }, - "NestedInstallerType": { - "$ref": "#/definitions/NestedInstallerType" - }, - "NestedInstallerFiles": { - "$ref": "#/definitions/NestedInstallerFiles" - }, - "Scope": { - "$ref": "#/definitions/Scope" - }, - "InstallModes": { - "$ref": "#/definitions/InstallModes" - }, - "InstallerSwitches": { - "$ref": "#/definitions/InstallerSwitches" - }, - "InstallerSuccessCodes": { - "$ref": "#/definitions/InstallerSuccessCodes" - }, - "ExpectedReturnCodes": { - "$ref": "#/definitions/ExpectedReturnCodes" - }, - "UpgradeBehavior": { - "$ref": "#/definitions/UpgradeBehavior" - }, - "Commands": { - "$ref": "#/definitions/Commands" - }, - "Protocols": { - "$ref": "#/definitions/Protocols" - }, - "FileExtensions": { - "$ref": "#/definitions/FileExtensions" - }, - "Dependencies": { - "$ref": "#/definitions/Dependencies" - }, - "PackageFamilyName": { - "$ref": "#/definitions/PackageFamilyName" - }, - "ProductCode": { - "$ref": "#/definitions/ProductCode" - }, - "Capabilities": { - "$ref": "#/definitions/Capabilities" - }, - "RestrictedCapabilities": { - "$ref": "#/definitions/RestrictedCapabilities" - }, - "Markets": { - "$ref": "#/definitions/Markets" - }, - "InstallerAbortsTerminal": { - "$ref": "#/definitions/InstallerAbortsTerminal" - }, - "ReleaseDate": { - "$ref": "#/definitions/ReleaseDate" - }, - "InstallLocationRequired": { - "$ref": "#/definitions/InstallLocationRequired" - }, - "RequireExplicitUpgrade": { - "$ref": "#/definitions/RequireExplicitUpgrade" - }, - "DisplayInstallWarnings": { - "$ref": "#/definitions/DisplayInstallWarnings" - }, - "UnsupportedOSArchitectures": { - "$ref": "#/definitions/UnsupportedOSArchitectures" - }, - "UnsupportedArguments": { - "$ref": "#/definitions/UnsupportedArguments" - }, - "AppsAndFeaturesEntries": { - "$ref": "#/definitions/AppsAndFeaturesEntries" - }, - "ElevationRequirement": { - "$ref": "#/definitions/ElevationRequirement" - }, - "InstallationMetadata": { - "$ref": "#/definitions/InstallationMetadata" - }, - "Installers": { - "type": "array", - "items": { - "$ref": "#/definitions/Installer" - }, - "minItems": 1, - "maxItems": 1 - }, - "ManifestType": { - "type": "string", - "default": "singleton", - "const": "singleton", - "description": "The manifest type" - }, - "ManifestVersion": { - "type": "string", - "default": "1.3.0", - "pattern": "^(0|[1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])(\\.(0|[1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])){2}$", - "description": "The manifest syntax version" - } - }, - "required": [ - "PackageIdentifier", - "PackageVersion", - "PackageLocale", - "Publisher", - "PackageName", - "License", - "ShortDescription", - "Installers", - "ManifestType", - "ManifestVersion" - ] -}- \ No newline at end of file diff --git a/schemas/JSON/manifests/v1.3.0/manifest.version.1.3.0.json b/schemas/JSON/manifests/v1.3.0/manifest.version.1.3.0.json @@ -1,46 +0,0 @@ -{ - "$id": "https://aka.ms/winget-manifest.version.1.3.0.schema.json", - "$schema": "http://json-schema.org/draft-07/schema#", - "description": "A representation of a multi-file manifest representing an app version in the OWC. v1.3.0", - "type": "object", - "properties": { - "PackageIdentifier": { - "type": "string", - "pattern": "^[^\\.\\s\\\\/:\\*\\?\"<>\\|\\x01-\\x1f]{1,32}(\\.[^\\.\\s\\\\/:\\*\\?\"<>\\|\\x01-\\x1f]{1,32}){1,3}$", - "maxLength": 128, - "description": "The package unique identifier" - }, - "PackageVersion": { - "type": "string", - "pattern": "^[^\\\\/:\\*\\?\"<>\\|\\x01-\\x1f]+$", - "maxLength": 128, - "description": "The package version" - }, - "DefaultLocale": { - "type": "string", - "default": "en-US", - "pattern": "^([a-zA-Z]{2,3}|[iI]-[a-zA-Z]+|[xX]-[a-zA-Z]{1,8})(-[a-zA-Z]{1,8})*$", - "maxLength": 20, - "description": "The default package meta-data locale" - }, - "ManifestType": { - "type": "string", - "default": "version", - "const": "version", - "description": "The manifest type" - }, - "ManifestVersion": { - "type": "string", - "default": "1.3.0", - "pattern": "^(0|[1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])(\\.(0|[1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])){2}$", - "description": "The manifest syntax version" - } - }, - "required": [ - "PackageIdentifier", - "PackageVersion", - "DefaultLocale", - "ManifestType", - "ManifestVersion" - ] -}- \ No newline at end of file diff --git a/schemas/JSON/manifests/v1.4.0/manifest.defaultLocale.1.4.0.json b/schemas/JSON/manifests/v1.4.0/manifest.defaultLocale.1.4.0.json @@ -0,0 +1,213 @@ +{ + "$id": "https://aka.ms/winget-manifest.defaultlocale.1.4.0.schema.json", + "$schema": "http://json-schema.org/draft-07/schema#", + "description": "A representation of a multiple-file manifest representing a default app metadata in the OWC. v1.4.0", + "definitions": { + "Url": { + "type": [ "string", "null" ], + "pattern": "^([Hh][Tt][Tt][Pp][Ss]?)://.+$", + "maxLength": 2048, + "description": "Optional Url type" + }, + "Tag": { + "type": [ "string", "null" ], + "minLength": 1, + "maxLength": 40, + "description": "Package moniker or tag" + }, + "Agreement": { + "type": "object", + "properties": { + "AgreementLabel": { + "type": [ "string", "null" ], + "minLength": 1, + "maxLength": 100, + "description": "The label of the Agreement. i.e. EULA, AgeRating, etc. This field should be localized. Either Agreement or AgreementUrl is required. When we show the agreements, we would Bold the AgreementLabel" + }, + "Agreement": { + "type": [ "string", "null" ], + "minLength": 1, + "maxLength": 10000, + "description": "The agreement text content." + }, + "AgreementUrl": { + "$ref": "#/definitions/Url", + "description": "The agreement URL." + } + } + }, + "Documentation": { + "type": "object", + "properties": { + "DocumentLabel": { + "type": [ "string", "null" ], + "minLength": 1, + "maxLength": 100, + "description": "The label of the documentation for providing software guides such as manuals and troubleshooting URLs." + }, + "DocumentUrl": { + "$ref": "#/definitions/Url", + "description": "The documentation URL." + } + } + } + }, + "type": "object", + "properties": { + "PackageIdentifier": { + "type": "string", + "pattern": "^[^\\.\\s\\\\/:\\*\\?\"<>\\|\\x01-\\x1f]{1,32}(\\.[^\\.\\s\\\\/:\\*\\?\"<>\\|\\x01-\\x1f]{1,32}){1,3}$", + "maxLength": 128, + "description": "The package unique identifier" + }, + "PackageVersion": { + "type": "string", + "pattern": "^[^\\\\/:\\*\\?\"<>\\|\\x01-\\x1f]+$", + "maxLength": 128, + "description": "The package version" + }, + "PackageLocale": { + "type": "string", + "default": "en-US", + "pattern": "^([a-zA-Z]{2,3}|[iI]-[a-zA-Z]+|[xX]-[a-zA-Z]{1,8})(-[a-zA-Z]{1,8})*$", + "maxLength": 20, + "description": "The package meta-data locale" + }, + "Publisher": { + "type": "string", + "minLength": 2, + "maxLength": 256, + "description": "The publisher name" + }, + "PublisherUrl": { + "$ref": "#/definitions/Url", + "description": "The publisher home page" + }, + "PublisherSupportUrl": { + "$ref": "#/definitions/Url", + "description": "The publisher support page" + }, + "PrivacyUrl": { + "$ref": "#/definitions/Url", + "description": "The publisher privacy page or the package privacy page" + }, + "Author": { + "type": [ "string", "null" ], + "minLength": 2, + "maxLength": 256, + "description": "The package author" + }, + "PackageName": { + "type": "string", + "minLength": 2, + "maxLength": 256, + "description": "The package name" + }, + "PackageUrl": { + "$ref": "#/definitions/Url", + "description": "The package home page" + }, + "License": { + "type": "string", + "minLength": 3, + "maxLength": 512, + "description": "The package license" + }, + "LicenseUrl": { + "$ref": "#/definitions/Url", + "description": "The license page" + }, + "Copyright": { + "type": [ "string", "null" ], + "minLength": 3, + "maxLength": 512, + "description": "The package copyright" + }, + "CopyrightUrl": { + "$ref": "#/definitions/Url", + "description": "The package copyright page" + }, + "ShortDescription": { + "type": "string", + "minLength": 3, + "maxLength": 256, + "description": "The short package description" + }, + "Description": { + "type": [ "string", "null" ], + "minLength": 3, + "maxLength": 10000, + "description": "The full package description" + }, + "Moniker": { + "$ref": "#/definitions/Tag", + "description": "The most common package term" + }, + "Tags": { + "type": [ "array", "null" ], + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 16, + "uniqueItems": true, + "description": "List of additional package search terms" + }, + "Agreements": { + "type": [ "array", "null" ], + "items": { + "$ref": "#/definitions/Agreement" + }, + "maxItems": 128 + }, + "ReleaseNotes": { + "type": [ "string", "null" ], + "minLength": 1, + "maxLength": 10000, + "description": "The package release notes" + }, + "ReleaseNotesUrl": { + "$ref": "#/definitions/Url", + "description": "The package release notes url" + }, + "PurchaseUrl": { + "$ref": "#/definitions/Url", + "description": "The purchase url for acquiring entitlement for the package." + }, + "InstallationNotes": { + "type": [ "string", "null" ], + "minLength": 1, + "maxLength": 256, + "description": "The notes displayed to the user upon completion of a package installation." + }, + "Documentations": { + "type": [ "array", "null" ], + "items": { + "$ref": "#/definitions/Documentation" + }, + "maxItems": 256 + }, + "ManifestType": { + "type": "string", + "default": "defaultLocale", + "const": "defaultLocale", + "description": "The manifest type" + }, + "ManifestVersion": { + "type": "string", + "default": "1.4.0", + "pattern": "^(0|[1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])(\\.(0|[1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])){2}$", + "description": "The manifest syntax version" + } + }, + "required": [ + "PackageIdentifier", + "PackageVersion", + "PackageLocale", + "Publisher", + "PackageName", + "License", + "ShortDescription", + "ManifestType", + "ManifestVersion" + ] +}+ \ No newline at end of file diff --git a/schemas/JSON/manifests/v1.4.0/manifest.installer.1.4.0.json b/schemas/JSON/manifests/v1.4.0/manifest.installer.1.4.0.json @@ -0,0 +1,831 @@ +{ + "$id": "https://aka.ms/winget-manifest.installer.1.4.0.schema.json", + "$schema": "http://json-schema.org/draft-07/schema#", + "description": "A representation of a single-file manifest representing an app installers in the OWC. v1.4.0", + "definitions": { + "PackageIdentifier": { + "type": "string", + "pattern": "^[^\\.\\s\\\\/:\\*\\?\"<>\\|\\x01-\\x1f]{1,32}(\\.[^\\.\\s\\\\/:\\*\\?\"<>\\|\\x01-\\x1f]{1,32}){1,3}$", + "maxLength": 128, + "description": "The package unique identifier" + }, + "PackageVersion": { + "type": "string", + "pattern": "^[^\\\\/:\\*\\?\"<>\\|\\x01-\\x1f]+$", + "maxLength": 128, + "description": "The package version" + }, + "Locale": { + "type": [ "string", "null" ], + "pattern": "^([a-zA-Z]{2,3}|[iI]-[a-zA-Z]+|[xX]-[a-zA-Z]{1,8})(-[a-zA-Z]{1,8})*$", + "maxLength": 20, + "description": "The installer meta-data locale" + }, + "Channel": { + "type": [ "string", "null" ], + "minLength": 1, + "maxLength": 16, + "description": "The distribution channel" + }, + "Platform": { + "type": [ "array", "null" ], + "items": { + "title": "Platform", + "type": "string", + "enum": [ + "Windows.Desktop", + "Windows.Universal" + ] + }, + "maxItems": 2, + "uniqueItems": true, + "description": "The installer supported operating system" + }, + "MinimumOSVersion": { + "type": [ "string", "null" ], + "pattern": "^(0|[1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])(\\.(0|[1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])){0,3}$", + "description": "The installer minimum operating system version" + }, + "Url": { + "type": [ "string", "null" ], + "pattern": "^([Hh][Tt][Tt][Pp][Ss]?)://.+$", + "maxLength": 2048, + "description": "Url type" + }, + "InstallerType": { + "type": [ "string", "null" ], + "enum": [ + "msix", + "msi", + "appx", + "exe", + "zip", + "inno", + "nullsoft", + "wix", + "burn", + "pwa", + "portable" + ], + "description": "Enumeration of supported installer types. InstallerType is required in either root level or individual Installer level" + }, + "NestedInstallerType": { + "type": [ "string", "null" ], + "enum": [ + "msix", + "msi", + "appx", + "exe", + "inno", + "nullsoft", + "wix", + "burn", + "portable" + ], + "description": "Enumeration of supported nested installer types contained inside an archive file" + }, + "NestedInstallerFiles": { + "type": [ "array", "null" ], + "items": { + "type": "object", + "title": "NestedInstallerFile", + "properties": { + "RelativeFilePath": { + "type": "string", + "minLength": 1, + "maxLength": 512, + "description": "The relative path to the nested installer file" + }, + "PortableCommandAlias": { + "type": [ "string", "null" ], + "minLength": 1, + "maxLength": 40, + "description": "The command alias to be used for calling the package. Only applies to the nested portable package" + } + }, + "required": [ "RelativeFilePath" ], + "description": "A nested installer file contained inside an archive" + }, + "maxItems": 1024, + "description": "List of nested installer files contained inside an archive" + }, + "Architecture": { + "type": "string", + "enum": [ + "x86", + "x64", + "arm", + "arm64", + "neutral" + ], + "description": "The installer target architecture" + }, + "Scope": { + "type": [ "string", "null" ], + "enum": [ + "user", + "machine" + ], + "description": "Scope indicates if the installer is per user or per machine" + }, + "InstallModes": { + "type": [ "array", "null" ], + "items": { + "title": "InstallModes", + "type": "string", + "enum": [ + "interactive", + "silent", + "silentWithProgress" + ] + }, + "maxItems": 3, + "uniqueItems": true, + "description": "List of supported installer modes" + }, + "InstallerSwitches": { + "type": "object", + "properties": { + "Silent": { + "type": [ "string", "null" ], + "minLength": 1, + "maxLength": 512, + "description": "Silent is the value that should be passed to the installer when user chooses a silent or quiet install" + }, + "SilentWithProgress": { + "type": [ "string", "null" ], + "minLength": 1, + "maxLength": 512, + "description": "SilentWithProgress is the value that should be passed to the installer when user chooses a non-interactive install" + }, + "Interactive": { + "type": [ "string", "null" ], + "minLength": 1, + "maxLength": 512, + "description": "Interactive is the value that should be passed to the installer when user chooses an interactive install" + }, + "InstallLocation": { + "type": [ "string", "null" ], + "minLength": 1, + "maxLength": 512, + "description": "InstallLocation is the value passed to the installer for custom install location. <INSTALLPATH> token can be included in the switch value so that winget will replace the token with user provided path" + }, + "Log": { + "type": [ "string", "null" ], + "minLength": 1, + "maxLength": 512, + "description": "Log is the value passed to the installer for custom log file path. <LOGPATH> token can be included in the switch value so that winget will replace the token with user provided path" + }, + "Upgrade": { + "type": [ "string", "null" ], + "minLength": 1, + "maxLength": 512, + "description": "Upgrade is the value that should be passed to the installer when user chooses an upgrade" + }, + "Custom": { + "type": [ "string", "null" ], + "minLength": 1, + "maxLength": 2048, + "description": "Custom switches will be passed directly to the installer by winget" + } + } + }, + "InstallerReturnCode": { + "type": "integer", + "format": "long", + "not": { + "enum": [ 0 ] + }, + "minimum": -2147483648, + "maximum": 4294967295, + "description": "An exit code that can be returned by the installer after execution" + }, + "InstallerSuccessCodes": { + "type": [ "array", "null" ], + "items": { + "$ref": "#/definitions/InstallerReturnCode" + }, + "maxItems": 16, + "uniqueItems": true, + "description": "List of additional non-zero installer success exit codes other than known default values by winget" + }, + "ExpectedReturnCodes": { + "type": [ "array", "null" ], + "items": { + "type": "object", + "title": "ExpectedReturnCode", + "properties": { + "InstallerReturnCode": { + "$ref": "#/definitions/InstallerReturnCode" + }, + "ReturnResponse": { + "type": "string", + "enum": [ + "packageInUse", + "installInProgress", + "fileInUse", + "missingDependency", + "diskFull", + "insufficientMemory", + "noNetwork", + "contactSupport", + "rebootRequiredToFinish", + "rebootRequiredForInstall", + "rebootInitiated", + "cancelledByUser", + "alreadyInstalled", + "downgrade", + "blockedByPolicy", + "custom" + ] + }, + "ReturnResponseUrl": { + "$ref": "#/definitions/Url", + "description": "The return response url to provide additional guidance for expected return codes" + } + } + }, + "maxItems": 128, + "description": "Installer exit codes for common errors" + }, + "UpgradeBehavior": { + "type": [ "string", "null" ], + "enum": [ + "install", + "uninstallPrevious" + ], + "description": "The upgrade method" + }, + "Commands": { + "type": [ "array", "null" ], + "items": { + "type": "string", + "minLength": 1, + "maxLength": 40 + }, + "maxItems": 16, + "uniqueItems": true, + "description": "List of commands or aliases to run the package" + }, + "Protocols": { + "type": [ "array", "null" ], + "items": { + "type": "string", + "maxLength": 2048 + }, + "maxItems": 16, + "uniqueItems": true, + "description": "List of protocols the package provides a handler for" + }, + "FileExtensions": { + "type": [ "array", "null" ], + "items": { + "type": "string", + "pattern": "^[^\\\\/:\\*\\?\"<>\\|\\x01-\\x1f]+$", + "maxLength": 64 + }, + "maxItems": 512, + "uniqueItems": true, + "description": "List of file extensions the package could support" + }, + "Dependencies": { + "type": [ "object", "null" ], + "properties": { + "WindowsFeatures": { + "type": [ "array", "null" ], + "items": { + "type": "string", + "minLength": 1, + "maxLength": 128 + }, + "maxItems": 16, + "uniqueItems": true, + "description": "List of Windows feature dependencies" + }, + "WindowsLibraries": { + "type": [ "array", "null" ], + "items": { + "type": "string", + "minLength": 1, + "maxLength": 128 + }, + "maxItems": 16, + "uniqueItems": true, + "description": "List of Windows library dependencies" + }, + "PackageDependencies": { + "type": [ "array", "null" ], + "items": { + "type": "object", + "properties": { + "PackageIdentifier": { + "$ref": "#/definitions/PackageIdentifier" + }, + "MinimumVersion": { + "$ref": "#/definitions/PackageVersion" + } + }, + "required": [ "PackageIdentifier" ] + }, + "maxItems": 16, + "uniqueItems": true, + "description": "List of package dependencies from current source" + }, + "ExternalDependencies": { + "type": [ "array", "null" ], + "items": { + "type": "string", + "minLength": 1, + "maxLength": 128 + }, + "maxItems": 16, + "uniqueItems": true, + "description": "List of external package dependencies" + } + } + }, + "PackageFamilyName": { + "type": [ "string", "null" ], + "pattern": "^[A-Za-z0-9][-\\.A-Za-z0-9]+_[A-Za-z0-9]{13}$", + "maxLength": 255, + "description": "PackageFamilyName for appx or msix installer. Could be used for correlation of packages across sources" + }, + "ProductCode": { + "type": [ "string", "null" ], + "minLength": 1, + "maxLength": 255, + "description": "ProductCode could be used for correlation of packages across sources" + }, + "Capabilities": { + "type": [ "array", "null" ], + "items": { + "type": "string", + "minLength": 1, + "maxLength": 40 + }, + "maxItems": 1000, + "uniqueItems": true, + "description": "List of appx or msix installer capabilities" + }, + "RestrictedCapabilities": { + "type": [ "array", "null" ], + "items": { + "type": "string", + "minLength": 1, + "maxLength": 40 + }, + "maxItems": 1000, + "uniqueItems": true, + "description": "List of appx or msix installer restricted capabilities" + }, + "Market": { + "type": "string", + "pattern": "^[A-Z]{2}$", + "description": "The installer target market" + }, + "MarketArray": { + "type": [ "array", "null" ], + "uniqueItems": true, + "maxItems": 256, + "items": { + "$ref": "#/definitions/Market" + }, + "description": "Array of markets" + }, + "Markets": { + "description": "The installer markets", + "type": [ "object", "null" ], + "oneOf": [ + { + "properties": { + "AllowedMarkets": { + "$ref": "#/definitions/MarketArray" + } + }, + "required": [ "AllowedMarkets" ] + }, + { + "properties": { + "ExcludedMarkets": { + "$ref": "#/definitions/MarketArray" + } + }, + "required": [ "ExcludedMarkets" ] + } + ] + }, + "InstallerAbortsTerminal": { + "type": [ "boolean", "null" ], + "description": "Indicates whether the installer will abort terminal. Default is false" + }, + "ReleaseDate": { + "type": [ "string", "null" ], + "format": "date", + "description": "The installer release date" + }, + "InstallLocationRequired": { + "type": [ "boolean", "null" ], + "description": "Indicates whether the installer requires an install location provided" + }, + "RequireExplicitUpgrade": { + "type": [ "boolean", "null" ], + "description": "Indicates whether the installer should be pinned by default from upgrade" + }, + "DisplayInstallWarnings": { + "type": [ "boolean", "null" ], + "description": "Indicates whether winget should display a warning message if the install or upgrade is known to interfere with running applications." + }, + "UnsupportedOSArchitectures": { + "type": [ "array", "null" ], + "uniqueItems": true, + "items": { + "type": "string", + "title": "UnsupportedOSArchitecture", + "enum": [ + "x86", + "x64", + "arm", + "arm64" + ] + }, + "description": "List of OS architectures the installer does not support" + }, + "UnsupportedArguments": { + "type": [ "array", "null" ], + "uniqueItems": true, + "items": { + "type": "string", + "title": "UnsupportedArgument", + "enum": [ + "log", + "location" + ] + }, + "description": "List of winget arguments the installer does not support" + }, + "AppsAndFeaturesEntry": { + "type": "object", + "properties": { + "DisplayName": { + "type": [ "string", "null" ], + "minLength": 1, + "maxLength": 256, + "description": "The DisplayName registry value" + }, + "Publisher": { + "type": [ "string", "null" ], + "minLength": 1, + "maxLength": 256, + "description": "The Publisher registry value" + }, + "DisplayVersion": { + "type": [ "string", "null" ], + "minLength": 1, + "maxLength": 128, + "description": "The DisplayVersion registry value" + }, + "ProductCode": { + "$ref": "#/definitions/ProductCode" + }, + "UpgradeCode": { + "$ref": "#/definitions/ProductCode" + }, + "InstallerType": { + "$ref": "#/definitions/InstallerType" + } + }, + "description": "Various key values under installer's ARP entry" + }, + "AppsAndFeaturesEntries": { + "type": [ "array", "null" ], + "uniqueItems": true, + "maxItems": 128, + "items": { + "$ref": "#/definitions/AppsAndFeaturesEntry" + }, + "description": "List of ARP entries." + }, + "ElevationRequirement": { + "type": [ "string", "null" ], + "enum": [ + "elevationRequired", + "elevationProhibited", + "elevatesSelf" + ], + "description": "The installer's elevation requirement" + }, + "InstallationMetadata": { + "type": "object", + "title": "InstallationMetadata", + "properties": { + "DefaultInstallLocation": { + "type": [ "string", "null" ], + "minLength": 1, + "maxLength": 2048, + "description": "Represents the default installed package location. Used for deeper installation detection." + }, + "Files": { + "type": [ "array", "null" ], + "uniqueItems": true, + "maxItems": 2048, + "items": { + "type": "object", + "title": "InstalledFile", + "properties": { + "RelativeFilePath": { + "type": "string", + "minLength": 1, + "maxLength": 2048, + "description": "The relative path to the installed file." + }, + "FileSha256": { + "type": [ "string", "null" ], + "pattern": "^[A-Fa-f0-9]{64}$", + "description": "Optional Sha256 of the installed file." + }, + "FileType": { + "type": [ "string", "null" ], + "enum": [ + "launch", + "uninstall", + "other" + ], + "description": "The optional installed file type. If not specified, the file is treated as other." + }, + "InvocationParameter": { + "type": [ "string", "null" ], + "minLength": 1, + "maxLength": 2048, + "description": "Optional parameter for invocable files." + }, + "DisplayName": { + "type": [ "string", "null" ], + "minLength": 1, + "maxLength": 256, + "description": "Optional display name for invocable files." + } + }, + "required": [ "RelativeFilePath" ], + "description": "Represents an installed file." + }, + "description": "List of installed files." + } + }, + "description": "Details about the installation. Used for deeper installation detection." + }, + "Installer": { + "type": "object", + "properties": { + "InstallerLocale": { + "$ref": "#/definitions/Locale" + }, + "Platform": { + "$ref": "#/definitions/Platform" + }, + "MinimumOSVersion": { + "$ref": "#/definitions/MinimumOSVersion" + }, + "Architecture": { + "$ref": "#/definitions/Architecture" + }, + "InstallerType": { + "$ref": "#/definitions/InstallerType" + }, + "NestedInstallerType": { + "$ref": "#/definitions/NestedInstallerType" + }, + "NestedInstallerFiles": { + "$ref": "#/definitions/NestedInstallerFiles" + }, + "Scope": { + "$ref": "#/definitions/Scope" + }, + "InstallerUrl": { + "type": "string", + "pattern": "^([Hh][Tt][Tt][Pp][Ss]?)://.+$", + "maxLength": 2048, + "description": "The installer Url" + }, + "InstallerSha256": { + "type": "string", + "pattern": "^[A-Fa-f0-9]{64}$", + "description": "Sha256 is required. Sha256 of the installer" + }, + "SignatureSha256": { + "type": [ "string", "null" ], + "pattern": "^[A-Fa-f0-9]{64}$", + "description": "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" + }, + "InstallModes": { + "$ref": "#/definitions/InstallModes" + }, + "InstallerSwitches": { + "$ref": "#/definitions/InstallerSwitches" + }, + "InstallerSuccessCodes": { + "$ref": "#/definitions/InstallerSuccessCodes" + }, + "ExpectedReturnCodes": { + "$ref": "#/definitions/ExpectedReturnCodes" + }, + "UpgradeBehavior": { + "$ref": "#/definitions/UpgradeBehavior" + }, + "Commands": { + "$ref": "#/definitions/Commands" + }, + "Protocols": { + "$ref": "#/definitions/Protocols" + }, + "FileExtensions": { + "$ref": "#/definitions/FileExtensions" + }, + "Dependencies": { + "$ref": "#/definitions/Dependencies" + }, + "PackageFamilyName": { + "$ref": "#/definitions/PackageFamilyName" + }, + "ProductCode": { + "$ref": "#/definitions/ProductCode" + }, + "Capabilities": { + "$ref": "#/definitions/Capabilities" + }, + "RestrictedCapabilities": { + "$ref": "#/definitions/RestrictedCapabilities" + }, + "Markets": { + "$ref": "#/definitions/Markets" + }, + "InstallerAbortsTerminal": { + "$ref": "#/definitions/InstallerAbortsTerminal" + }, + "ReleaseDate": { + "$ref": "#/definitions/ReleaseDate" + }, + "InstallLocationRequired": { + "$ref": "#/definitions/InstallLocationRequired" + }, + "RequireExplicitUpgrade": { + "$ref": "#/definitions/RequireExplicitUpgrade" + }, + "DisplayInstallWarnings": { + "$ref": "#/definitions/DisplayInstallWarnings" + }, + "UnsupportedOSArchitectures": { + "$ref": "#/definitions/UnsupportedOSArchitectures" + }, + "UnsupportedArguments": { + "$ref": "#/definitions/UnsupportedArguments" + }, + "AppsAndFeaturesEntries": { + "$ref": "#/definitions/AppsAndFeaturesEntries" + }, + "ElevationRequirement": { + "$ref": "#/definitions/ElevationRequirement" + }, + "InstallationMetadata": { + "$ref": "#/definitions/InstallationMetadata" + } + }, + "required": [ + "Architecture", + "InstallerUrl", + "InstallerSha256" + ] + } + }, + "type": "object", + "properties": { + "PackageIdentifier": { + "$ref": "#/definitions/PackageIdentifier" + }, + "PackageVersion": { + "$ref": "#/definitions/PackageVersion" + }, + "Channel": { + "$ref": "#/definitions/Channel" + }, + "InstallerLocale": { + "$ref": "#/definitions/Locale" + }, + "Platform": { + "$ref": "#/definitions/Platform" + }, + "MinimumOSVersion": { + "$ref": "#/definitions/MinimumOSVersion" + }, + "InstallerType": { + "$ref": "#/definitions/InstallerType" + }, + "NestedInstallerType": { + "$ref": "#/definitions/NestedInstallerType" + }, + "NestedInstallerFiles": { + "$ref": "#/definitions/NestedInstallerFiles" + }, + "Scope": { + "$ref": "#/definitions/Scope" + }, + "InstallModes": { + "$ref": "#/definitions/InstallModes" + }, + "InstallerSwitches": { + "$ref": "#/definitions/InstallerSwitches" + }, + "InstallerSuccessCodes": { + "$ref": "#/definitions/InstallerSuccessCodes" + }, + "ExpectedReturnCodes": { + "$ref": "#/definitions/ExpectedReturnCodes" + }, + "UpgradeBehavior": { + "$ref": "#/definitions/UpgradeBehavior" + }, + "Commands": { + "$ref": "#/definitions/Commands" + }, + "Protocols": { + "$ref": "#/definitions/Protocols" + }, + "FileExtensions": { + "$ref": "#/definitions/FileExtensions" + }, + "Dependencies": { + "$ref": "#/definitions/Dependencies" + }, + "PackageFamilyName": { + "$ref": "#/definitions/PackageFamilyName" + }, + "ProductCode": { + "$ref": "#/definitions/ProductCode" + }, + "Capabilities": { + "$ref": "#/definitions/Capabilities" + }, + "RestrictedCapabilities": { + "$ref": "#/definitions/RestrictedCapabilities" + }, + "Markets": { + "$ref": "#/definitions/Markets" + }, + "InstallerAbortsTerminal": { + "$ref": "#/definitions/InstallerAbortsTerminal" + }, + "ReleaseDate": { + "$ref": "#/definitions/ReleaseDate" + }, + "InstallLocationRequired": { + "$ref": "#/definitions/InstallLocationRequired" + }, + "RequireExplicitUpgrade": { + "$ref": "#/definitions/RequireExplicitUpgrade" + }, + "DisplayInstallWarnings": { + "$ref": "#/definitions/DisplayInstallWarnings" + }, + "UnsupportedOSArchitectures": { + "$ref": "#/definitions/UnsupportedOSArchitectures" + }, + "UnsupportedArguments": { + "$ref": "#/definitions/UnsupportedArguments" + }, + "AppsAndFeaturesEntries": { + "$ref": "#/definitions/AppsAndFeaturesEntries" + }, + "ElevationRequirement": { + "$ref": "#/definitions/ElevationRequirement" + }, + "InstallationMetadata": { + "$ref": "#/definitions/InstallationMetadata" + }, + "Installers": { + "type": "array", + "items": { + "$ref": "#/definitions/Installer" + }, + "minItems": 1, + "maxItems": 1024 + }, + "ManifestType": { + "type": "string", + "default": "installer", + "const": "installer", + "description": "The manifest type" + }, + "ManifestVersion": { + "type": "string", + "default": "1.4.0", + "pattern": "^(0|[1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])(\\.(0|[1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])){2}$", + "description": "The manifest syntax version" + } + }, + "required": [ + "PackageIdentifier", + "PackageVersion", + "Installers", + "ManifestType", + "ManifestVersion" + ] +}+ \ No newline at end of file diff --git a/schemas/JSON/manifests/v1.4.0/manifest.locale.1.4.0.json b/schemas/JSON/manifests/v1.4.0/manifest.locale.1.4.0.json @@ -0,0 +1,204 @@ +{ + "$id": "https://aka.ms/winget-manifest.locale.1.4.0.schema.json", + "$schema": "http://json-schema.org/draft-07/schema#", + "description": "A representation of a multiple-file manifest representing app metadata in other locale in the OWC. v1.4.0", + "definitions": { + "Url": { + "type": [ "string", "null" ], + "pattern": "^([Hh][Tt][Tt][Pp][Ss]?)://.+$", + "maxLength": 2048, + "description": "Optional Url type" + }, + "Tag": { + "type": [ "string", "null" ], + "minLength": 1, + "maxLength": 40, + "description": "Package tag" + }, + "Agreement": { + "type": "object", + "properties": { + "AgreementLabel": { + "type": [ "string", "null" ], + "minLength": 1, + "maxLength": 100, + "description": "The label of the Agreement. i.e. EULA, AgeRating, etc. This field should be localized. Either Agreement or AgreementUrl is required. When we show the agreements, we would Bold the AgreementLabel" + }, + "Agreement": { + "type": [ "string", "null" ], + "minLength": 1, + "maxLength": 10000, + "description": "The agreement text content." + }, + "AgreementUrl": { + "$ref": "#/definitions/Url", + "description": "The agreement URL." + } + } + }, + "Documentation": { + "type": "object", + "properties": { + "DocumentLabel": { + "type": [ "string", "null" ], + "minLength": 1, + "maxLength": 100, + "description": "The label of the documentation for providing software guides such as manuals and troubleshooting URLs." + }, + "DocumentUrl": { + "$ref": "#/definitions/Url", + "description": "The documentation URL." + } + } + } + }, + "type": "object", + "properties": { + "PackageIdentifier": { + "type": "string", + "pattern": "^[^\\.\\s\\\\/:\\*\\?\"<>\\|\\x01-\\x1f]{1,32}(\\.[^\\.\\s\\\\/:\\*\\?\"<>\\|\\x01-\\x1f]{1,32}){1,3}$", + "maxLength": 128, + "description": "The package unique identifier" + }, + "PackageVersion": { + "type": "string", + "pattern": "^[^\\\\/:\\*\\?\"<>\\|\\x01-\\x1f]+$", + "maxLength": 128, + "description": "The package version" + }, + "PackageLocale": { + "type": "string", + "pattern": "^([a-zA-Z]{2,3}|[iI]-[a-zA-Z]+|[xX]-[a-zA-Z]{1,8})(-[a-zA-Z]{1,8})*$", + "maxLength": 20, + "description": "The package meta-data locale" + }, + "Publisher": { + "type": [ "string", "null" ], + "minLength": 2, + "maxLength": 256, + "description": "The publisher name" + }, + "PublisherUrl": { + "$ref": "#/definitions/Url", + "description": "The publisher home page" + }, + "PublisherSupportUrl": { + "$ref": "#/definitions/Url", + "description": "The publisher support page" + }, + "PrivacyUrl": { + "$ref": "#/definitions/Url", + "description": "The publisher privacy page or the package privacy page" + }, + "Author": { + "type": [ "string", "null" ], + "minLength": 2, + "maxLength": 256, + "description": "The package author" + }, + "PackageName": { + "type": [ "string", "null" ], + "minLength": 2, + "maxLength": 256, + "description": "The package name" + }, + "PackageUrl": { + "$ref": "#/definitions/Url", + "description": "The package home page" + }, + "License": { + "type": [ "string", "null" ], + "minLength": 3, + "maxLength": 512, + "description": "The package license" + }, + "LicenseUrl": { + "$ref": "#/definitions/Url", + "description": "The license page" + }, + "Copyright": { + "type": [ "string", "null" ], + "minLength": 3, + "maxLength": 512, + "description": "The package copyright" + }, + "CopyrightUrl": { + "$ref": "#/definitions/Url", + "description": "The package copyright page" + }, + "ShortDescription": { + "type": [ "string", "null" ], + "minLength": 3, + "maxLength": 256, + "description": "The short package description" + }, + "Description": { + "type": [ "string", "null" ], + "minLength": 3, + "maxLength": 10000, + "description": "The full package description" + }, + "Tags": { + "type": [ "array", "null" ], + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 16, + "uniqueItems": true, + "description": "List of additional package search terms" + }, + "Agreements": { + "type": [ "array", "null" ], + "items": { + "$ref": "#/definitions/Agreement" + }, + "maxItems": 128 + }, + "ReleaseNotes": { + "type": [ "string", "null" ], + "minLength": 1, + "maxLength": 10000, + "description": "The package release notes" + }, + "ReleaseNotesUrl": { + "$ref": "#/definitions/Url", + "description": "The package release notes url" + }, + "PurchaseUrl": { + "$ref": "#/definitions/Url", + "description": "The purchase url for acquiring entitlement for the package." + }, + "InstallationNotes": { + "type": [ "string", "null" ], + "minLength": 1, + "maxLength": 256, + "description": "The notes displayed to the user upon completion of a package installation." + }, + "Documentations": { + "type": [ "array", "null" ], + "items": { + "$ref": "#/definitions/Documentation" + }, + "maxItems": 256 + }, + "ManifestType": { + "type": "string", + "default": "locale", + "const": "locale", + "description": "The manifest type" + }, + "ManifestVersion": { + "type": "string", + "default": "1.4.0", + "pattern": "^(0|[1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])(\\.(0|[1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])){2}$", + "description": "The manifest syntax version" + } + }, + "required": [ + "PackageIdentifier", + "PackageVersion", + "PackageLocale", + "ManifestType", + "ManifestVersion" + ] +}+ \ No newline at end of file diff --git a/schemas/JSON/manifests/v1.4.0/manifest.singleton.1.4.0.json b/schemas/JSON/manifests/v1.4.0/manifest.singleton.1.4.0.json @@ -0,0 +1,993 @@ +{ + "$id": "https://aka.ms/winget-manifest.singleton.1.4.0.schema.json", + "$schema": "http://json-schema.org/draft-07/schema#", + "description": "A representation of a single-file manifest representing an app in the OWC. v1.4.0", + "definitions": { + "PackageIdentifier": { + "type": "string", + "pattern": "^[^\\.\\s\\\\/:\\*\\?\"<>\\|\\x01-\\x1f]{1,32}(\\.[^\\.\\s\\\\/:\\*\\?\"<>\\|\\x01-\\x1f]{1,32}){1,3}$", + "maxLength": 128, + "description": "The package unique identifier" + }, + "PackageVersion": { + "type": "string", + "pattern": "^[^\\\\/:\\*\\?\"<>\\|\\x01-\\x1f]+$", + "maxLength": 128, + "description": "The package version" + }, + "Locale": { + "type": [ "string", "null" ], + "pattern": "^([a-zA-Z]{2,3}|[iI]-[a-zA-Z]+|[xX]-[a-zA-Z]{1,8})(-[a-zA-Z]{1,8})*$", + "maxLength": 20, + "description": "The package meta-data locale" + }, + "Url": { + "type": [ "string", "null" ], + "pattern": "^([Hh][Tt][Tt][Pp][Ss]?)://.+$", + "maxLength": 2048, + "description": "Optional Url type" + }, + "Tag": { + "type": [ "string", "null" ], + "minLength": 1, + "maxLength": 40, + "description": "Package moniker or tag" + }, + "Agreement": { + "type": "object", + "properties": { + "AgreementLabel": { + "type": [ "string", "null" ], + "minLength": 1, + "maxLength": 100, + "description": "The label of the Agreement. i.e. EULA, AgeRating, etc. This field should be localized. Either Agreement or AgreementUrl is required. When we show the agreements, we would Bold the AgreementLabel" + }, + "Agreement": { + "type": [ "string", "null" ], + "minLength": 1, + "maxLength": 10000, + "description": "The agreement text content." + }, + "AgreementUrl": { + "$ref": "#/definitions/Url", + "description": "The agreement URL." + } + } + }, + "Documentation": { + "type": "object", + "properties": { + "DocumentLabel": { + "type": [ "string", "null" ], + "minLength": 1, + "maxLength": 100, + "description": "The label of the documentation for providing software guides such as manuals and troubleshooting URLs." + }, + "DocumentUrl": { + "$ref": "#/definitions/Url", + "description": "The documentation URL." + } + } + }, + "Channel": { + "type": [ "string", "null" ], + "minLength": 1, + "maxLength": 16, + "description": "The distribution channel" + }, + "Platform": { + "type": [ "array", "null" ], + "items": { + "title": "Platform", + "type": "string", + "enum": [ + "Windows.Desktop", + "Windows.Universal" + ] + }, + "maxItems": 2, + "uniqueItems": true, + "description": "The installer supported operating system" + }, + "MinimumOSVersion": { + "type": [ "string", "null" ], + "pattern": "^(0|[1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])(\\.(0|[1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])){0,3}$", + "description": "The installer minimum operating system version" + }, + "InstallerType": { + "type": [ "string", "null" ], + "enum": [ + "msix", + "msi", + "appx", + "exe", + "zip", + "inno", + "nullsoft", + "wix", + "burn", + "pwa", + "portable" + ], + "description": "Enumeration of supported installer types. InstallerType is required in either root level or individual Installer level" + }, + "NestedInstallerType": { + "type": [ "string", "null" ], + "enum": [ + "msix", + "msi", + "appx", + "exe", + "inno", + "nullsoft", + "wix", + "burn", + "portable" + ], + "description": "Enumeration of supported nested installer types contained inside an archive file" + }, + "NestedInstallerFiles": { + "type": [ "array", "null" ], + "items": { + "type": "object", + "title": "NestedInstallerFile", + "properties": { + "RelativeFilePath": { + "type": "string", + "minLength": 1, + "maxLength": 512, + "description": "The relative path to the nested installer file" + }, + "PortableCommandAlias": { + "type": [ "string", "null" ], + "minLength": 1, + "maxLength": 40, + "description": "The command alias to be used for calling the package. Only applies to the nested portable package" + } + }, + "required": [ "RelativeFilePath" ], + "description": "A nested installer file contained inside an archive" + }, + "maxItems": 1024, + "description": "List of nested installer files contained inside an archive" + }, + "Architecture": { + "type": "string", + "enum": [ + "x86", + "x64", + "arm", + "arm64", + "neutral" + ], + "description": "The installer target architecture" + }, + "Scope": { + "type": [ "string", "null" ], + "enum": [ + "user", + "machine" + ], + "description": "Scope indicates if the installer is per user or per machine" + }, + "InstallModes": { + "type": [ "array", "null" ], + "items": { + "title": "InstallModes", + "type": "string", + "enum": [ + "interactive", + "silent", + "silentWithProgress" + ] + }, + "maxItems": 3, + "uniqueItems": true, + "description": "List of supported installer modes" + }, + "InstallerSwitches": { + "type": "object", + "properties": { + "Silent": { + "type": [ "string", "null" ], + "minLength": 1, + "maxLength": 512, + "description": "Silent is the value that should be passed to the installer when user chooses a silent or quiet install" + }, + "SilentWithProgress": { + "type": [ "string", "null" ], + "minLength": 1, + "maxLength": 512, + "description": "SilentWithProgress is the value that should be passed to the installer when user chooses a non-interactive install" + }, + "Interactive": { + "type": [ "string", "null" ], + "minLength": 1, + "maxLength": 512, + "description": "Interactive is the value that should be passed to the installer when user chooses an interactive install" + }, + "InstallLocation": { + "type": [ "string", "null" ], + "minLength": 1, + "maxLength": 512, + "description": "InstallLocation is the value passed to the installer for custom install location. <INSTALLPATH> token can be included in the switch value so that winget will replace the token with user provided path" + }, + "Log": { + "type": [ "string", "null" ], + "minLength": 1, + "maxLength": 512, + "description": "Log is the value passed to the installer for custom log file path. <LOGPATH> token can be included in the switch value so that winget will replace the token with user provided path" + }, + "Upgrade": { + "type": [ "string", "null" ], + "minLength": 1, + "maxLength": 512, + "description": "Upgrade is the value that should be passed to the installer when user chooses an upgrade" + }, + "Custom": { + "type": [ "string", "null" ], + "minLength": 1, + "maxLength": 2048, + "description": "Custom switches will be passed directly to the installer by winget" + } + } + }, + "InstallerReturnCode": { + "type": "integer", + "format": "long", + "not": { + "enum": [ 0 ] + }, + "minimum": -2147483648, + "maximum": 4294967295, + "description": "An exit code that can be returned by the installer after execution" + }, + "InstallerSuccessCodes": { + "type": [ "array", "null" ], + "items": { + "$ref": "#/definitions/InstallerReturnCode" + }, + "maxItems": 16, + "uniqueItems": true, + "description": "List of additional non-zero installer success exit codes other than known default values by winget" + }, + "ExpectedReturnCodes": { + "type": [ "array", "null" ], + "items": { + "type": "object", + "title": "ExpectedReturnCode", + "properties": { + "InstallerReturnCode": { + "$ref": "#/definitions/InstallerReturnCode" + }, + "ReturnResponse": { + "type": "string", + "enum": [ + "packageInUse", + "installInProgress", + "fileInUse", + "missingDependency", + "diskFull", + "insufficientMemory", + "noNetwork", + "contactSupport", + "rebootRequiredToFinish", + "rebootRequiredForInstall", + "rebootInitiated", + "cancelledByUser", + "alreadyInstalled", + "downgrade", + "blockedByPolicy", + "custom" + ] + }, + "ReturnResponseUrl": { + "$ref": "#/definitions/Url", + "description": "The return response url to provide additional guidance for expected return codes" + } + } + }, + "maxItems": 128, + "description": "Installer exit codes for common errors" + }, + "UpgradeBehavior": { + "type": [ "string", "null" ], + "enum": [ + "install", + "uninstallPrevious" + ], + "description": "The upgrade method" + }, + "Commands": { + "type": [ "array", "null" ], + "items": { + "type": "string", + "minLength": 1, + "maxLength": 40 + }, + "maxItems": 16, + "uniqueItems": true, + "description": "List of commands or aliases to run the package" + }, + "Protocols": { + "type": [ "array", "null" ], + "items": { + "type": "string", + "maxLength": 2048 + }, + "maxItems": 16, + "uniqueItems": true, + "description": "List of protocols the package provides a handler for" + }, + "FileExtensions": { + "type": [ "array", "null" ], + "items": { + "type": "string", + "pattern": "^[^\\\\/:\\*\\?\"<>\\|\\x01-\\x1f]+$", + "maxLength": 64 + }, + "maxItems": 512, + "uniqueItems": true, + "description": "List of file extensions the package could support" + }, + "Dependencies": { + "type": [ "object", "null" ], + "properties": { + "WindowsFeatures": { + "type": [ "array", "null" ], + "items": { + "type": "string", + "minLength": 1, + "maxLength": 128 + }, + "maxItems": 16, + "uniqueItems": true, + "description": "List of Windows feature dependencies" + }, + "WindowsLibraries": { + "type": [ "array", "null" ], + "items": { + "type": "string", + "minLength": 1, + "maxLength": 128 + }, + "maxItems": 16, + "uniqueItems": true, + "description": "List of Windows library dependencies" + }, + "PackageDependencies": { + "type": [ "array", "null" ], + "items": { + "type": "object", + "properties": { + "PackageIdentifier": { + "$ref": "#/definitions/PackageIdentifier" + }, + "MinimumVersion": { + "$ref": "#/definitions/PackageVersion" + } + }, + "required": [ "PackageIdentifier" ] + }, + "maxItems": 16, + "description": "List of package dependencies from current source" + }, + "ExternalDependencies": { + "type": [ "array", "null" ], + "items": { + "type": "string", + "minLength": 1, + "maxLength": 128 + }, + "maxItems": 16, + "uniqueItems": true, + "description": "List of external package dependencies" + } + } + }, + "PackageFamilyName": { + "type": [ "string", "null" ], + "pattern": "^[A-Za-z0-9][-\\.A-Za-z0-9]+_[A-Za-z0-9]{13}$", + "maxLength": 255, + "description": "PackageFamilyName for appx or msix installer. Could be used for correlation of packages across sources" + }, + "ProductCode": { + "type": [ "string", "null" ], + "minLength": 1, + "maxLength": 255, + "description": "ProductCode could be used for correlation of packages across sources" + }, + "Capabilities": { + "type": [ "array", "null" ], + "items": { + "type": "string", + "minLength": 1, + "maxLength": 40 + }, + "maxItems": 1000, + "uniqueItems": true, + "description": "List of appx or msix installer capabilities" + }, + "RestrictedCapabilities": { + "type": [ "array", "null" ], + "items": { + "type": "string", + "minLength": 1, + "maxLength": 40 + }, + "maxItems": 1000, + "uniqueItems": true, + "description": "List of appx or msix installer restricted capabilities" + }, + "Market": { + "type": "string", + "pattern": "^[A-Z]{2}$", + "description": "The installer target market" + }, + "MarketArray": { + "type": [ "array", "null" ], + "uniqueItems": true, + "maxItems": 256, + "items": { + "$ref": "#/definitions/Market" + }, + "description": "Array of markets" + }, + "Markets": { + "description": "The installer markets", + "type": [ "object", "null" ], + "oneOf": [ + { + "properties": { + "AllowedMarkets": { + "$ref": "#/definitions/MarketArray" + } + }, + "required": [ "AllowedMarkets" ] + }, + { + "properties": { + "ExcludedMarkets": { + "$ref": "#/definitions/MarketArray" + } + }, + "required": [ "ExcludedMarkets" ] + } + ] + }, + "InstallerAbortsTerminal": { + "type": [ "boolean", "null" ], + "description": "Indicates whether the installer will abort terminal. Default is false" + }, + "ReleaseDate": { + "type": [ "string", "null" ], + "format": "date", + "description": "The installer release date" + }, + "InstallLocationRequired": { + "type": [ "boolean", "null" ], + "description": "Indicates whether the installer requires an install location provided" + }, + "RequireExplicitUpgrade": { + "type": [ "boolean", "null" ], + "description": "Indicates whether the installer should be pinned by default from upgrade" + }, + "DisplayInstallWarnings": { + "type": [ "boolean", "null" ], + "description": "Indicates whether winget should display a warning message if the install or upgrade is known to interfere with running applications." + }, + "UnsupportedOSArchitectures": { + "type": [ "array", "null" ], + "uniqueItems": true, + "items": { + "type": "string", + "title": "UnsupportedOSArchitecture", + "enum": [ + "x86", + "x64", + "arm", + "arm64" + ] + }, + "description": "List of OS architectures the installer does not support" + }, + "UnsupportedArguments": { + "type": [ "array", "null" ], + "uniqueItems": true, + "items": { + "type": "string", + "title": "UnsupportedArgument", + "enum": [ + "log", + "location" + ] + }, + "description": "List of winget arguments the installer does not support" + }, + "AppsAndFeaturesEntry": { + "type": "object", + "properties": { + "DisplayName": { + "type": [ "string", "null" ], + "minLength": 1, + "maxLength": 256, + "description": "The DisplayName registry value" + }, + "Publisher": { + "type": [ "string", "null" ], + "minLength": 1, + "maxLength": 256, + "description": "The Publisher registry value" + }, + "DisplayVersion": { + "type": [ "string", "null" ], + "minLength": 1, + "maxLength": 128, + "description": "The DisplayVersion registry value" + }, + "ProductCode": { + "$ref": "#/definitions/ProductCode" + }, + "UpgradeCode": { + "$ref": "#/definitions/ProductCode" + }, + "InstallerType": { + "$ref": "#/definitions/InstallerType" + } + }, + "description": "Various key values under installer's ARP entry" + }, + "AppsAndFeaturesEntries": { + "type": [ "array", "null" ], + "uniqueItems": true, + "maxItems": 128, + "items": { + "$ref": "#/definitions/AppsAndFeaturesEntry" + }, + "description": "List of ARP entries." + }, + "ElevationRequirement": { + "type": [ "string", "null" ], + "enum": [ + "elevationRequired", + "elevationProhibited", + "elevatesSelf" + ], + "description": "The installer's elevation requirement" + }, + "InstallationMetadata": { + "type": "object", + "title": "InstallationMetadata", + "properties": { + "DefaultInstallLocation": { + "type": [ "string", "null" ], + "minLength": 1, + "maxLength": 2048, + "description": "Represents the default installed package location. Used for deeper installation detection." + }, + "Files": { + "type": [ "array", "null" ], + "uniqueItems": true, + "maxItems": 2048, + "items": { + "type": "object", + "title": "InstalledFile", + "properties": { + "RelativeFilePath": { + "type": "string", + "minLength": 1, + "maxLength": 2048, + "description": "The relative path to the installed file." + }, + "FileSha256": { + "type": [ "string", "null" ], + "pattern": "^[A-Fa-f0-9]{64}$", + "description": "Optional Sha256 of the installed file." + }, + "FileType": { + "type": [ "string", "null" ], + "enum": [ + "launch", + "uninstall", + "other" + ], + "description": "The optional installed file type. If not specified, the file is treated as other." + }, + "InvocationParameter": { + "type": [ "string", "null" ], + "minLength": 1, + "maxLength": 2048, + "description": "Optional parameter for invocable files." + }, + "DisplayName": { + "type": [ "string", "null" ], + "minLength": 1, + "maxLength": 256, + "description": "Optional display name for invocable files." + } + }, + "required": [ "RelativeFilePath" ], + "description": "Represents an installed file." + }, + "description": "List of installed files." + } + }, + "description": "Details about the installation. Used for deeper installation detection." + }, + "Installer": { + "type": "object", + "properties": { + "InstallerLocale": { + "$ref": "#/definitions/Locale" + }, + "Platform": { + "$ref": "#/definitions/Platform" + }, + "MinimumOSVersion": { + "$ref": "#/definitions/MinimumOSVersion" + }, + "Architecture": { + "$ref": "#/definitions/Architecture" + }, + "InstallerType": { + "$ref": "#/definitions/InstallerType" + }, + "NestedInstallerType": { + "$ref": "#/definitions/NestedInstallerType" + }, + "NestedInstallerFiles": { + "$ref": "#/definitions/NestedInstallerFiles" + }, + "Scope": { + "$ref": "#/definitions/Scope" + }, + "InstallerUrl": { + "type": "string", + "pattern": "^([Hh][Tt][Tt][Pp][Ss]?)://.+$", + "maxLength": 2048, + "description": "The installer Url" + }, + "InstallerSha256": { + "type": "string", + "pattern": "^[A-Fa-f0-9]{64}$", + "description": "Sha256 is required. Sha256 of the installer" + }, + "SignatureSha256": { + "type": [ "string", "null" ], + "pattern": "^[A-Fa-f0-9]{64}$", + "description": "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" + }, + "InstallModes": { + "$ref": "#/definitions/InstallModes" + }, + "InstallerSwitches": { + "$ref": "#/definitions/InstallerSwitches" + }, + "InstallerSuccessCodes": { + "$ref": "#/definitions/InstallerSuccessCodes" + }, + "ExpectedReturnCodes": { + "$ref": "#/definitions/ExpectedReturnCodes" + }, + "UpgradeBehavior": { + "$ref": "#/definitions/UpgradeBehavior" + }, + "Commands": { + "$ref": "#/definitions/Commands" + }, + "Protocols": { + "$ref": "#/definitions/Protocols" + }, + "FileExtensions": { + "$ref": "#/definitions/FileExtensions" + }, + "Dependencies": { + "$ref": "#/definitions/Dependencies" + }, + "PackageFamilyName": { + "$ref": "#/definitions/PackageFamilyName" + }, + "ProductCode": { + "$ref": "#/definitions/ProductCode" + }, + "Capabilities": { + "$ref": "#/definitions/Capabilities" + }, + "RestrictedCapabilities": { + "$ref": "#/definitions/RestrictedCapabilities" + }, + "Markets": { + "$ref": "#/definitions/Markets" + }, + "InstallerAbortsTerminal": { + "$ref": "#/definitions/InstallerAbortsTerminal" + }, + "ReleaseDate": { + "$ref": "#/definitions/ReleaseDate" + }, + "InstallLocationRequired": { + "$ref": "#/definitions/InstallLocationRequired" + }, + "RequireExplicitUpgrade": { + "$ref": "#/definitions/RequireExplicitUpgrade" + }, + "DisplayInstallWarnings": { + "$ref": "#/definitions/DisplayInstallWarnings" + }, + "UnsupportedOSArchitectures": { + "$ref": "#/definitions/UnsupportedOSArchitectures" + }, + "UnsupportedArguments": { + "$ref": "#/definitions/UnsupportedArguments" + }, + "AppsAndFeaturesEntries": { + "$ref": "#/definitions/AppsAndFeaturesEntries" + }, + "ElevationRequirement": { + "$ref": "#/definitions/ElevationRequirement" + }, + "InstallationMetadata": { + "$ref": "#/definitions/InstallationMetadata" + } + }, + "required": [ + "Architecture", + "InstallerUrl", + "InstallerSha256" + ] + } + }, + "type": "object", + "properties": { + "PackageIdentifier": { + "$ref": "#/definitions/PackageIdentifier" + }, + "PackageVersion": { + "$ref": "#/definitions/PackageVersion" + }, + "PackageLocale": { + "$ref": "#/definitions/Locale" + }, + "Publisher": { + "type": "string", + "minLength": 2, + "maxLength": 256, + "description": "The publisher name" + }, + "PublisherUrl": { + "$ref": "#/definitions/Url", + "description": "The publisher home page" + }, + "PublisherSupportUrl": { + "$ref": "#/definitions/Url", + "description": "The publisher support page" + }, + "PrivacyUrl": { + "$ref": "#/definitions/Url", + "description": "The publisher privacy page or the package privacy page" + }, + "Author": { + "type": [ "string", "null" ], + "minLength": 2, + "maxLength": 256, + "description": "The package author" + }, + "PackageName": { + "type": "string", + "minLength": 2, + "maxLength": 256, + "description": "The package name" + }, + "PackageUrl": { + "$ref": "#/definitions/Url", + "description": "The package home page" + }, + "License": { + "type": "string", + "minLength": 3, + "maxLength": 512, + "description": "The package license" + }, + "LicenseUrl": { + "$ref": "#/definitions/Url", + "description": "The license page" + }, + "Copyright": { + "type": [ "string", "null" ], + "minLength": 3, + "maxLength": 512, + "description": "The package copyright" + }, + "CopyrightUrl": { + "$ref": "#/definitions/Url", + "description": "The package copyright page" + }, + "ShortDescription": { + "type": "string", + "minLength": 3, + "maxLength": 256, + "description": "The short package description" + }, + "Description": { + "type": [ "string", "null" ], + "minLength": 3, + "maxLength": 10000, + "description": "The full package description" + }, + "Moniker": { + "$ref": "#/definitions/Tag", + "description": "The most common package term" + }, + "Tags": { + "type": [ "array", "null" ], + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 16, + "uniqueItems": true, + "description": "List of additional package search terms" + }, + "Agreements": { + "type": [ "array", "null" ], + "items": { + "$ref": "#/definitions/Agreement" + }, + "maxItems": 128 + }, + "ReleaseNotes": { + "type": [ "string", "null" ], + "minLength": 1, + "maxLength": 10000, + "description": "The package release notes" + }, + "ReleaseNotesUrl": { + "$ref": "#/definitions/Url", + "description": "The package release notes url" + }, + "PurchaseUrl": { + "$ref": "#/definitions/Url", + "description": "The purchase url for acquiring entitlement for the package." + }, + "InstallationNotes": { + "type": [ "string", "null" ], + "minLength": 1, + "maxLength": 256, + "description": "The notes displayed to the user upon completion of a package installation." + }, + "Documentations": { + "type": [ "array", "null" ], + "items": { + "$ref": "#/definitions/Documentation" + }, + "maxItems": 256 + }, + "Channel": { + "$ref": "#/definitions/Channel" + }, + "InstallerLocale": { + "$ref": "#/definitions/Locale" + }, + "Platform": { + "$ref": "#/definitions/Platform" + }, + "MinimumOSVersion": { + "$ref": "#/definitions/MinimumOSVersion" + }, + "InstallerType": { + "$ref": "#/definitions/InstallerType" + }, + "NestedInstallerType": { + "$ref": "#/definitions/NestedInstallerType" + }, + "NestedInstallerFiles": { + "$ref": "#/definitions/NestedInstallerFiles" + }, + "Scope": { + "$ref": "#/definitions/Scope" + }, + "InstallModes": { + "$ref": "#/definitions/InstallModes" + }, + "InstallerSwitches": { + "$ref": "#/definitions/InstallerSwitches" + }, + "InstallerSuccessCodes": { + "$ref": "#/definitions/InstallerSuccessCodes" + }, + "ExpectedReturnCodes": { + "$ref": "#/definitions/ExpectedReturnCodes" + }, + "UpgradeBehavior": { + "$ref": "#/definitions/UpgradeBehavior" + }, + "Commands": { + "$ref": "#/definitions/Commands" + }, + "Protocols": { + "$ref": "#/definitions/Protocols" + }, + "FileExtensions": { + "$ref": "#/definitions/FileExtensions" + }, + "Dependencies": { + "$ref": "#/definitions/Dependencies" + }, + "PackageFamilyName": { + "$ref": "#/definitions/PackageFamilyName" + }, + "ProductCode": { + "$ref": "#/definitions/ProductCode" + }, + "Capabilities": { + "$ref": "#/definitions/Capabilities" + }, + "RestrictedCapabilities": { + "$ref": "#/definitions/RestrictedCapabilities" + }, + "Markets": { + "$ref": "#/definitions/Markets" + }, + "InstallerAbortsTerminal": { + "$ref": "#/definitions/InstallerAbortsTerminal" + }, + "ReleaseDate": { + "$ref": "#/definitions/ReleaseDate" + }, + "InstallLocationRequired": { + "$ref": "#/definitions/InstallLocationRequired" + }, + "RequireExplicitUpgrade": { + "$ref": "#/definitions/RequireExplicitUpgrade" + }, + "DisplayInstallWarnings": { + "$ref": "#/definitions/DisplayInstallWarnings" + }, + "UnsupportedOSArchitectures": { + "$ref": "#/definitions/UnsupportedOSArchitectures" + }, + "UnsupportedArguments": { + "$ref": "#/definitions/UnsupportedArguments" + }, + "AppsAndFeaturesEntries": { + "$ref": "#/definitions/AppsAndFeaturesEntries" + }, + "ElevationRequirement": { + "$ref": "#/definitions/ElevationRequirement" + }, + "InstallationMetadata": { + "$ref": "#/definitions/InstallationMetadata" + }, + "Installers": { + "type": "array", + "items": { + "$ref": "#/definitions/Installer" + }, + "minItems": 1, + "maxItems": 1 + }, + "ManifestType": { + "type": "string", + "default": "singleton", + "const": "singleton", + "description": "The manifest type" + }, + "ManifestVersion": { + "type": "string", + "default": "1.4.0", + "pattern": "^(0|[1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])(\\.(0|[1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])){2}$", + "description": "The manifest syntax version" + } + }, + "required": [ + "PackageIdentifier", + "PackageVersion", + "PackageLocale", + "Publisher", + "PackageName", + "License", + "ShortDescription", + "Installers", + "ManifestType", + "ManifestVersion" + ] +}+ \ No newline at end of file diff --git a/schemas/JSON/manifests/v1.4.0/manifest.version.1.4.0.json b/schemas/JSON/manifests/v1.4.0/manifest.version.1.4.0.json @@ -0,0 +1,46 @@ +{ + "$id": "https://aka.ms/winget-manifest.version.1.4.0.schema.json", + "$schema": "http://json-schema.org/draft-07/schema#", + "description": "A representation of a multi-file manifest representing an app version in the OWC. v1.4.0", + "type": "object", + "properties": { + "PackageIdentifier": { + "type": "string", + "pattern": "^[^\\.\\s\\\\/:\\*\\?\"<>\\|\\x01-\\x1f]{1,32}(\\.[^\\.\\s\\\\/:\\*\\?\"<>\\|\\x01-\\x1f]{1,32}){1,3}$", + "maxLength": 128, + "description": "The package unique identifier" + }, + "PackageVersion": { + "type": "string", + "pattern": "^[^\\\\/:\\*\\?\"<>\\|\\x01-\\x1f]+$", + "maxLength": 128, + "description": "The package version" + }, + "DefaultLocale": { + "type": "string", + "default": "en-US", + "pattern": "^([a-zA-Z]{2,3}|[iI]-[a-zA-Z]+|[xX]-[a-zA-Z]{1,8})(-[a-zA-Z]{1,8})*$", + "maxLength": 20, + "description": "The default package meta-data locale" + }, + "ManifestType": { + "type": "string", + "default": "version", + "const": "version", + "description": "The manifest type" + }, + "ManifestVersion": { + "type": "string", + "default": "1.4.0", + "pattern": "^(0|[1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])(\\.(0|[1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])){2}$", + "description": "The manifest syntax version" + } + }, + "required": [ + "PackageIdentifier", + "PackageVersion", + "DefaultLocale", + "ManifestType", + "ManifestVersion" + ] +}+ \ No newline at end of file diff --git a/src/AppInstallerCLIE2ETests/TestData/Manifests/TestZipInstaller_Exe.yaml b/src/AppInstallerCLIE2ETests/TestData/Manifests/TestZipInstaller_Exe.yaml @@ -23,4 +23,4 @@ Installers: Log: /LogFile <LOGPATH> InstallLocation: /InstallDir <INSTALLPATH> ManifestType: singleton -ManifestVersion: 1.3.0- \ No newline at end of file +ManifestVersion: 1.4.0+ \ No newline at end of file diff --git a/src/AppInstallerCLIE2ETests/TestData/Manifests/TestZipInstaller_Exe_InvalidRelativeFilePath.yaml b/src/AppInstallerCLIE2ETests/TestData/Manifests/TestZipInstaller_Exe_InvalidRelativeFilePath.yaml @@ -15,4 +15,4 @@ Installers: NestedInstallerFiles: - RelativeFilePath: ../../AppInstallerTestExeInstaller.exe ManifestType: singleton -ManifestVersion: 1.3.0- \ No newline at end of file +ManifestVersion: 1.4.0+ \ No newline at end of file diff --git a/src/AppInstallerCLIE2ETests/TestData/Manifests/TestZipInstaller_Msi.yaml b/src/AppInstallerCLIE2ETests/TestData/Manifests/TestZipInstaller_Msi.yaml @@ -15,4 +15,4 @@ Installers: NestedInstallerFiles: - RelativeFilePath: AppInstallerTestMsiInstaller.msi ManifestType: singleton -ManifestVersion: 1.3.0- \ No newline at end of file +ManifestVersion: 1.4.0+ \ No newline at end of file diff --git a/src/AppInstallerCLIE2ETests/TestData/Manifests/TestZipInstaller_Msix.yaml b/src/AppInstallerCLIE2ETests/TestData/Manifests/TestZipInstaller_Msix.yaml @@ -15,4 +15,4 @@ Installers: NestedInstallerFiles: - RelativeFilePath: AppInstallerTestMsixInstaller.msix ManifestType: singleton -ManifestVersion: 1.3.0- \ No newline at end of file +ManifestVersion: 1.4.0+ \ No newline at end of file diff --git a/src/AppInstallerCLITests/AppInstallerCLITests.vcxproj b/src/AppInstallerCLITests/AppInstallerCLITests.vcxproj @@ -656,7 +656,7 @@ <CopyFileToFolders Include="TestData\ManifestV1_2-Singleton.yaml"> <DeploymentContent>true</DeploymentContent> </CopyFileToFolders> - <CopyFileToFolders Include="TestData\ManifestV1_3-Singleton.yaml"> + <CopyFileToFolders Include="TestData\ManifestV1_4-Singleton.yaml"> <DeploymentContent>true</DeploymentContent> </CopyFileToFolders> <CopyFileToFolders Include="TestData\MultiFileManifestV1\ManifestV1-MultiFile-DefaultLocale.yaml"> @@ -695,16 +695,16 @@ <CopyFileToFolders Include="TestData\MultiFileManifestV1_2\ManifestV1_2-MultiFile-Version.yaml"> <DeploymentContent>true</DeploymentContent> </CopyFileToFolders> - <CopyFileToFolders Include="TestData\MultiFileManifestV1_3\ManifestV1_3-MultiFile-DefaultLocale.yaml"> + <CopyFileToFolders Include="TestData\MultiFileManifestV1_4\ManifestV1_4-MultiFile-DefaultLocale.yaml"> <DeploymentContent>true</DeploymentContent> </CopyFileToFolders> - <CopyFileToFolders Include="TestData\MultiFileManifestV1_3\ManifestV1_3-MultiFile-Installer.yaml"> + <CopyFileToFolders Include="TestData\MultiFileManifestV1_4\ManifestV1_4-MultiFile-Installer.yaml"> <DeploymentContent>true</DeploymentContent> </CopyFileToFolders> - <CopyFileToFolders Include="TestData\MultiFileManifestV1_3\ManifestV1_3-MultiFile-Locale.yaml"> + <CopyFileToFolders Include="TestData\MultiFileManifestV1_4\ManifestV1_4-MultiFile-Locale.yaml"> <DeploymentContent>true</DeploymentContent> </CopyFileToFolders> - <CopyFileToFolders Include="TestData\MultiFileManifestV1_3\ManifestV1_3-MultiFile-Version.yaml"> + <CopyFileToFolders Include="TestData\MultiFileManifestV1_4\ManifestV1_4-MultiFile-Version.yaml"> <DeploymentContent>true</DeploymentContent> </CopyFileToFolders> <CopyFileToFolders Include="TestData\Installer_Exe_Dependencies.yaml"> diff --git a/src/AppInstallerCLITests/AppInstallerCLITests.vcxproj.filters b/src/AppInstallerCLITests/AppInstallerCLITests.vcxproj.filters @@ -25,7 +25,7 @@ <Filter Include="TestData\MultiFileManifestV1_2"> <UniqueIdentifier>{0215df7f-7a73-4cc0-9589-adf401329e59}</UniqueIdentifier> </Filter> - <Filter Include="TestData\MultiFileManifestV1_3"> + <Filter Include="TestData\MultiFileManifestV1_4"> <UniqueIdentifier>{52b26063-ccff-40ae-a420-243327dcca25}</UniqueIdentifier> </Filter> <Filter Include="Source Files\CLI"> @@ -633,7 +633,7 @@ <CopyFileToFolders Include="TestData\ManifestV1_2-Singleton.yaml"> <Filter>TestData</Filter> </CopyFileToFolders> - <CopyFileToFolders Include="TestData\ManifestV1_3-Singleton.yaml"> + <CopyFileToFolders Include="TestData\ManifestV1_4-Singleton.yaml"> <Filter>TestData</Filter> </CopyFileToFolders> <CopyFileToFolders Include="TestData\MultiFileManifestV1\ManifestV1-MultiFile-DefaultLocale.yaml"> @@ -672,17 +672,17 @@ <CopyFileToFolders Include="TestData\MultiFileManifestV1_2\ManifestV1_2-MultiFile-Version.yaml"> <Filter>TestData\MultiFileManifestV1_2</Filter> </CopyFileToFolders> - <CopyFileToFolders Include="TestData\MultiFileManifestV1_3\ManifestV1_3-MultiFile-DefaultLocale.yaml"> - <Filter>TestData\MultiFileManifestV1_3</Filter> + <CopyFileToFolders Include="TestData\MultiFileManifestV1_4\ManifestV1_4-MultiFile-DefaultLocale.yaml"> + <Filter>TestData\MultiFileManifestV1_4</Filter> </CopyFileToFolders> - <CopyFileToFolders Include="TestData\MultiFileManifestV1_3\ManifestV1_3-MultiFile-Installer.yaml"> - <Filter>TestData\MultiFileManifestV1_3</Filter> + <CopyFileToFolders Include="TestData\MultiFileManifestV1_4\ManifestV1_4-MultiFile-Installer.yaml"> + <Filter>TestData\MultiFileManifestV1_4</Filter> </CopyFileToFolders> - <CopyFileToFolders Include="TestData\MultiFileManifestV1_3\ManifestV1_3-MultiFile-Locale.yaml"> - <Filter>TestData\MultiFileManifestV1_3</Filter> + <CopyFileToFolders Include="TestData\MultiFileManifestV1_4\ManifestV1_4-MultiFile-Locale.yaml"> + <Filter>TestData\MultiFileManifestV1_4</Filter> </CopyFileToFolders> - <CopyFileToFolders Include="TestData\MultiFileManifestV1_3\ManifestV1_3-MultiFile-Version.yaml"> - <Filter>TestData\MultiFileManifestV1_3</Filter> + <CopyFileToFolders Include="TestData\MultiFileManifestV1_4\ManifestV1_4-MultiFile-Version.yaml"> + <Filter>TestData\MultiFileManifestV1_4</Filter> </CopyFileToFolders> <CopyFileToFolders Include="TestData\Installer_Exe_Dependencies.yaml"> <Filter>TestData</Filter> diff --git a/src/AppInstallerCLITests/TestData/InstallFlowTest_ZipWithExe.yaml b/src/AppInstallerCLITests/TestData/InstallFlowTest_ZipWithExe.yaml @@ -20,4 +20,4 @@ Installers: Silent: /silence Update: /update ManifestType: singleton -ManifestVersion: 1.3.0- \ No newline at end of file +ManifestVersion: 1.4.0+ \ No newline at end of file diff --git a/src/AppInstallerCLITests/TestData/InstallFlowTest_Zip_MissingNestedInstaller.yaml b/src/AppInstallerCLITests/TestData/InstallFlowTest_Zip_MissingNestedInstaller.yaml @@ -18,4 +18,4 @@ Installers: Silent: /silence Update: /update ManifestType: singleton -ManifestVersion: 1.3.0- \ No newline at end of file +ManifestVersion: 1.4.0+ \ No newline at end of file diff --git a/src/AppInstallerCLITests/TestData/InstallFlowTest_Zip_MultipleNonPortableNestedInstallers.yaml b/src/AppInstallerCLITests/TestData/InstallFlowTest_Zip_MultipleNonPortableNestedInstallers.yaml @@ -16,4 +16,4 @@ Installers: - RelativeFilePath: installerOne.exe - RelativeFilePath: installerTwo.exe ManifestType: singleton -ManifestVersion: 1.3.0- \ No newline at end of file +ManifestVersion: 1.4.0+ \ No newline at end of file diff --git a/src/AppInstallerCLITests/TestData/InstallFlowTest_Zip_UnsupportedNestedInstaller.yaml b/src/AppInstallerCLITests/TestData/InstallFlowTest_Zip_UnsupportedNestedInstaller.yaml @@ -18,4 +18,4 @@ Installers: Silent: /silence Update: /update ManifestType: singleton -ManifestVersion: 1.3.0- \ No newline at end of file +ManifestVersion: 1.4.0+ \ No newline at end of file diff --git a/src/AppInstallerCLITests/TestData/Manifest-Bad-InstallerTypeZip-InvalidRelativeFilePath.yaml b/src/AppInstallerCLITests/TestData/Manifest-Bad-InstallerTypeZip-InvalidRelativeFilePath.yaml @@ -17,4 +17,4 @@ Installers: NestedInstallerFiles: - RelativeFilePath: ../../relativeFilePath ManifestType: singleton -ManifestVersion: 1.3.0- \ No newline at end of file +ManifestVersion: 1.4.0+ \ No newline at end of file diff --git a/src/AppInstallerCLITests/TestData/Manifest-Bad-InstallerTypeZip-MissingRelativeFilePath.yaml b/src/AppInstallerCLITests/TestData/Manifest-Bad-InstallerTypeZip-MissingRelativeFilePath.yaml @@ -17,4 +17,4 @@ Installers: NestedInstallerFiles: - PortableCommandAlias: portableCommandAlias ManifestType: singleton -ManifestVersion: 1.3.0- \ No newline at end of file +ManifestVersion: 1.4.0+ \ No newline at end of file diff --git a/src/AppInstallerCLITests/TestData/Manifest-Bad-InstallerTypeZip-MultipleNestedInstallers.yaml b/src/AppInstallerCLITests/TestData/Manifest-Bad-InstallerTypeZip-MultipleNestedInstallers.yaml @@ -20,4 +20,4 @@ Installers: - RelativeFilePath: relativeFilePath2 PortableCommandAlias: portableCommandAlias2 ManifestType: singleton -ManifestVersion: 1.3.0- \ No newline at end of file +ManifestVersion: 1.4.0+ \ No newline at end of file diff --git a/src/AppInstallerCLITests/TestData/Manifest-Bad-InstallerTypeZip-NoNestedInstallerFile.yaml b/src/AppInstallerCLITests/TestData/Manifest-Bad-InstallerTypeZip-NoNestedInstallerFile.yaml @@ -15,4 +15,4 @@ Installers: InstallerSha256: 65DB2F2AC2686C7F2FD69D4A4C6683B888DC55BFA20A0E32CA9F838B51689A3B NestedInstallerType: exe ManifestType: singleton -ManifestVersion: 1.3.0- \ No newline at end of file +ManifestVersion: 1.4.0+ \ No newline at end of file diff --git a/src/AppInstallerCLITests/TestData/Manifest-Bad-InstallerTypeZip-NoNestedInstallerType.yaml b/src/AppInstallerCLITests/TestData/Manifest-Bad-InstallerTypeZip-NoNestedInstallerType.yaml @@ -17,4 +17,4 @@ Installers: - RelativeFilePath: relativeFilePath PortableCommandAlias: portableCommandAlias ManifestType: singleton -ManifestVersion: 1.3.0- \ No newline at end of file +ManifestVersion: 1.4.0+ \ No newline at end of file diff --git a/src/AppInstallerCLITests/TestData/ManifestV1_3-Singleton.yaml b/src/AppInstallerCLITests/TestData/ManifestV1_3-Singleton.yaml @@ -1,186 +0,0 @@ -PackageIdentifier: microsoft.msixsdk -PackageVersion: 1.7.32 -PackageLocale: en-US -Publisher: Microsoft -PublisherUrl: https://www.microsoft.com -PublisherSupportUrl: https://www.microsoft.com/support -PrivacyUrl: https://www.microsoft.com/privacy -Author: Microsoft -PackageName: MSIX SDK -PackageUrl: https://www.microsoft.com/msixsdk/home -License: MIT License -LicenseUrl: https://www.microsoft.com/msixsdk/license -Copyright: Copyright Microsoft Corporation -CopyrightUrl: https://www.microsoft.com/msixsdk/copyright -ShortDescription: This is MSIX SDK -Description: The MSIX SDK project is an effort to enable developers -Moniker: msixsdk -Tags: - - "appxsdk" - - "msixsdk" -ReleaseNotes: Default release notes -ReleaseNotesUrl: https://DefaultReleaseNotes.net -PurchaseUrl: https://DefaultPurchaseUrl.com -InstallationNotes: Default installation notes -Documentations: - - DocumentLabel: Default document label - DocumentUrl: https://DefaultDocumentUrl.com -Agreements: - - AgreementLabel: DefaultLabel - Agreement: DefaultText - AgreementUrl: https://DefaultAgreementUrl.net -InstallerLocale: en-US -Platform: - - Windows.Desktop - - Windows.Universal -MinimumOSVersion: 10.0.0.0 -InstallerType: zip -Scope: machine -InstallModes: - - interactive - - silent - - silentWithProgress -InstallerSwitches: - Custom: /custom - SilentWithProgress: /silentwithprogress - Silent: /silence - Interactive: /interactive - Log: /log=<LOGPATH> - InstallLocation: /dir=<INSTALLPATH> - Upgrade: /upgrade -InstallerSuccessCodes: - - 1 - - 0x80070005 -UpgradeBehavior: uninstallPrevious -Commands: - - makemsix - - makeappx -Protocols: - - protocol1 - - protocol2 -FileExtensions: - - appx - - msix - - appxbundle - - msixbundle -Dependencies: - WindowsFeatures: - - IIS - WindowsLibraries: - - VC Runtime - PackageDependencies: - - PackageIdentifier: Microsoft.MsixSdkDep - MinimumVersion: 1.0.0 - ExternalDependencies: - - Outside dependencies -Capabilities: - - internetClient -RestrictedCapabilities: - - runFullTrust -PackageFamilyName: Microsoft.DesktopAppInstaller_8wekyb3d8bbwe -ProductCode: "{Foo}" -ReleaseDate: 2021-01-01 -InstallerAbortsTerminal: true -InstallLocationRequired: true -RequireExplicitUpgrade: true -DisplayInstallWarnings: true -ElevationRequirement: elevatesSelf -UnsupportedOSArchitectures: - - arm -AppsAndFeaturesEntries: - - DisplayName: DisplayName - DisplayVersion: DisplayVersion - Publisher: Publisher - ProductCode: ProductCode - UpgradeCode: UpgradeCode - InstallerType: exe -Markets: - AllowedMarkets: - - US -ExpectedReturnCodes: - - InstallerReturnCode: 10 - ReturnResponse: packageInUse - ReturnResponseUrl: https://DefaultReturnResponseUrl.com -UnsupportedArguments: - - log -NestedInstallerType: msi -NestedInstallerFiles: - - RelativeFilePath: RelativeFilePath - PortableCommandAlias: PortableCommandAlias -InstallationMetadata: - DefaultInstallLocation: "%ProgramFiles%\\TestApp" - Files: - - RelativeFilePath: "main.exe" - FileSha256: 69D84CA8899800A5575CE31798293CD4FEBAB1D734A07C2E51E56A28E0DF8C82 - FileType: launch - InvocationParameter: "/arg" - DisplayName: "DisplayName" - -Installers: - - Architecture: x86 - InstallerLocale: en-GB - Platform: - - Windows.Desktop - MinimumOSVersion: 10.0.1.0 - InstallerType: msix - InstallerUrl: https://www.microsoft.com/msixsdk/msixsdkx86.msix - InstallerSha256: 69D84CA8899800A5575CE31798293CD4FEBAB1D734A07C2E51E56A28E0DF8C82 - SignatureSha256: 69D84CA8899800A5575CE31798293CD4FEBAB1D734A07C2E51E56A28E0DF8C82 - Scope: user - InstallModes: - - interactive - InstallerSwitches: - Custom: /c - SilentWithProgress: /sp - Silent: /s - Interactive: /i - Log: /l=<LOGPATH> - InstallLocation: /d=<INSTALLPATH> - Upgrade: /u - UpgradeBehavior: install - Commands: - - makemsixPreview - - makeappxPreview - Protocols: - - protocol1preview - - protocol2preview - FileExtensions: - - appxbundle - - msixbundle - - appx - - msix - Dependencies: - WindowsFeatures: - - PreviewIIS - WindowsLibraries: - - Preview VC Runtime - PackageDependencies: - - PackageIdentifier: Microsoft.MsixSdkDepPreview - ExternalDependencies: - - Preview Outside dependencies - PackageFamilyName: Microsoft.DesktopAppInstallerPreview_8wekyb3d8bbwe - Capabilities: - - internetClientPreview - RestrictedCapabilities: - - runFullTrustPreview - ReleaseDate: 2021-02-02 - InstallerAbortsTerminal: false - InstallLocationRequired: false - RequireExplicitUpgrade: false - DisplayInstallWarnings: false - ElevationRequirement: elevationRequired - UnsupportedArguments: - - location - UnsupportedOSArchitectures: - - arm64 - Markets: - ExcludedMarkets: - - "US" - ExpectedReturnCodes: - - InstallerReturnCode: 2 - ReturnResponse: contactSupport - - InstallerReturnCode: 3 - ReturnResponse: custom - ReturnResponseUrl: https://defaultReturnResponseUrl.com -ManifestType: singleton -ManifestVersion: 1.3.0- \ No newline at end of file diff --git a/src/AppInstallerCLITests/TestData/ManifestV1_4-Singleton.yaml b/src/AppInstallerCLITests/TestData/ManifestV1_4-Singleton.yaml @@ -0,0 +1,186 @@ +PackageIdentifier: microsoft.msixsdk +PackageVersion: 1.7.32 +PackageLocale: en-US +Publisher: Microsoft +PublisherUrl: https://www.microsoft.com +PublisherSupportUrl: https://www.microsoft.com/support +PrivacyUrl: https://www.microsoft.com/privacy +Author: Microsoft +PackageName: MSIX SDK +PackageUrl: https://www.microsoft.com/msixsdk/home +License: MIT License +LicenseUrl: https://www.microsoft.com/msixsdk/license +Copyright: Copyright Microsoft Corporation +CopyrightUrl: https://www.microsoft.com/msixsdk/copyright +ShortDescription: This is MSIX SDK +Description: The MSIX SDK project is an effort to enable developers +Moniker: msixsdk +Tags: + - "appxsdk" + - "msixsdk" +ReleaseNotes: Default release notes +ReleaseNotesUrl: https://DefaultReleaseNotes.net +PurchaseUrl: https://DefaultPurchaseUrl.com +InstallationNotes: Default installation notes +Documentations: + - DocumentLabel: Default document label + DocumentUrl: https://DefaultDocumentUrl.com +Agreements: + - AgreementLabel: DefaultLabel + Agreement: DefaultText + AgreementUrl: https://DefaultAgreementUrl.net +InstallerLocale: en-US +Platform: + - Windows.Desktop + - Windows.Universal +MinimumOSVersion: 10.0.0.0 +InstallerType: zip +Scope: machine +InstallModes: + - interactive + - silent + - silentWithProgress +InstallerSwitches: + Custom: /custom + SilentWithProgress: /silentwithprogress + Silent: /silence + Interactive: /interactive + Log: /log=<LOGPATH> + InstallLocation: /dir=<INSTALLPATH> + Upgrade: /upgrade +InstallerSuccessCodes: + - 1 + - 0x80070005 +UpgradeBehavior: uninstallPrevious +Commands: + - makemsix + - makeappx +Protocols: + - protocol1 + - protocol2 +FileExtensions: + - appx + - msix + - appxbundle + - msixbundle +Dependencies: + WindowsFeatures: + - IIS + WindowsLibraries: + - VC Runtime + PackageDependencies: + - PackageIdentifier: Microsoft.MsixSdkDep + MinimumVersion: 1.0.0 + ExternalDependencies: + - Outside dependencies +Capabilities: + - internetClient +RestrictedCapabilities: + - runFullTrust +PackageFamilyName: Microsoft.DesktopAppInstaller_8wekyb3d8bbwe +ProductCode: "{Foo}" +ReleaseDate: 2021-01-01 +InstallerAbortsTerminal: true +InstallLocationRequired: true +RequireExplicitUpgrade: true +DisplayInstallWarnings: true +ElevationRequirement: elevatesSelf +UnsupportedOSArchitectures: + - arm +AppsAndFeaturesEntries: + - DisplayName: DisplayName + DisplayVersion: DisplayVersion + Publisher: Publisher + ProductCode: ProductCode + UpgradeCode: UpgradeCode + InstallerType: exe +Markets: + AllowedMarkets: + - US +ExpectedReturnCodes: + - InstallerReturnCode: 10 + ReturnResponse: packageInUse + ReturnResponseUrl: https://DefaultReturnResponseUrl.com +UnsupportedArguments: + - log +NestedInstallerType: msi +NestedInstallerFiles: + - RelativeFilePath: RelativeFilePath + PortableCommandAlias: PortableCommandAlias +InstallationMetadata: + DefaultInstallLocation: "%ProgramFiles%\\TestApp" + Files: + - RelativeFilePath: "main.exe" + FileSha256: 69D84CA8899800A5575CE31798293CD4FEBAB1D734A07C2E51E56A28E0DF8C82 + FileType: launch + InvocationParameter: "/arg" + DisplayName: "DisplayName" + +Installers: + - Architecture: x86 + InstallerLocale: en-GB + Platform: + - Windows.Desktop + MinimumOSVersion: 10.0.1.0 + InstallerType: msix + InstallerUrl: https://www.microsoft.com/msixsdk/msixsdkx86.msix + InstallerSha256: 69D84CA8899800A5575CE31798293CD4FEBAB1D734A07C2E51E56A28E0DF8C82 + SignatureSha256: 69D84CA8899800A5575CE31798293CD4FEBAB1D734A07C2E51E56A28E0DF8C82 + Scope: user + InstallModes: + - interactive + InstallerSwitches: + Custom: /c + SilentWithProgress: /sp + Silent: /s + Interactive: /i + Log: /l=<LOGPATH> + InstallLocation: /d=<INSTALLPATH> + Upgrade: /u + UpgradeBehavior: install + Commands: + - makemsixPreview + - makeappxPreview + Protocols: + - protocol1preview + - protocol2preview + FileExtensions: + - appxbundle + - msixbundle + - appx + - msix + Dependencies: + WindowsFeatures: + - PreviewIIS + WindowsLibraries: + - Preview VC Runtime + PackageDependencies: + - PackageIdentifier: Microsoft.MsixSdkDepPreview + ExternalDependencies: + - Preview Outside dependencies + PackageFamilyName: Microsoft.DesktopAppInstallerPreview_8wekyb3d8bbwe + Capabilities: + - internetClientPreview + RestrictedCapabilities: + - runFullTrustPreview + ReleaseDate: 2021-02-02 + InstallerAbortsTerminal: false + InstallLocationRequired: false + RequireExplicitUpgrade: false + DisplayInstallWarnings: false + ElevationRequirement: elevationRequired + UnsupportedArguments: + - location + UnsupportedOSArchitectures: + - arm64 + Markets: + ExcludedMarkets: + - "US" + ExpectedReturnCodes: + - InstallerReturnCode: 2 + ReturnResponse: contactSupport + - InstallerReturnCode: 3 + ReturnResponse: custom + ReturnResponseUrl: https://defaultReturnResponseUrl.com +ManifestType: singleton +ManifestVersion: 1.4.0+ \ No newline at end of file diff --git a/src/AppInstallerCLITests/TestData/MultiFileManifestV1_3/ManifestV1_3-MultiFile-DefaultLocale.yaml b/src/AppInstallerCLITests/TestData/MultiFileManifestV1_3/ManifestV1_3-MultiFile-DefaultLocale.yaml @@ -1,33 +0,0 @@ -PackageIdentifier: microsoft.msixsdk -PackageVersion: 1.7.32 -PackageLocale: en-US -Publisher: Microsoft -PublisherUrl: https://www.microsoft.com -PublisherSupportUrl: https://www.microsoft.com/support -PrivacyUrl: https://www.microsoft.com/privacy -Author: Microsoft -PackageName: MSIX SDK -PackageUrl: https://www.microsoft.com/msixsdk/home -License: MIT License -LicenseUrl: https://www.microsoft.com/msixsdk/license -Copyright: Copyright Microsoft Corporation -CopyrightUrl: https://www.microsoft.com/msixsdk/copyright -PurchaseUrl: https://DefaultPurchaseUrl.com -InstallationNotes: "Default installation notes" -ShortDescription: This is MSIX SDK -Description: The MSIX SDK project is an effort to enable developers -Moniker: msixsdk -Tags: - - "appxsdk" - - "msixsdk" -ReleaseNotes: Default release notes -ReleaseNotesUrl: https://DefaultReleaseNotes.net -Documentations: - - DocumentLabel: Default document label - DocumentUrl: https://DefaultDocumentUrl.com -Agreements: - - AgreementLabel: DefaultLabel - Agreement: DefaultText - AgreementUrl: https://DefaultAgreementUrl.net -ManifestType: defaultLocale -ManifestVersion: 1.3.0 diff --git a/src/AppInstallerCLITests/TestData/MultiFileManifestV1_3/ManifestV1_3-MultiFile-Installer.yaml b/src/AppInstallerCLITests/TestData/MultiFileManifestV1_3/ManifestV1_3-MultiFile-Installer.yaml @@ -1,191 +0,0 @@ -PackageIdentifier: microsoft.msixsdk -PackageVersion: 1.7.32 -InstallerLocale: en-US -Platform: - - Windows.Desktop - - Windows.Universal -MinimumOSVersion: 10.0.0.0 -InstallerType: zip -Scope: machine -InstallModes: - - interactive - - silent - - silentWithProgress -InstallerSwitches: - Custom: /custom - SilentWithProgress: /silentwithprogress - Silent: /silence - Interactive: /interactive - Log: /log=<LOGPATH> - InstallLocation: /dir=<INSTALLPATH> - Upgrade: /upgrade -InstallerSuccessCodes: - - 1 - - 0x80070005 -UpgradeBehavior: uninstallPrevious -Commands: - - makemsix - - makeappx -Protocols: - - protocol1 - - protocol2 -FileExtensions: - - appx - - msix - - appxbundle - - msixbundle -Dependencies: - WindowsFeatures: - - IIS - WindowsLibraries: - - VC Runtime - PackageDependencies: - - PackageIdentifier: Microsoft.MsixSdkDep - MinimumVersion: 1.0.0 - ExternalDependencies: - - Outside dependencies -Capabilities: - - internetClient -RestrictedCapabilities: - - runFullTrust -PackageFamilyName: Microsoft.DesktopAppInstaller_8wekyb3d8bbwe -ProductCode: "{Foo}" -ReleaseDate: 2021-01-01 -InstallerAbortsTerminal: true -InstallLocationRequired: true -RequireExplicitUpgrade: true -DisplayInstallWarnings: true -ElevationRequirement: elevatesSelf -UnsupportedOSArchitectures: - - arm -AppsAndFeaturesEntries: - - DisplayName: DisplayName - DisplayVersion: DisplayVersion - Publisher: Publisher - ProductCode: ProductCode - UpgradeCode: UpgradeCode - InstallerType: exe -Markets: - AllowedMarkets: - - "US" -ExpectedReturnCodes: - - InstallerReturnCode: 10 - ReturnResponse: packageInUse - ReturnResponseUrl: https://DefaultReturnResponseUrl.com -UnsupportedArguments: - - log -NestedInstallerType: msi -NestedInstallerFiles: - - RelativeFilePath: RelativeFilePath - PortableCommandAlias: PortableCommandAlias -InstallationMetadata: - DefaultInstallLocation: "%ProgramFiles%\\TestApp" - Files: - - RelativeFilePath: "main.exe" - FileSha256: 69D84CA8899800A5575CE31798293CD4FEBAB1D734A07C2E51E56A28E0DF8C82 - FileType: launch - InvocationParameter: "/arg" - DisplayName: "DisplayName" - -Installers: - - Architecture: x86 - InstallerLocale: en-GB - Platform: - - Windows.Desktop - MinimumOSVersion: 10.0.1.0 - InstallerType: msix - InstallerUrl: https://www.microsoft.com/msixsdk/msixsdkx86.msix - InstallerSha256: 69D84CA8899800A5575CE31798293CD4FEBAB1D734A07C2E51E56A28E0DF8C82 - SignatureSha256: 69D84CA8899800A5575CE31798293CD4FEBAB1D734A07C2E51E56A28E0DF8C82 - Scope: user - InstallModes: - - interactive - InstallerSwitches: - Custom: /c - SilentWithProgress: /sp - Silent: /s - Interactive: /i - Log: /l=<LOGPATH> - InstallLocation: /d=<INSTALLPATH> - Upgrade: /u - UpgradeBehavior: install - Commands: - - makemsixPreview - - makeappxPreview - Protocols: - - protocol1preview - - protocol2preview - FileExtensions: - - appxbundle - - msixbundle - - appx - - msix - Dependencies: - WindowsFeatures: - - PreviewIIS - WindowsLibraries: - - Preview VC Runtime - PackageDependencies: - - PackageIdentifier: Microsoft.MsixSdkDepPreview - ExternalDependencies: - - Preview Outside dependencies - PackageFamilyName: Microsoft.DesktopAppInstallerPreview_8wekyb3d8bbwe - Capabilities: - - internetClientPreview - RestrictedCapabilities: - - runFullTrustPreview - ReleaseDate: 2021-02-02 - InstallerAbortsTerminal: false - InstallLocationRequired: false - RequireExplicitUpgrade: false - DisplayInstallWarnings: false - ElevationRequirement: elevationRequired - UnsupportedOSArchitectures: - - arm64 - Markets: - ExcludedMarkets: - - "US" - ExpectedReturnCodes: - - InstallerReturnCode: 2 - ReturnResponse: contactSupport - - InstallerReturnCode: 3 - ReturnResponse: custom - ReturnResponseUrl: https://defaultReturnResponseUrl.com - UnsupportedArguments: - - location - - Architecture: x64 - InstallerType: exe - InstallerUrl: https://www.microsoft.com/msixsdk/msixsdkx64.exe - InstallerSha256: 69D84CA8899800A5575CE31798293CD4FEBAB1D734A07C2E51E56A28E0DF8C82 - ProductCode: "{Bar}" - - Architecture: x86 - InstallerType: portable - InstallerUrl: https://www.microsoft.com/msixsdk/msixsdkx86.exe - InstallerSha256: 69D84CA8899800A5575CE31798293CD4FEBAB1D734A07C2E51E56A28E0DF8C82 - DisplayInstallWarnings: false - Commands: - - standalone - ExpectedReturnCodes: - - InstallerReturnCode: 11 - ReturnResponse: custom - ReturnResponseUrl: https://defaultReturnResponseUrl.com - - Architecture: x64 - InstallerType: zip - InstallerUrl: https://www.microsoft.com/msixsdk/msixsdkx64.exe - InstallerSha256: 69D84CA8899800A5575CE31798293CD4FEBAB1D734A07C2E51E56A28E0DF8C82 - NestedInstallerType: portable - NestedInstallerFiles: - - RelativeFilePath: relativeFilePath1 - PortableCommandAlias: portableAlias1 - - RelativeFilePath: relativeFilePath2 - PortableCommandAlias: portableAlias2 - InstallationMetadata: - DefaultInstallLocation: "%ProgramFiles%\\TestApp2" - Files: - - RelativeFilePath: "main2.exe" - FileSha256: 69D84CA8899800A5575CE31798293CD4FEBAB1D734A07C2E51E56A28E0DF8C82 - FileType: other - InvocationParameter: "/arg2" - DisplayName: "DisplayName2" -ManifestType: installer -ManifestVersion: 1.3.0- \ No newline at end of file diff --git a/src/AppInstallerCLITests/TestData/MultiFileManifestV1_3/ManifestV1_3-MultiFile-Locale.yaml b/src/AppInstallerCLITests/TestData/MultiFileManifestV1_3/ManifestV1_3-MultiFile-Locale.yaml @@ -1,32 +0,0 @@ -PackageIdentifier: microsoft.msixsdk -PackageVersion: 1.7.32 -PackageLocale: en-GB -Publisher: Microsoft UK -PublisherUrl: https://www.microsoft.com/UK -PublisherSupportUrl: https://www.microsoft.com/support/UK -PrivacyUrl: https://www.microsoft.com/privacy/UK -Author: Microsoft UK -PackageName: MSIX SDK UK -PackageUrl: https://www.microsoft.com/msixsdk/home/UK -License: MIT License UK -LicenseUrl: https://www.microsoft.com/msixsdk/license/UK -Copyright: Copyright Microsoft Corporation UK -CopyrightUrl: https://www.microsoft.com/msixsdk/copyright/UK -ShortDescription: This is MSIX SDK UK -Description: The MSIX SDK project is an effort to enable developers UK -Tags: - - "appxsdkUK" - - "msixsdkUK" -ReleaseNotes: Release notes -ReleaseNotesUrl: https://ReleaseNotes.net -PurchaseUrl: https://DefaultPurchaseUrl.com -InstallationNotes: Default installation notes -Agreements: - - AgreementLabel: Label - Agreement: Text - AgreementUrl: https://AgreementUrl.net -Documentations: - - DocumentLabel: Default document label - DocumentUrl: https://DefaultDocumentUrl.com -ManifestType: locale -ManifestVersion: 1.3.0 diff --git a/src/AppInstallerCLITests/TestData/MultiFileManifestV1_3/ManifestV1_3-MultiFile-Version.yaml b/src/AppInstallerCLITests/TestData/MultiFileManifestV1_3/ManifestV1_3-MultiFile-Version.yaml @@ -1,5 +0,0 @@ -PackageIdentifier: microsoft.msixsdk -PackageVersion: 1.7.32 -DefaultLocale: en-US -ManifestType: version -ManifestVersion: 1.3.0 diff --git a/src/AppInstallerCLITests/TestData/MultiFileManifestV1_4/ManifestV1_4-MultiFile-DefaultLocale.yaml b/src/AppInstallerCLITests/TestData/MultiFileManifestV1_4/ManifestV1_4-MultiFile-DefaultLocale.yaml @@ -0,0 +1,33 @@ +PackageIdentifier: microsoft.msixsdk +PackageVersion: 1.7.32 +PackageLocale: en-US +Publisher: Microsoft +PublisherUrl: https://www.microsoft.com +PublisherSupportUrl: https://www.microsoft.com/support +PrivacyUrl: https://www.microsoft.com/privacy +Author: Microsoft +PackageName: MSIX SDK +PackageUrl: https://www.microsoft.com/msixsdk/home +License: MIT License +LicenseUrl: https://www.microsoft.com/msixsdk/license +Copyright: Copyright Microsoft Corporation +CopyrightUrl: https://www.microsoft.com/msixsdk/copyright +PurchaseUrl: https://DefaultPurchaseUrl.com +InstallationNotes: "Default installation notes" +ShortDescription: This is MSIX SDK +Description: The MSIX SDK project is an effort to enable developers +Moniker: msixsdk +Tags: + - "appxsdk" + - "msixsdk" +ReleaseNotes: Default release notes +ReleaseNotesUrl: https://DefaultReleaseNotes.net +Documentations: + - DocumentLabel: Default document label + DocumentUrl: https://DefaultDocumentUrl.com +Agreements: + - AgreementLabel: DefaultLabel + Agreement: DefaultText + AgreementUrl: https://DefaultAgreementUrl.net +ManifestType: defaultLocale +ManifestVersion: 1.4.0 diff --git a/src/AppInstallerCLITests/TestData/MultiFileManifestV1_4/ManifestV1_4-MultiFile-Installer.yaml b/src/AppInstallerCLITests/TestData/MultiFileManifestV1_4/ManifestV1_4-MultiFile-Installer.yaml @@ -0,0 +1,191 @@ +PackageIdentifier: microsoft.msixsdk +PackageVersion: 1.7.32 +InstallerLocale: en-US +Platform: + - Windows.Desktop + - Windows.Universal +MinimumOSVersion: 10.0.0.0 +InstallerType: zip +Scope: machine +InstallModes: + - interactive + - silent + - silentWithProgress +InstallerSwitches: + Custom: /custom + SilentWithProgress: /silentwithprogress + Silent: /silence + Interactive: /interactive + Log: /log=<LOGPATH> + InstallLocation: /dir=<INSTALLPATH> + Upgrade: /upgrade +InstallerSuccessCodes: + - 1 + - 0x80070005 +UpgradeBehavior: uninstallPrevious +Commands: + - makemsix + - makeappx +Protocols: + - protocol1 + - protocol2 +FileExtensions: + - appx + - msix + - appxbundle + - msixbundle +Dependencies: + WindowsFeatures: + - IIS + WindowsLibraries: + - VC Runtime + PackageDependencies: + - PackageIdentifier: Microsoft.MsixSdkDep + MinimumVersion: 1.0.0 + ExternalDependencies: + - Outside dependencies +Capabilities: + - internetClient +RestrictedCapabilities: + - runFullTrust +PackageFamilyName: Microsoft.DesktopAppInstaller_8wekyb3d8bbwe +ProductCode: "{Foo}" +ReleaseDate: 2021-01-01 +InstallerAbortsTerminal: true +InstallLocationRequired: true +RequireExplicitUpgrade: true +DisplayInstallWarnings: true +ElevationRequirement: elevatesSelf +UnsupportedOSArchitectures: + - arm +AppsAndFeaturesEntries: + - DisplayName: DisplayName + DisplayVersion: DisplayVersion + Publisher: Publisher + ProductCode: ProductCode + UpgradeCode: UpgradeCode + InstallerType: exe +Markets: + AllowedMarkets: + - "US" +ExpectedReturnCodes: + - InstallerReturnCode: 10 + ReturnResponse: packageInUse + ReturnResponseUrl: https://DefaultReturnResponseUrl.com +UnsupportedArguments: + - log +NestedInstallerType: msi +NestedInstallerFiles: + - RelativeFilePath: RelativeFilePath + PortableCommandAlias: PortableCommandAlias +InstallationMetadata: + DefaultInstallLocation: "%ProgramFiles%\\TestApp" + Files: + - RelativeFilePath: "main.exe" + FileSha256: 69D84CA8899800A5575CE31798293CD4FEBAB1D734A07C2E51E56A28E0DF8C82 + FileType: launch + InvocationParameter: "/arg" + DisplayName: "DisplayName" + +Installers: + - Architecture: x86 + InstallerLocale: en-GB + Platform: + - Windows.Desktop + MinimumOSVersion: 10.0.1.0 + InstallerType: msix + InstallerUrl: https://www.microsoft.com/msixsdk/msixsdkx86.msix + InstallerSha256: 69D84CA8899800A5575CE31798293CD4FEBAB1D734A07C2E51E56A28E0DF8C82 + SignatureSha256: 69D84CA8899800A5575CE31798293CD4FEBAB1D734A07C2E51E56A28E0DF8C82 + Scope: user + InstallModes: + - interactive + InstallerSwitches: + Custom: /c + SilentWithProgress: /sp + Silent: /s + Interactive: /i + Log: /l=<LOGPATH> + InstallLocation: /d=<INSTALLPATH> + Upgrade: /u + UpgradeBehavior: install + Commands: + - makemsixPreview + - makeappxPreview + Protocols: + - protocol1preview + - protocol2preview + FileExtensions: + - appxbundle + - msixbundle + - appx + - msix + Dependencies: + WindowsFeatures: + - PreviewIIS + WindowsLibraries: + - Preview VC Runtime + PackageDependencies: + - PackageIdentifier: Microsoft.MsixSdkDepPreview + ExternalDependencies: + - Preview Outside dependencies + PackageFamilyName: Microsoft.DesktopAppInstallerPreview_8wekyb3d8bbwe + Capabilities: + - internetClientPreview + RestrictedCapabilities: + - runFullTrustPreview + ReleaseDate: 2021-02-02 + InstallerAbortsTerminal: false + InstallLocationRequired: false + RequireExplicitUpgrade: false + DisplayInstallWarnings: false + ElevationRequirement: elevationRequired + UnsupportedOSArchitectures: + - arm64 + Markets: + ExcludedMarkets: + - "US" + ExpectedReturnCodes: + - InstallerReturnCode: 2 + ReturnResponse: contactSupport + - InstallerReturnCode: 3 + ReturnResponse: custom + ReturnResponseUrl: https://defaultReturnResponseUrl.com + UnsupportedArguments: + - location + - Architecture: x64 + InstallerType: exe + InstallerUrl: https://www.microsoft.com/msixsdk/msixsdkx64.exe + InstallerSha256: 69D84CA8899800A5575CE31798293CD4FEBAB1D734A07C2E51E56A28E0DF8C82 + ProductCode: "{Bar}" + - Architecture: x86 + InstallerType: portable + InstallerUrl: https://www.microsoft.com/msixsdk/msixsdkx86.exe + InstallerSha256: 69D84CA8899800A5575CE31798293CD4FEBAB1D734A07C2E51E56A28E0DF8C82 + DisplayInstallWarnings: false + Commands: + - standalone + ExpectedReturnCodes: + - InstallerReturnCode: 11 + ReturnResponse: custom + ReturnResponseUrl: https://defaultReturnResponseUrl.com + - Architecture: x64 + InstallerType: zip + InstallerUrl: https://www.microsoft.com/msixsdk/msixsdkx64.exe + InstallerSha256: 69D84CA8899800A5575CE31798293CD4FEBAB1D734A07C2E51E56A28E0DF8C82 + NestedInstallerType: portable + NestedInstallerFiles: + - RelativeFilePath: relativeFilePath1 + PortableCommandAlias: portableAlias1 + - RelativeFilePath: relativeFilePath2 + PortableCommandAlias: portableAlias2 + InstallationMetadata: + DefaultInstallLocation: "%ProgramFiles%\\TestApp2" + Files: + - RelativeFilePath: "main2.exe" + FileSha256: 69D84CA8899800A5575CE31798293CD4FEBAB1D734A07C2E51E56A28E0DF8C82 + FileType: other + InvocationParameter: "/arg2" + DisplayName: "DisplayName2" +ManifestType: installer +ManifestVersion: 1.4.0+ \ No newline at end of file diff --git a/src/AppInstallerCLITests/TestData/MultiFileManifestV1_4/ManifestV1_4-MultiFile-Locale.yaml b/src/AppInstallerCLITests/TestData/MultiFileManifestV1_4/ManifestV1_4-MultiFile-Locale.yaml @@ -0,0 +1,32 @@ +PackageIdentifier: microsoft.msixsdk +PackageVersion: 1.7.32 +PackageLocale: en-GB +Publisher: Microsoft UK +PublisherUrl: https://www.microsoft.com/UK +PublisherSupportUrl: https://www.microsoft.com/support/UK +PrivacyUrl: https://www.microsoft.com/privacy/UK +Author: Microsoft UK +PackageName: MSIX SDK UK +PackageUrl: https://www.microsoft.com/msixsdk/home/UK +License: MIT License UK +LicenseUrl: https://www.microsoft.com/msixsdk/license/UK +Copyright: Copyright Microsoft Corporation UK +CopyrightUrl: https://www.microsoft.com/msixsdk/copyright/UK +ShortDescription: This is MSIX SDK UK +Description: The MSIX SDK project is an effort to enable developers UK +Tags: + - "appxsdkUK" + - "msixsdkUK" +ReleaseNotes: Release notes +ReleaseNotesUrl: https://ReleaseNotes.net +PurchaseUrl: https://DefaultPurchaseUrl.com +InstallationNotes: Default installation notes +Agreements: + - AgreementLabel: Label + Agreement: Text + AgreementUrl: https://AgreementUrl.net +Documentations: + - DocumentLabel: Default document label + DocumentUrl: https://DefaultDocumentUrl.com +ManifestType: locale +ManifestVersion: 1.4.0 diff --git a/src/AppInstallerCLITests/TestData/MultiFileManifestV1_4/ManifestV1_4-MultiFile-Version.yaml b/src/AppInstallerCLITests/TestData/MultiFileManifestV1_4/ManifestV1_4-MultiFile-Version.yaml @@ -0,0 +1,5 @@ +PackageIdentifier: microsoft.msixsdk +PackageVersion: 1.7.32 +DefaultLocale: en-US +ManifestType: version +ManifestVersion: 1.4.0 diff --git a/src/AppInstallerCLITests/TestData/UpdateFlowTest_ZipWithExe.yaml b/src/AppInstallerCLITests/TestData/UpdateFlowTest_ZipWithExe.yaml @@ -21,4 +21,4 @@ Installers: Silent: /silence Update: /update ManifestType: singleton -ManifestVersion: 1.3.0- \ No newline at end of file +ManifestVersion: 1.4.0+ \ No newline at end of file diff --git a/src/AppInstallerCLITests/YamlManifest.cpp b/src/AppInstallerCLITests/YamlManifest.cpp @@ -495,7 +495,7 @@ void VerifyV1ManifestContent(const Manifest& manifest, bool isSingleton, Manifes REQUIRE(manifest.DefaultInstallerInfo.UnsupportedArguments.at(0) == UnsupportedArgumentEnum::Log); } - if (manifestVer >= ManifestVer{ s_ManifestVersionV1_3 }) + if (manifestVer >= ManifestVer{ s_ManifestVersionV1_4 }) { REQUIRE(manifest.DefaultInstallerInfo.NestedInstallerType == InstallerTypeEnum::Msi); REQUIRE(manifest.DefaultInstallerInfo.NestedInstallerFiles.size() == 1); @@ -515,7 +515,7 @@ void VerifyV1ManifestContent(const Manifest& manifest, bool isSingleton, Manifes } else { - if (manifestVer >= ManifestVer{ s_ManifestVersionV1_3 }) + if (manifestVer >= ManifestVer{ s_ManifestVersionV1_4 }) { REQUIRE(manifest.Installers.size() == 4); } @@ -591,7 +591,7 @@ void VerifyV1ManifestContent(const Manifest& manifest, bool isSingleton, Manifes REQUIRE(installer1.UnsupportedArguments.at(0) == UnsupportedArgumentEnum::Location); } - if (manifestVer >= ManifestVer{ s_ManifestVersionV1_3 }) + if (manifestVer >= ManifestVer{ s_ManifestVersionV1_4 }) { // NestedInstaller metadata should not be populated unless the InstallerType is zip. REQUIRE(installer1.NestedInstallerType == InstallerTypeEnum::Unknown); @@ -653,7 +653,7 @@ void VerifyV1ManifestContent(const Manifest& manifest, bool isSingleton, Manifes REQUIRE(installer3.UnsupportedArguments.at(0) == UnsupportedArgumentEnum::Log); } - if (manifestVer >= ManifestVer{ s_ManifestVersionV1_3 }) + if (manifestVer >= ManifestVer{ s_ManifestVersionV1_4 }) { ManifestInstaller installer4 = manifest.Installers.at(3); REQUIRE(installer4.BaseInstallerType == InstallerTypeEnum::Zip); @@ -790,29 +790,29 @@ TEST_CASE("ValidateV1_2GoodManifestAndVerifyContents", "[ManifestValidation]") VerifyV1ManifestContent(mergedManifest, false, ManifestVer{ s_ManifestVersionV1_2 }); } -TEST_CASE("ValidateV1_3GoodManifestAndVerifyContents", "[ManifestValidation]") +TEST_CASE("ValidateV1_4GoodManifestAndVerifyContents", "[ManifestValidation]") { ManifestValidateOption validateOption; validateOption.FullValidation = true; TempDirectory singletonDirectory{ "SingletonManifest" }; - CopyTestDataFilesToFolder({ "ManifestV1_3-Singleton.yaml" }, singletonDirectory); + CopyTestDataFilesToFolder({ "ManifestV1_4-Singleton.yaml" }, singletonDirectory); Manifest singletonManifest = YamlParser::CreateFromPath(singletonDirectory, validateOption); - VerifyV1ManifestContent(singletonManifest, true, ManifestVer{ s_ManifestVersionV1_3 }); + VerifyV1ManifestContent(singletonManifest, true, ManifestVer{ s_ManifestVersionV1_4 }); TempDirectory multiFileDirectory{ "MultiFileManifest" }; CopyTestDataFilesToFolder({ - "ManifestV1_3-MultiFile-Version.yaml", - "ManifestV1_3-MultiFile-Installer.yaml", - "ManifestV1_3-MultiFile-DefaultLocale.yaml", - "ManifestV1_3-MultiFile-Locale.yaml" }, multiFileDirectory); + "ManifestV1_4-MultiFile-Version.yaml", + "ManifestV1_4-MultiFile-Installer.yaml", + "ManifestV1_4-MultiFile-DefaultLocale.yaml", + "ManifestV1_4-MultiFile-Locale.yaml" }, multiFileDirectory); TempFile mergedManifestFile{ "merged.yaml" }; Manifest multiFileManifest = YamlParser::CreateFromPath(multiFileDirectory, validateOption, mergedManifestFile); - VerifyV1ManifestContent(multiFileManifest, false, ManifestVer{ s_ManifestVersionV1_3 }); + VerifyV1ManifestContent(multiFileManifest, false, ManifestVer{ s_ManifestVersionV1_4 }); // Read from merged manifest should have the same content as multi file manifest Manifest mergedManifest = YamlParser::CreateFromPath(mergedManifestFile); - VerifyV1ManifestContent(mergedManifest, false, ManifestVer{ s_ManifestVersionV1_3 }); + VerifyV1ManifestContent(mergedManifest, false, ManifestVer{ s_ManifestVersionV1_4 }); } YamlManifestInfo CreateYamlManifestInfo(std::string testDataFile) diff --git a/src/AppInstallerCommonCore/Manifest/ManifestSchemaValidation.cpp b/src/AppInstallerCommonCore/Manifest/ManifestSchemaValidation.cpp @@ -103,14 +103,14 @@ namespace AppInstaller::Manifest::YamlParser int idx = MANIFESTSCHEMA_NO_RESOURCE; std::map<ManifestTypeEnum, int> resourceMap; - if (manifestVersion >= ManifestVer{ s_ManifestVersionV1_3 }) + if (manifestVersion >= ManifestVer{ s_ManifestVersionV1_4 }) { resourceMap = { - { ManifestTypeEnum::Singleton, IDX_MANIFEST_SCHEMA_V1_3_SINGLETON }, - { ManifestTypeEnum::Version, IDX_MANIFEST_SCHEMA_V1_3_VERSION }, - { ManifestTypeEnum::Installer, IDX_MANIFEST_SCHEMA_V1_3_INSTALLER }, - { ManifestTypeEnum::DefaultLocale, IDX_MANIFEST_SCHEMA_V1_3_DEFAULTLOCALE }, - { ManifestTypeEnum::Locale, IDX_MANIFEST_SCHEMA_V1_3_LOCALE }, + { ManifestTypeEnum::Singleton, IDX_MANIFEST_SCHEMA_V1_4_SINGLETON }, + { ManifestTypeEnum::Version, IDX_MANIFEST_SCHEMA_V1_4_VERSION }, + { ManifestTypeEnum::Installer, IDX_MANIFEST_SCHEMA_V1_4_INSTALLER }, + { ManifestTypeEnum::DefaultLocale, IDX_MANIFEST_SCHEMA_V1_4_DEFAULTLOCALE }, + { ManifestTypeEnum::Locale, IDX_MANIFEST_SCHEMA_V1_4_LOCALE }, }; } else if (manifestVersion >= ManifestVer{ s_ManifestVersionV1_2 }) diff --git a/src/AppInstallerCommonCore/Manifest/ManifestYamlPopulator.cpp b/src/AppInstallerCommonCore/Manifest/ManifestYamlPopulator.cpp @@ -308,16 +308,16 @@ namespace AppInstaller::Manifest std::move(fields_v1_2.begin(), fields_v1_2.end(), std::inserter(result, result.end())); } - if (manifestVersion >= ManifestVer{ s_ManifestVersionV1_3 }) + if (manifestVersion >= ManifestVer{ s_ManifestVersionV1_4 }) { - std::vector<FieldProcessInfo> fields_v1_3 = + std::vector<FieldProcessInfo> fields_v1_4 = { { "NestedInstallerType", [this](const YAML::Node& value)->ValidationErrors { m_p_installer->NestedInstallerType = ConvertToInstallerTypeEnum(value.as<std::string>()); return {}; } }, { "NestedInstallerFiles", [this](const YAML::Node& value)->ValidationErrors { return ProcessNestedInstallerFilesNode(value); } }, { "InstallationMetadata", [this](const YAML::Node& value)->ValidationErrors { m_p_installationMetadata = &(m_p_installer->InstallationMetadata); return ValidateAndProcessFields(value, InstallationMetadataFieldInfos); } }, }; - std::move(fields_v1_3.begin(), fields_v1_3.end(), std::inserter(result, result.end())); + std::move(fields_v1_4.begin(), fields_v1_4.end(), std::inserter(result, result.end())); } } @@ -575,7 +575,7 @@ namespace AppInstaller::Manifest { std::vector<FieldProcessInfo> result = {}; - if (manifestVersion >= ManifestVer{ s_ManifestVersionV1_3 }) + if (manifestVersion >= ManifestVer{ s_ManifestVersionV1_4 }) { result = { @@ -591,7 +591,7 @@ namespace AppInstaller::Manifest { std::vector<FieldProcessInfo> result = {}; - if (manifestVersion >= ManifestVer{ s_ManifestVersionV1_3 }) + if (manifestVersion >= ManifestVer{ s_ManifestVersionV1_4 }) { result = { @@ -607,7 +607,7 @@ namespace AppInstaller::Manifest { std::vector<FieldProcessInfo> result = {}; - if (manifestVersion >= ManifestVer{ s_ManifestVersionV1_3 }) + if (manifestVersion >= ManifestVer{ s_ManifestVersionV1_4 }) { result = { diff --git a/src/AppInstallerCommonCore/Public/winget/ManifestCommon.h b/src/AppInstallerCommonCore/Public/winget/ManifestCommon.h @@ -32,7 +32,7 @@ namespace AppInstaller::Manifest constexpr std::string_view s_ManifestVersionV1_2 = "1.2.0"sv; // V1.3 manifest version - constexpr std::string_view s_ManifestVersionV1_3 = "1.3.0"sv; + constexpr std::string_view s_ManifestVersionV1_4 = "1.4.0"sv; // The manifest extension for the MS Store constexpr std::string_view s_MSStoreExtension = "msstore"sv; diff --git a/src/ManifestSchema/ManifestSchema.h b/src/ManifestSchema/ManifestSchema.h @@ -27,8 +27,8 @@ #define IDX_MANIFEST_SCHEMA_V1_2_DEFAULTLOCALE 215 #define IDX_MANIFEST_SCHEMA_V1_2_LOCALE 216 -#define IDX_MANIFEST_SCHEMA_V1_3_SINGLETON 217 -#define IDX_MANIFEST_SCHEMA_V1_3_VERSION 218 -#define IDX_MANIFEST_SCHEMA_V1_3_INSTALLER 219 -#define IDX_MANIFEST_SCHEMA_V1_3_DEFAULTLOCALE 220 -#define IDX_MANIFEST_SCHEMA_V1_3_LOCALE 221 +#define IDX_MANIFEST_SCHEMA_V1_4_SINGLETON 217 +#define IDX_MANIFEST_SCHEMA_V1_4_VERSION 218 +#define IDX_MANIFEST_SCHEMA_V1_4_INSTALLER 219 +#define IDX_MANIFEST_SCHEMA_V1_4_DEFAULTLOCALE 220 +#define IDX_MANIFEST_SCHEMA_V1_4_LOCALE 221 diff --git a/src/ManifestSchema/ManifestSchema.rc b/src/ManifestSchema/ManifestSchema.rc @@ -83,8 +83,8 @@ IDX_MANIFEST_SCHEMA_V1_2_INSTALLER MANIFESTSCHEMA_RESOURCE_TYPE "..\ IDX_MANIFEST_SCHEMA_V1_2_DEFAULTLOCALE MANIFESTSCHEMA_RESOURCE_TYPE "..\\..\\schemas\\JSON\\manifests\\v1.2.0\\manifest.defaultLocale.1.2.0.json" IDX_MANIFEST_SCHEMA_V1_2_LOCALE MANIFESTSCHEMA_RESOURCE_TYPE "..\\..\\schemas\\JSON\\manifests\\v1.2.0\\manifest.locale.1.2.0.json" -IDX_MANIFEST_SCHEMA_V1_3_SINGLETON MANIFESTSCHEMA_RESOURCE_TYPE "..\\..\\schemas\\JSON\\manifests\\v1.3.0\\manifest.singleton.1.3.0.json" -IDX_MANIFEST_SCHEMA_V1_3_VERSION MANIFESTSCHEMA_RESOURCE_TYPE "..\\..\\schemas\\JSON\\manifests\\v1.3.0\\manifest.version.1.3.0.json" -IDX_MANIFEST_SCHEMA_V1_3_INSTALLER MANIFESTSCHEMA_RESOURCE_TYPE "..\\..\\schemas\\JSON\\manifests\\v1.3.0\\manifest.installer.1.3.0.json" -IDX_MANIFEST_SCHEMA_V1_3_DEFAULTLOCALE MANIFESTSCHEMA_RESOURCE_TYPE "..\\..\\schemas\\JSON\\manifests\\v1.3.0\\manifest.defaultLocale.1.3.0.json" -IDX_MANIFEST_SCHEMA_V1_3_LOCALE MANIFESTSCHEMA_RESOURCE_TYPE "..\\..\\schemas\\JSON\\manifests\\v1.3.0\\manifest.locale.1.3.0.json"- \ No newline at end of file +IDX_MANIFEST_SCHEMA_V1_4_SINGLETON MANIFESTSCHEMA_RESOURCE_TYPE "..\\..\\schemas\\JSON\\manifests\\v1.4.0\\manifest.singleton.1.4.0.json" +IDX_MANIFEST_SCHEMA_V1_4_VERSION MANIFESTSCHEMA_RESOURCE_TYPE "..\\..\\schemas\\JSON\\manifests\\v1.4.0\\manifest.version.1.4.0.json" +IDX_MANIFEST_SCHEMA_V1_4_INSTALLER MANIFESTSCHEMA_RESOURCE_TYPE "..\\..\\schemas\\JSON\\manifests\\v1.4.0\\manifest.installer.1.4.0.json" +IDX_MANIFEST_SCHEMA_V1_4_DEFAULTLOCALE MANIFESTSCHEMA_RESOURCE_TYPE "..\\..\\schemas\\JSON\\manifests\\v1.4.0\\manifest.defaultLocale.1.4.0.json" +IDX_MANIFEST_SCHEMA_V1_4_LOCALE MANIFESTSCHEMA_RESOURCE_TYPE "..\\..\\schemas\\JSON\\manifests\\v1.4.0\\manifest.locale.1.4.0.json"+ \ No newline at end of file diff --git a/src/ManifestSchema/ManifestSchema.vcxitems b/src/ManifestSchema/ManifestSchema.vcxitems @@ -37,10 +37,10 @@ <None Include="$(MSBuildThisFileDirectory)..\..\schemas\JSON\manifests\v1.2.0\manifest.locale.1.2.0.json" /> <None Include="$(MSBuildThisFileDirectory)..\..\schemas\JSON\manifests\v1.2.0\manifest.singleton.1.2.0.json" /> <None Include="$(MSBuildThisFileDirectory)..\..\schemas\JSON\manifests\v1.2.0\manifest.version.1.2.0.json" /> - <None Include="$(MSBuildThisFileDirectory)..\..\schemas\JSON\manifests\v1.3.0\manifest.defaultLocale.1.3.0.json" /> - <None Include="$(MSBuildThisFileDirectory)..\..\schemas\JSON\manifests\v1.3.0\manifest.installer.1.3.0.json" /> - <None Include="$(MSBuildThisFileDirectory)..\..\schemas\JSON\manifests\v1.3.0\manifest.locale.1.3.0.json" /> - <None Include="$(MSBuildThisFileDirectory)..\..\schemas\JSON\manifests\v1.3.0\manifest.singleton.1.3.0.json" /> - <None Include="$(MSBuildThisFileDirectory)..\..\schemas\JSON\manifests\v1.3.0\manifest.version.1.3.0.json" /> + <None Include="$(MSBuildThisFileDirectory)..\..\schemas\JSON\manifests\v1.4.0\manifest.defaultLocale.1.4.0.json" /> + <None Include="$(MSBuildThisFileDirectory)..\..\schemas\JSON\manifests\v1.4.0\manifest.installer.1.4.0.json" /> + <None Include="$(MSBuildThisFileDirectory)..\..\schemas\JSON\manifests\v1.4.0\manifest.locale.1.4.0.json" /> + <None Include="$(MSBuildThisFileDirectory)..\..\schemas\JSON\manifests\v1.4.0\manifest.singleton.1.4.0.json" /> + <None Include="$(MSBuildThisFileDirectory)..\..\schemas\JSON\manifests\v1.4.0\manifest.version.1.4.0.json" /> </ItemGroup> </Project> \ No newline at end of file diff --git a/src/ManifestSchema/ManifestSchema.vcxitems.filters b/src/ManifestSchema/ManifestSchema.vcxitems.filters @@ -16,9 +16,9 @@ <Filter Include="schema\v1.2.0"> <UniqueIdentifier>{fb3524f4-5541-468d-a33c-ddcdad90484d}</UniqueIdentifier> </Filter> - <Filter Include="schema\v1.3.0"> + <Filter Include="schema\v1.4.0"> <UniqueIdentifier>{422a18e9-7735-412d-b16b-98d9d53a1632}</UniqueIdentifier> - </Filter> + </Filter> </ItemGroup> <ItemGroup> <ClInclude Include="$(MSBuildThisFileDirectory)ManifestSchema.h" /> @@ -76,20 +76,20 @@ <None Include="$(MSBuildThisFileDirectory)..\..\schemas\JSON\manifests\v1.2.0\manifest.singleton.1.2.0.json"> <Filter>schema\v1.2.0</Filter> </None> - <None Include="$(MSBuildThisFileDirectory)..\..\schemas\JSON\manifests\v1.3.0\manifest.version.1.3.0.json"> - <Filter>schema\v1.3.0</Filter> + <None Include="$(MSBuildThisFileDirectory)..\..\schemas\JSON\manifests\v1.4.0\manifest.version.1.4.0.json"> + <Filter>schema\v1.4.0</Filter> + </None> + <None Include="$(MSBuildThisFileDirectory)..\..\schemas\JSON\manifests\v1.4.0\manifest.defaultLocale.1.4.0.json"> + <Filter>schema\v1.4.0</Filter> </None> - <None Include="$(MSBuildThisFileDirectory)..\..\schemas\JSON\manifests\v1.3.0\manifest.defaultLocale.1.3.0.json"> - <Filter>schema\v1.3.0</Filter> + <None Include="$(MSBuildThisFileDirectory)..\..\schemas\JSON\manifests\v1.4.0\manifest.installer.1.4.0.json"> + <Filter>schema\v1.4.0</Filter> </None> - <None Include="$(MSBuildThisFileDirectory)..\..\schemas\JSON\manifests\v1.3.0\manifest.installer.1.3.0.json"> - <Filter>schema\v1.3.0</Filter> + <None Include="$(MSBuildThisFileDirectory)..\..\schemas\JSON\manifests\v1.4.0\manifest.locale.1.4.0.json"> + <Filter>schema\v1.4.0</Filter> </None> - <None Include="$(MSBuildThisFileDirectory)..\..\schemas\JSON\manifests\v1.3.0\manifest.locale.1.3.0.json"> - <Filter>schema\v1.3.0</Filter> + <None Include="$(MSBuildThisFileDirectory)..\..\schemas\JSON\manifests\v1.4.0\manifest.singleton.1.4.0.json"> + <Filter>schema\v1.4.0</Filter> </None> - <None Include="$(MSBuildThisFileDirectory)..\..\schemas\JSON\manifests\v1.3.0\manifest.singleton.1.3.0.json"> - <Filter>schema\v1.3.0</Filter> - </None> </ItemGroup> </Project> \ No newline at end of file diff --git a/src/WinGetYamlFuzzing/WinGetYamlFuzzing.vcxproj b/src/WinGetYamlFuzzing/WinGetYamlFuzzing.vcxproj @@ -30,7 +30,7 @@ <ConfigurationType>Application</ConfigurationType> <UseDebugLibraries>false</UseDebugLibraries> <PlatformToolset>v142</PlatformToolset> - <PlatformToolset Condition="'$(VisualStudioVersion)' == '17.0'">v143</PlatformToolset> + <PlatformToolset Condition="'$(VisualStudioVersion)' == '17.0'">v143</PlatformToolset> <WholeProgramOptimization>false</WholeProgramOptimization> <CharacterSet>Unicode</CharacterSet> </PropertyGroup>