diff --git a/.github/actions/spelling/expect.txt b/.github/actions/spelling/expect.txt index 596fce2769..a639053b5f 100644 --- a/.github/actions/spelling/expect.txt +++ b/.github/actions/spelling/expect.txt @@ -91,6 +91,7 @@ desktopappinstaller dirs diskfull dnld +Dobbeleer dustojnikhummer dvinns dw @@ -130,6 +131,7 @@ GESMBH GHS gity Globals +Google helplib helplibrary hhx @@ -370,6 +372,7 @@ wesome windir windowsdeveloper winerror +wingetcreate wingetdev winreg withstarts @@ -382,5 +385,6 @@ wwinmain WZDNCRFJ XPLATSTR xsi +yamlcreateps Zanollo -zy +zy \ No newline at end of file diff --git a/.github/actions/spelling/patterns.txt b/.github/actions/spelling/patterns.txt index 9e419885a7..1adeefe415 100644 --- a/.github/actions/spelling/patterns.txt +++ b/.github/actions/spelling/patterns.txt @@ -40,7 +40,7 @@ http://rfc3161.gtm.corp.microsoft.com/TSS/HttpTspServer "pattern": .*$ # doc/ManifestSpecv1.0.md -^ShortDescription: "Le nouveau.*"$ +^ShortDescription: Le nouveau.*$ # Ignore test patterns REQUIRE\(RestHelper::GetRestAPIBaseUri\(".*"\) == L".*" @@ -49,4 +49,4 @@ REQUIRE\(RestHelper::GetRestAPIBaseUri\(".*"\) == L".*" \%[0-9A-F]{2} # Sample store product id for App Installer -9nblggh4nns1 \ No newline at end of file +9nblggh4nns1 diff --git a/doc/ManifestSpecv0.1.md b/doc/ManifestSpecv0.1.md deleted file mode 100644 index beefe4974c..0000000000 --- a/doc/ManifestSpecv0.1.md +++ /dev/null @@ -1,287 +0,0 @@ -winget uses the YAML file to locate and install tools for Windows users. This spec provides the supported tags and when introduced. As well as best practices. - -Table of Contents ----------------------------------- -YAML Spec - 1) YAML Syntax - 2) Minimal YAML file example - 3) Best Practices -History - - -# YAML Spec - -## YAML file name and folder structure -YAML files shall be added to the repository with the following folder structure: -publisher / application / application-version.yaml - -* Publisher folder is the name of the company that publishes the tool. For example: Microsoft. -* The child folder application is the name of the application or tool. For example: VSCode. -* The filename must be a combination of the application name and the current version. For example: VSCode-1.0.0.yaml. - -The publisher and application folders MUST match the values used to define the Id. See Id: in the YAML for more detail. -The version in the filename should match the version field value in the YAML file. See Version: in the YAML for more detail. - -## YAML Syntax -Each field in the file must be PascalCased and cannot be duplicated. - -```YAML -# Id is a required field. It MUST include the publisher name and application name separated by a period. -# The Id convention and folder convention MUST match. Therefore all entries MUST look like this: -# ID: PublisherName.ApplicationName -# and the folder structure PublisherName\ApplicationName\ApplicationName-Version.YAML -# Restrictions: No white spaces allowed. [min: 4, max:255] -Id: microsoft.msixsdk - -# Name is a required field. It should be the friendly name of the application. -# Restrictions: [min: 1, max:128] -Name: MSIX SDK - -# AppMoniker is the common name someone may use to search for the application. -# Restrictions: No white spaces allowed. [min: 1, max:40] -AppMoniker: msixsdk - -# Version is a required field. It is the specific version of this copy of the application. -# Versions should be separated by a period, but we will support other delimiters. -# Versions should be limited to four fields: Major.Minor.Build.Update. -# Versions will be sorted as integers following the following pattern: Major.Minor.Build.Patch. -# Restrictions: 4 sections with max value of 65535. For example:65535.65535.65535.65535 -Version: 1.7.32 - -# Publisher is a required field. It should be the legal company name. -# Restrictions: [min: 1, max:128] -Publisher: Microsoft - -# Channel a string representing the flight ring. For example: stable, beta, canary. -# By default searches will not expose results with the channel specified. -# Restrictions: [min: 1, max:40] -Channel: Prerelease - -# The person or company responsible for authoring the tool. -# Restrictions: [min: 1, max:40] -Author: Microsoft - -# License is a required field. License provides the type of license the application is provided under. -# For example: BSD, MIT, Apache, Microsoft Public License, commercial -# Restrictions: [min: 1, max:40] -License: MIT License - -# LicenseURL provides a link to the license for the user to read. -# Restrictions: The LicenseUrl must be a valid secure URL, for example beginning with https and -# followed by a hostname. [min: 10, max:2000] -LicenseUrl: https://github.com/microsoft/msix-packaging/blob/master/LICENSE - -# MinOSVersion uses the Windows version to limit installations on unsupported platforms. -# For example specifying 10.0.18362.0 will only allows this tool to be installed on Windows build 1903 or greater. -# Restrictions: must follow Windows versioning model. 4 sections with max value of 65535. For example:65535.65535.65535.65535 -MinOSVersion: 10.0.0.0 - -# Description should be friendly providing insights into the value of the tool. -# Restrictions: [min: 1, max:500] -Description: - The MSIX SDK project is an effort to enable developers - on a variety of platforms to pack and unpack packages - for the purposes of distribution from either the Microsoft - Store, or their own content distribution networks. - -# Homepage is a URL where the user can find more information on the tool. -# Restrictions: The Homepage must be a valid secure URL, for example beginning with https and -# followed by a hostname. [min: 10, max:2000] -Homepage: https://github.com/microsoft/msix-packaging - -# Tags are comma separated list. They represent strings that the user may use to search for a given tool. -# Restrictions: [min: 1, max:40] -Tags: "msix, appx" - -# FileExtensions is a comma separated list. FileExtensions provides the list of extensions the application could support. -# FileExtensions are not supported in this preview (5/24/2020) -# Restrictions: [min: 1, max:40] -FileExtensions: "docx, doc" - -# Protocols is a comma separated list. Protocols provides the list of protocols the application provides a handler for. -# Protocols are not supported in this preview (5/24/2020) -# Restrictions: [min: 1, max:40] -Protocols: "ms-winget" - -# Commands are the common executable or alias that the user might type trying to run the application. -# For example "code" for VSCode. If multiple commands are supported, the commands must be separated by a comma. -# Restrictions: [min: 1, max:40] -Commands: "code" - -# InstallerType is a required field in the root or for each installer entry. -# Supported types are inno, wix, msi, nullsoft, zip, appx, msix and exe. -# The winget command tool uses this value to assist in installing this application. -# If the value is an exe, you will need to provide the quiet switches. -# zip is not supported in this preview (5/24/2020) -# Restrictions: [min: 1, max:40] -InstallerType: msix - -# winget by default specifies silent or quiet mode to the installers. The following additional -# switches can be used to change the install behavior if supported by the InstallerType. -# When scripting, custom switches may also be passed on the command line to winget. -# The following switches are supported: Custom, Silent, SilentWithProgress, Interactive, Language, Log and InstallLocation. - -Switches: - -# Custom switches will be passed directly to the installer by winget. -# Restrictions: [min: 1, max:128] - Custom: MyCustomString - -# During any installation, only one of the next three switches [Silent, SilentWithProgress, Interactive] will be passed to the -# installer when provided by the user. - -# Silent represents the value that should be passed to the installer when the user chooses a silent or quiet install. -# For example, some installers support "/s". -# Restrictions: [min: 1, max:40] - Silent: /s - -# SilentWithProgress represents the value that should be passed to the installer when the user chooses to install a non-interactive install. -# For example, some installers support "passive". - SilentWithProgress: passive - -# Interactive represents the value that should be passed to the installer when the tool requires user interaction. If the installer has a flag -# that when passed to the installer, causes it to require user input, it should be provided here. This flag will be used when the user passes the -# --interactive switch to the installer. -# Interactive is not supported in this preview (5/24/2020) - Interactive: /ShowEula - -# Some installers include all localized resources. By specifying a Language switch, winget will pass the value of language to the installer, -# when the installer is called. -# Language is not supported in this preview (5/24/2020) - Language: en-US - -# Installers often write logging files. A user may want to redirect the log to a different location. In order to redirect the log file, the user will -# pass in a log file path to the installer. For example: --log "%temp%\mylog.txt". The file will be saved as a token in the client: . Therefore, -# if the installer supports log redirection, then the Log switch should be the flag that the installer expects to provide the path to the log -# file. For example: /LOG=. -# Log must include the token. - Log: /LOG= - -# Some installers allow for installing to an alternate location. A user may want to redirect the default install to a different location. -# In order to redirect the install location, the user will pass in a installation path to the installer. For example: --installlocation "c:\mytool". -# The folder path will be saved as a token in the client: . Therefore, if the installer supports install location redirection, -# then the InstallLocation switch must be the flag that the installer expects to redirect the installation path. -# For example: /InstallLocation=. -# InstallLocation must include the token. - InstallLocation: /DIR= - -# ======================= Installers ================== - -# Installers represents the collection of entries that define the actual installer. The installer provides the architecture, url and hash that -# ensure that the installer has not been tampered with. -Installers: - # Arch is a required field. Arch is the architecture of the tool, and is a required field to ensure that the tool will install correctly. - # Supported values: arm, arm64, x86, x64 and neutral - - - Arch: x86 - # Url is a required field. This provides the path to the installer. - # The Url must begin with https:// and followed by a hostname. - # Restrictions: [min: 10, max:2000] - Url: https://contosa.net/publiccontainer/contosainstaller.exe - - # Sha256 is a required field. The value is the hash of the installer and used to verify the executable - # Restrictions: [valid sha256 hash] - Sha256: 69D84CA8899800A5575CE31798293CD4FEBAB1D734A07C2E51E56A28E0DF8C82 - - # SignatureSha256 is a recommended field for MSIX files only. The value is the signature file's hash of the MSIX file. - # By providing the SignatureSha256, you can improve the installation performance of the application. - # The SignatureSha256 can be found by typing winget create hash -msix . For more details see: - # https://github.com/microsoft/winget-cli/docs/create.md - # Restrictions: [valid sha256 hash] - SignatureSha256: 69D84CA8899800A5575CE31798293CD4FEBAB1D734A07C2E51E56A28E0DF8C82 - - # Language is the specific language of the installer. If no language is specified, the installer will display for all users. - # Language must follow IETF language tag guidelines. - # Language is not supported in this preview (5/24/2020) - Language: en-US - - # InstallerType is a required field if not defined at the root. Unless specified, the InstallerType will be assumed to be the same InstallerType as the root. - # See further restrictions on InstallerType earlier in this document. - InstallerType: msix - - # Scope indicates if the installer is per user or per machine. - # Supported values: user and machine - # Unless specified, user is the default. - # Scope is not supported in this preview (5/24/2020) - Scope: user - - - # ProductCode will be used in upgrade scenarios and to locate the uninstall string to uninstall the application. - # For MSI there is an explicit product code. Typically a GUID that is typically found in the uninstall registry location and includes the brackets. - # For example: {5740BD44-B58D-321A-AFC0-6D3D4556DD6C} - # [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{3740BD44-B58D-321A-AFC0-6D3D4556DD6C}] - # [HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{3740BD44-B58D-321A-AFC0-6D3D4556DD6C}] - # For inno, wix, nullsoft, and exe, the ProductCode should be a string that is located in either of the Uninstall keys above. - ProductCode: "{05321FDB-BBA2-497D-99C6-C440E184C043}" - - # PackageFamilyName will be used in upgrade scenarios and to locate the uninstall string to uninstall the application. - # MSIX installers have an explicit PackageFamilyName. For example: Contoso.Toolbox.Finance_7wekyb3d8bbwe - # Restrictions: [min: 3, max:128] - PackageFamilyName: Microsoft.WindowsTerminal_8wekyb3d8bbwe - - # Switches in installers can override the root specified switches. See definition earlier in this document. - Switches: - Language: /en-US - Custom: /s - - # This is an example of an additional installer. - # See further restrictions earlier in this document. - # Support for multiple installers are not supported in this preview (5/24/2020) - - Arch: x64 - Url: https://contosa.net/publiccontainer/contosainstaller64.exe - Sha256: 69D84CA8899800A5575CE31798293CD4FEBAB1D734A07C2E51E56A28E0DF8C83 - Language: en-US - Scope: user - - # Localized values will provide links and text to match the users settings. For example the following links and text will be displayed instead. -Localization: - - Language: es-MX - Description: Text to display for es-MX - Homepage: https://github.com/microsoft/msix-packaging/es-MX - LicenseUrl: https://github.com/microsoft/msix-packaging/blob/master/LICENSE-es-MX - -# ManifestVersion is a required field. ManifestVersion will allow the client to detect updated manifests and treat it differently. -ManifestVersion: 0.1.0 - -``` -## Minimal YAML file example -As specified above, only a number of fields are required. The minimal supported YAML file would look like this and be exposed in english to all Windows 10 users. - -```YAML -Id: Microsoft.VisualStudioCode -Version: 1.41.1 -Name: Visual Studio Code -Publisher: Microsoft Corporation -License: MIT License -Installers: - - Arch: x64 - Url: https://aka.ms/win32-x64-user-stable - Installertype: Inno - Sha256: 65DB2F2AC2686C7F2FD69D4A4C6683B888DC55BFA20A0E32CA9F838B51689A3B -ManifestVersion: 0.1.0 -``` -## Best Practices -The Id must be unique. You cannot have multiple submissions with the same Id. - -Avoid creating multiple publisher folders. For example, do not create "Contoso Ltd." if there is already a "Contoso" folder. - -All tools must support a silent install. If you have an executable that does not support a silent install, then we cannot provide that tool at this time. Provide feedback to the repo. If this is a restriction that you would like to see removed add an issue or up vote it. -My installer supports a silent install, but is not one of the supported InstallerTypes. How can I get it added to your repo. Ping us on the repo. - -Provide as many fields as possible. The more data you provide the better the user will find the tool. - -Length of strings in this spec should be limited to 100 characters before a line break. - - -History: - -| Version | Date | Description | -| ------------- |-------------| -----| -| .01 | 1/6/2020 | draft | -| .02 | 1/9/2020 | Made many modifications based on constructive feedback | -| .03 | 1/31/2020 | Made many modifications based on constructive feedback | -| .04 | 3/18/2020 | Documented the msix hash support | -| .05 | 4/1/2020 | Added restrictions. Added SystemAppId | -| .06 | 4/23/2020 | Renamed client. Updated License to required. | -| .07 | 5/15/2020 | Add ManifestVersion. | -| .08 | 2/17/2021 | Fixed minimal example based on required fields documentation | diff --git a/doc/ManifestSpecv1.0.md b/doc/ManifestSpecv1.0.md index 85d5e50bc5..e26d15bdc0 100644 --- a/doc/ManifestSpecv1.0.md +++ b/doc/ManifestSpecv1.0.md @@ -42,24 +42,24 @@ a single installer and a single locale. If more than one installer or locale is The partitioning scheme was added to help with GitHub's UX. Folders with thousands of children do not render well in the browser. -Path: manifests / m / Microsoft / WindowsTerminal / 1.6.10571.0 / WindowsTerminal.yaml +Path: manifests / m / Microsoft / WindowsTerminal / 1.6.10571.0 / Microsoft.WindowsTerminal.yaml ```YAML -PackageIdentifier: "Microsoft.WindowsTerminal" -PackageVersion: "1.6.10571.0" -PackageLocale: "en-US" -Publisher: "Microsoft" -PackageName: "Windows Terminal" -License: "MIT" -ShortDescription: "The new Windows Terminal, a tabbed command line experience for Windows." +PackageIdentifier: Microsoft.WindowsTerminal +PackageVersion: 1.6.10571.0 +PackageLocale: en-US +Publisher: Microsoft +PackageName: Windows Terminal +License: MIT +ShortDescription: The new Windows Terminal, a tabbed command line experience for Windows. Installers: - - Architecture: "x64" - InstallerType: "msix" - InstallerUrl: "https://github.com/microsoft/terminal/releases/download/v1.6.10571.0/Microsoft.WindowsTerminal_1.6.10571.0_8wekyb3d8bbwe.msixbundle" + - Architecture: x64 + InstallerType: msix + InstallerUrl: https://github.com/microsoft/terminal/releases/download/v1.6.10571.0/Microsoft.WindowsTerminal_1.6.10571.0_8wekyb3d8bbwe.msixbundle InstallerSha256: 092aa89b1881e058d31b1a8d88f31bb298b5810afbba25c5cb341cfa4904d843 SignatureSha256: e53f48473621390c8243ada6345826af7c713cf1f4bbbf0d030599d1e4c175ee -ManifestType: "singleton" -ManifestVersion: "1.0.0" +ManifestType: singleton +ManifestVersion: 1.0.0 ``` ## Multiple file YAML example @@ -77,83 +77,83 @@ command, any required fields that aren't provided for additional locales will di Path: manifests / m / Microsoft / WindowsTerminal / 1.6.10571.0 / Microsoft.WindowsTerminal.yaml ```YAML -PackageIdentifier: "Microsoft.WindowsTerminal" -PackageVersion: "1.6.10571.0" -DefaultLocale: "en-US" -ManifestType: "version" -ManifestVersion: "1.0.0" +PackageIdentifier: Microsoft.WindowsTerminal +PackageVersion: 1.6.10571.0 +DefaultLocale: en-US +ManifestType: version +ManifestVersion: 1.0.0 ``` Path: manifests / m / Microsoft / WindowsTerminal / 1.6.10571.0 / Microsoft.WindowsTerminal.locale.en-US.yaml ```YAML -PackageIdentifier: "Microsoft.WindowsTerminal" -PackageVersion: "1.6.10571.0" -PackageLocale: "en-US" -Publisher: "Microsoft" -PublisherUrl: "https://www.microsoft.com/" -PrivacyUrl: "https://privacy.microsoft.com/" -PackageName: "Windows Terminal" -PackageUrl: "https://docs.microsoft.com/windows/terminal/" -License: "MIT" -LicenseUrl: "https://github.com/microsoft/terminal/blob/master/LICENSE" -ShortDescription: "The new Windows Terminal, a tabbed command line experience for Windows." +PackageIdentifier: Microsoft.WindowsTerminal +PackageVersion: 1.6.10571.0 +PackageLocale: en-US +Publisher: Microsoft +PublisherURL: https://www.microsoft.com/ +PrivacyURL: https://privacy.microsoft.com/ +PackageName: Windows Terminal +PackageURL: https://docs.microsoft.com/windows/terminal/ +License: MIT +LicenseURL: https://github.com/microsoft/terminal/blob/master/LICENSE +ShortDescription: The new Windows Terminal, a tabbed command line experience for Windows. Tags: -- "Console" -- "Command-Line" -- "Shell" -- "Command-Prompt" -- "PowerShell" -- "WSL" -- "Developer-Tools" -- "Utilities" -- "cli" -- "cmd" -- "ps" -- "terminal" -ManifestType: "defaultLocale" -ManifestVersion: "1.0.0" +- console +- command-line +- shell +- command-prompt +- powershell +- wsl +- developer-tools +- utilities +- cli +- cmd +- ps +- terminal +ManifestType: defaultLocale +ManifestVersion: 1.0.0 ``` Path: manifests / m / Microsoft / WindowsTerminal / 1.6.10571.0 / Microsoft.WindowsTerminal.locale.fr-FR.yaml ```YAML -PackageIdentifier: "Microsoft.WindowsTerminal" -PackageVersion: "1.6.10571.0" -PackageLocale: "fr-FR" -Publisher: "Microsoft" -ShortDescription: "Le nouveau terminal Windows, une expérience de ligne de commande à onglets pour Windows." -ManifestType: "locale" -ManifestVersion: "1.0.0" +PackageIdentifier: Microsoft.WindowsTerminal +PackageVersion: 1.6.10571.0 +PackageLocale: fr-FR +Publisher: Microsoft +ShortDescription: Le nouveau terminal Windows, une expérience de ligne de commande à onglets pour Windows. +ManifestType: locale +ManifestVersion: 1.0.0 ``` Path: manifests / m / Microsoft / WindowsTerminal / 1.6.10571.0 / Microsoft.WindowsTerminal.installer.yaml ```YAML -PackageIdentifier: "Microsoft.WindowsTerminal" -PackageVersion: "1.6.10571.0" +PackageIdentifier: Microsoft.WindowsTerminal +PackageVersion: 1.6.10571.0 Platform: - - "Windows.Desktop" -MinimumOSVersion: "10.0.18362.0" -InstallerType: "msix" + - Windows.Desktop +MinimumOSVersion: 10.0.18362.0 +InstallerType: msix InstallModes: - - "silent" -PackageFamilyName: "Microsoft.WindowsTerminal_8wekyb3d8bbwe" + - silent +PackageFamilyName: Microsoft.WindowsTerminal_8wekyb3d8bbwe Installers: - - Architecture: "x64" - InstallerUrl: "https://github.com/microsoft/terminal/releases/download/v1.6.10571.0/Microsoft.WindowsTerminal_1.6.10571.0_8wekyb3d8bbwe.msixbundle" + - Architecture: x64 + InstallerUrl: https://github.com/microsoft/terminal/releases/download/v1.6.10571.0/Microsoft.WindowsTerminal_1.6.10571.0_8wekyb3d8bbwe.msixbundle InstallerSha256: 092aa89b1881e058d31b1a8d88f31bb298b5810afbba25c5cb341cfa4904d843 SignatureSha256: e53f48473621390c8243ada6345826af7c713cf1f4bbbf0d030599d1e4c175ee - - Architecture: "arm64" - InstallerUrl: "https://github.com/microsoft/terminal/releases/download/v1.6.10571.0/Microsoft.WindowsTerminal_1.6.10571.0_8wekyb3d8bbwe.msixbundle" + - Architecture: arm64 + InstallerUrl: https://github.com/microsoft/terminal/releases/download/v1.6.10571.0/Microsoft.WindowsTerminal_1.6.10571.0_8wekyb3d8bbwe.msixbundle InstallerSha256: 092aa89b1881e058d31b1a8d88f31bb298b5810afbba25c5cb341cfa4904d843 SignatureSha256: e53f48473621390c8243ada6345826af7c713cf1f4bbbf0d030599d1e4c175ee - - Architecture: "x86" - InstallerUrl: "https://github.com/microsoft/terminal/releases/download/v1.6.10571.0/Microsoft.WindowsTerminal_1.6.10571.0_8wekyb3d8bbwe.msixbundle" + - Architecture: x86 + InstallerUrl: https://github.com/microsoft/terminal/releases/download/v1.6.10571.0/Microsoft.WindowsTerminal_1.6.10571.0_8wekyb3d8bbwe.msixbundle InstallerSha256: 092aa89b1881e058d31b1a8d88f31bb298b5810afbba25c5cb341cfa4904d843 SignatureSha256: e53f48473621390c8243ada6345826af7c713cf1f4bbbf0d030599d1e4c175ee -ManifestType: "installer" -ManifestVersion: "1.0.0" +ManifestType: installer +ManifestVersion: 1.0.0 ``` diff --git a/doc/windows/package-manager/index.md b/doc/windows/package-manager/index.md index d6c2d9fa30..c70c1f5ab5 100644 --- a/doc/windows/package-manager/index.md +++ b/doc/windows/package-manager/index.md @@ -8,9 +8,7 @@ ms.localizationpriority: medium # Windows Package Manager (preview) -[!INCLUDE [preview-note](../includes/package-manager-preview.md)] - -Windows Package Manager is a comprehensive [package manager solution](#understanding-package-managers) that consists of a command line tool and set of services for installing applications on Windows 10. +Windows Package Manager is a comprehensive [package manager solution](#understanding-package-managers) that consists of a command line tool and set of services for installing applications on Windows 10 and 11. ## Windows Package Manager for developers diff --git a/doc/windows/package-manager/package/index.md b/doc/windows/package-manager/package/index.md index b45ea5a66d..3110da5e08 100644 --- a/doc/windows/package-manager/package/index.md +++ b/doc/windows/package-manager/package/index.md @@ -8,8 +8,6 @@ ms.localizationpriority: medium # Submit packages to Windows Package Manager -[!INCLUDE [preview-note](../../includes/package-manager-preview.md)] - ## Independent Software Vendor (ISV) or Publisher If you are an ISV or Publisher, you can use Windows Package Manager as a distribution channel for software packages containing your applications. Windows Package Manager currently supports installers in the following formats: MSIX, MSI, and EXE. diff --git a/doc/windows/package-manager/package/manifest.md b/doc/windows/package-manager/package/manifest.md index b6d6d3c673..98aa651378 100644 --- a/doc/windows/package-manager/package/manifest.md +++ b/doc/windows/package-manager/package/manifest.md @@ -8,17 +8,27 @@ ms.localizationpriority: medium # Create your package manifest -[!INCLUDE [preview-note](../../includes/package-manager-preview.md)] +If you want to submit a software package to the [Windows Package Manager Community Repository](repository.md), start by creating a package manifest. The manifest is a YAML file that describes the application to be installed. -If you want to submit a software package to the [Windows Package Manager repository](repository.md), start by creating a package manifest. The manifest is a YAML file that describes the application to be installed. +You may either use the [Windows Package Manager Manifest Creator](https://github.com/microsoft/winget-create), the [YAMLCreate](#using-the-yamlcreateps1) PowerShell script, or you can craft a manifest manually following the instructions below. -This article describes the contents of a package manifest for Windows Package Manager. +### Using WinGetCreate Utility + +You can install `wingetcreate` utility using the command below. + +```powershell +winget install wingetcreate +``` + +After installation, you can run `wingetcreate new` to create a new package and fill in the prompts. The last option **WinGetCreate** will offer is for you to submit the manifest to the packages repository. If you choose yes, you will automatically submit your Pull Request (PR) to the [Windows Package Manager Community Repository](https://github.com/microsoft/winget-pkgs). + +### Using the YAMLCreate.ps1 +To help author manifest files, we have provided a YAMLCreate.ps1 powershell script located in the Tools folder on the [Windows Package Manager Community Repository](https://github.com/microsoft/winget-pkgs). You can use the script by cloning the [Windows Package Manager Community Repository](https://github.com/microsoft/winget-pkgs) on your PC and run the script directly from the **Tools** folder. The script will prompt you for the URL to the installer, then will prompt you to fill in metadata. Like **WinGetCreate**, this script will also offer you to submit your manifest automatically. ## YAML basics The YAML format was chosen for package manifests because of its relative ease of human readability and consistency with other Microsoft development tools. If you are not familiar with YAML syntax, you can learn the basics at [Learn YAML in Y Minutes](https://learnxinyminutes.com/docs/yaml/). -> [!NOTE] > Manifests for Windows Package Manager currently do not support all YAML features. Unsupported YAML features include anchors, complex keys, and sets. ## Conventions @@ -49,7 +59,7 @@ a single installer and a single locale. If more than one installer or locale is The partitioning scheme was added to help with GitHub's UX. Folders with thousands of children do not render well in the browser. -```yaml +```YAML PackageIdentifier: # Publisher.package format. PackageVersion: # Version numbering format. PackageLocale: # BCP 47 format (e.g. en-US) @@ -68,7 +78,7 @@ ManifestVersion: 1.0.0 #### [Example](#tab/minexample/) -Path: manifests / m / Microsoft / WindowsTerminal / 1.6.10571.0 / WindowsTerminal.yaml +Path: manifests / m / Microsoft / WindowsTerminal / 1.6.10571.0 / Microsoft.WindowsTerminal.yaml ```YAML PackageIdentifier: Microsoft.WindowsTerminal @@ -103,89 +113,88 @@ command, any required fields that aren't provided for additional locales will di Path: manifests / m / Microsoft / WindowsTerminal / 1.6.10571.0 / Microsoft.WindowsTerminal.yaml ```YAML -PackageIdentifier: "Microsoft.WindowsTerminal" -PackageVersion: "1.6.10571.0" -DefaultLocale: "en-US" -ManifestType: "version" -ManifestVersion: "1.0.0" +PackageIdentifier: Microsoft.WindowsTerminal +PackageVersion: 1.6.10571.0 +DefaultLocale: en-US +ManifestType: version +ManifestVersion: 1.0.0 ``` Path: manifests / m / Microsoft / WindowsTerminal / 1.6.10571.0 / Microsoft.WindowsTerminal.locale.en-US.yaml ```YAML -PackageIdentifier: "Microsoft.WindowsTerminal" -PackageVersion: "1.6.10571.0" -PackageLocale: "en-US" -Publisher: "Microsoft" -PublisherURL: "https://www.microsoft.com/" -PrivacyURL: "https://privacy.microsoft.com/" -PackageName: "Windows Terminal" -PackageURL: "https://docs.microsoft.com/windows/terminal/" -License: "MIT" -LicenseURL: "https://github.com/microsoft/terminal/blob/master/LICENSE" -ShortDescription: "The new Windows Terminal, a tabbed command line experience for Windows." +PackageIdentifier: Microsoft.WindowsTerminal +PackageVersion: 1.6.10571.0 +PackageLocale: en-US +Publisher: Microsoft +PublisherURL: https://www.microsoft.com/ +PrivacyURL: https://privacy.microsoft.com/ +PackageName: Windows Terminal +PackageURL: https://docs.microsoft.com/windows/terminal/ +License: MIT +LicenseURL: https://github.com/microsoft/terminal/blob/master/LICENSE +ShortDescription: The new Windows Terminal, a tabbed command line experience for Windows. Tags: -- "Console" -- "Command-Line" -- "Shell" -- "Command-Prompt" -- "PowerShell" -- "WSL" -- "Developer-Tools" -- "Utilities" -- "cli" -- "cmd" -- "ps" -- "terminal" -ManifestType: "defaultLocale" -ManifestVersion: "1.0.0" +- console +- command-line +- shell +- command-prompt +- powershell +- wsl +- developer-tools +- utilities +- cli +- cmd +- ps +- terminal +ManifestType: defaultLocale +ManifestVersion: 1.0.0 ``` Path: manifests / m / Microsoft / WindowsTerminal / 1.6.10571.0 / Microsoft.WindowsTerminal.locale.fr-FR.yaml ```YAML -PackageIdentifier: "Microsoft.WindowsTerminal" -PackageVersion: "1.6.10571.0" -PackageLocale: "fr-FR" -Publisher: "Microsoft" -ShortDescription: "Le nouveau terminal Windows, une expérience de ligne de commande à onglets pour Windows." -ManifestType: "locale" -ManifestVersion: "1.0.0" +PackageIdentifier: Microsoft.WindowsTerminal +PackageVersion: 1.6.10571.0 +PackageLocale: fr-FR +Publisher: Microsoft +ShortDescription: Le nouveau terminal Windows, une expérience de ligne de commande à onglets pour Windows. +ManifestType: locale +ManifestVersion: 1.0.0 ``` Path: manifests / m / Microsoft / WindowsTerminal / 1.6.10571.0 / Microsoft.WindowsTerminal.installer.yaml ```YAML -PackageIdentifier: "Microsoft.WindowsTerminal" -PackageVersion: "1.6.10571.0" +PackageIdentifier: Microsoft.WindowsTerminal +PackageVersion: 1.6.10571.0 Platform: - - "Windows.Desktop" -MinimumOSVersion: "10.0.18362.0" -InstallerType: "msix" + - Windows.Desktop +MinimumOSVersion: 10.0.18362.0 +InstallerType: msix InstallModes: - - "silent" -PackageFamilyName: "Microsoft.WindowsTerminal_8wekyb3d8bbwe" + - silent +PackageFamilyName: Microsoft.WindowsTerminal_8wekyb3d8bbwe Installers: - - Architecture: "x64" - InstallerUrl: "https://github.com/microsoft/terminal/releases/download/v1.6.10571.0/Microsoft.WindowsTerminal_1.6.10571.0_8wekyb3d8bbwe.msixbundle" + - Architecture: x64 + InstallerUrl: https://github.com/microsoft/terminal/releases/download/v1.6.10571.0/Microsoft.WindowsTerminal_1.6.10571.0_8wekyb3d8bbwe.msixbundle InstallerSha256: 092aa89b1881e058d31b1a8d88f31bb298b5810afbba25c5cb341cfa4904d843 SignatureSha256: e53f48473621390c8243ada6345826af7c713cf1f4bbbf0d030599d1e4c175ee - - Architecture: "arm64" - InstallerUrl: "https://github.com/microsoft/terminal/releases/download/v1.6.10571.0/Microsoft.WindowsTerminal_1.6.10571.0_8wekyb3d8bbwe.msixbundle" + - Architecture: arm64 + InstallerUrl: https://github.com/microsoft/terminal/releases/download/v1.6.10571.0/Microsoft.WindowsTerminal_1.6.10571.0_8wekyb3d8bbwe.msixbundle InstallerSha256: 092aa89b1881e058d31b1a8d88f31bb298b5810afbba25c5cb341cfa4904d843 SignatureSha256: e53f48473621390c8243ada6345826af7c713cf1f4bbbf0d030599d1e4c175ee - - Architecture: "x86" - InstallerUrl: "https://github.com/microsoft/terminal/releases/download/v1.6.10571.0/Microsoft.WindowsTerminal_1.6.10571.0_8wekyb3d8bbwe.msixbundle" + - Architecture: x86 + InstallerUrl: https://github.com/microsoft/terminal/releases/download/v1.6.10571.0/Microsoft.WindowsTerminal_1.6.10571.0_8wekyb3d8bbwe.msixbundle InstallerSha256: 092aa89b1881e058d31b1a8d88f31bb298b5810afbba25c5cb341cfa4904d843 SignatureSha256: e53f48473621390c8243ada6345826af7c713cf1f4bbbf0d030599d1e4c175ee -ManifestType: "installer" -ManifestVersion: "1.0.0" +ManifestType: installer +ManifestVersion: 1.0.0 ``` * * * -> [!NOTE] -> if your installer is an .exe and it was built using Nullsoft or Inno, you may specify those values instead. When Nullsoft or Inno are specified, the client will automatically set the silent and silent with progress install behaviors for the installer. +> If your installer is an .exe and it was built using Nullsoft or Inno, you may specify those values instead. When Nullsoft or Inno are specified, the client will automatically set the silent and silent with progress install behaviors for the installer. ## Installer switches @@ -200,20 +209,18 @@ You can often figure out what silent `Switches` are available for an installer b ## Tips and best practices -* The package identifier must be unique. You cannot have multiple submissions with the same package identifier. Only one pull request per package version is allowed. +* The package identifier must be unique. You cannot have multiple submissions with the same package identifier. Only one pull request per package version is allowed. -* Avoid creating multiple publisher folders. For example, do not create "Contoso Ltd." if there is already a "Contoso" folder. +* Avoid creating multiple publisher folders. For example, do not create "Contoso Ltd." if there is already a "Contoso" folder. -* All tools must support a silent install. If you have an executable that does not support a silent install, then we cannot provide that tool at this time. +* All tools must support a silent install. If you have an executable that does not support a silent install, then we cannot provide that tool at this time. * Provide as many fields as possible. The more meta-data you provide the better the user experience will be. In some cases, the fields may not yet be supported -by the Windows Package Manager client (winget.exe). For example, the `AppMoniker` field is optional. However, if you include this field, customers will see results associated with the `AppMoniker` value when performing the [search](../winget/search.md) command (for example, **vscode** for **Visual Studio Code**). If there is only one app with the specified `AppMoniker` value, customers can install your application by specifying the moniker rather than the fully qualified package identifier. +by the Windows Package Manager client (winget.exe). For example, the `Moniker` field is optional. However, if you include this field, customers will see results associated with the `Moniker` value when performing the [search](../winget/search.md) command (for example, **vscode** for **Visual Studio Code**). If there is only one app with the specified `Moniker` value, customers can install your application by specifying the moniker rather than the fully qualified package identifier. * The length of strings in this specification should be limited to 100 characters before a line break. -* The "PackageName" should match the entry made in Add / Remove Programs to help the correlation with manifests to support **export**, and **upgrade**. - -* The "Publisher" should match the entry made in Add / Remove Programs to help the correlation with manifests to support **export**, and **upgrade**. +* The "PackageName" and "Publisher" should match the entry made in Add / Remove Programs to help the correlation with manifests to support **export**, and **upgrade**. * Package installers in MSI format use [Product Codes](https://docs.microsoft.com/windows/win32/msi/product-codes) to uniquely identify applications. The product code for a given version of a package should be included in the manifest to help ensure the best **upgrade** experience. diff --git a/doc/windows/package-manager/package/repository.md b/doc/windows/package-manager/package/repository.md index e0a72a5cfd..e6380402fe 100644 --- a/doc/windows/package-manager/package/repository.md +++ b/doc/windows/package-manager/package/repository.md @@ -8,14 +8,11 @@ ms.localizationpriority: medium # Submit your manifest to the repository -[!INCLUDE [preview-note](../../includes/package-manager-preview.md)] - After you create a [package manifest](manifest.md) that describes your application, you're ready to submit your manifest to the Windows Package Manager repository. This a public-facing repository that contains a collection of manifests that the **winget** tool can access. To submit your manifest, you'll upload it to the open source [https://github.com/microsoft/winget-pkgs](https://github.com/microsoft/winget-pkgs) repository on GitHub. After you submit a **pull request** to add a new manifest to the GitHub repository, an automated process will validate your manifest file and check to make sure the package complies with the [Windows Package Manager polices](windows-package-manager-policies.md) and is not known to be malicious. If this validation is successful, your package will be added to the public-facing Windows Package Manager repository so it can be discovered by the **winget** client tool. Note the distinction between the manifests in the open source GitHub repository and the public-facing Windows Package Manager repository. -> [!IMPORTANT] -> Microsoft reserves the right to refuse a submission for any reason. +> **Important**: Microsoft reserves the right to refuse a submission for any reason. ## Third-party repositories @@ -23,7 +20,7 @@ There are currently no known third party repositories. Microsoft is working with ## Manifest validation -When you submit a manifest to the [https://github.com/microsoft/winget-pkgs](https://github.com/microsoft/winget-pkgs) repository on GitHub, your manifest will be automatically validated and evaluated for the safety of the Windows ecosystem. Manifests may also be reviewed manually. +When you submit a manifest to the [https://github.com/microsoft/winget-pkgs](https://github.com/microsoft/winget-pkgs) repository on GitHub, your manifest will be automatically validated and evaluated for the safety of the Windows ecosystem. Manifests will be reviewed manually by [Community Moderators](https://github.com/microsoft/winget-pkgs/issues/15674). For information on the validation process, see [Windows Package Manager validation](winget-validation.md) @@ -36,7 +33,7 @@ To submit a manifest to the repository, follow these steps. The **winget** tool provides the [validate](../winget/validate.md) command to confirm that you have created your manifest correctly. To validate your manifest, use this command. ```CMD -winget validate \ +winget validate ``` If your validation fails, use the errors to locate the line number and make a correction. After your manifest is validated, you can submit it to the repository. @@ -50,41 +47,35 @@ Next, create a fork of the repository and clone it. 2. From a command line environment such as the Windows Command Prompt or PowerShell, use the following command to clone your fork. ```CMD - git clone \ + git clone ``` - 3. If you are making multiple submissions, make a branch instead of a fork. We currently allow only one manifest file per submission. + 3. If you are making multiple submissions, make a branch instead of a fork. We currently allow only one manifest file per PR. ```CMD - git checkout -b \ + git checkout -b ``` ### Step 3: Add your manifest to the local repository -You must add your manifest file to the repository in the following folder structure: +You must add your manifest files to the repository in the following folder structure: -**manifests** / **letter** / **publisher** / **application** / **version** / **Yaml file** +**manifests** / **letter** / **publisher** / **application** / **version** * The **manifests** folder is the root folder for all manifests in the repository. -* The **letter** folder is the first letter of the publisher name. +* The **letter** folder is the first letter of the publisher name in the lower case. For example, **m** of the publisher **Microsoft**. * The **publisher** folder is the name of the company that publishes the software. For example, **Microsoft**. * The **application** folder is the name of the application or tool. For example, **VSCode**. * The **version** folder is the version of the application or tool. For example, **1.0.0**. -* **Yaml File** is the file name of the manifest. The file name must be set to the name and publisher of the application. For example, **Contoso.ContosoApp.yaml**. -The `PackageIdentifier` value in the manifest must match the publisher and application names in the manifest folder path, and the `PackageVersion` value in the manifest must match the version in the file name. For more information, see [Create your package manifest](manifest.md#tips-and-best-practices). +The `PackageIdentifier` and the `PackageVersion` values in the manifest must match the publisher, application names and version in the manifest folder path. For more information, see [Create your package manifest](manifest.md#tips-and-best-practices). ### Step 4: Submit your manifest to the remote repository You're now ready to push your new manifest to the remote repository. -1. Use the `add` command to prepare for submission. - ```CMD - git add manifests\C\Contoso\ContosoApp\1.0.0\Contoso.ContosoApp.yaml - ``` - -2. Use the `commit` command to commit the change and provide information on the submission. +1. Use the `commit` command to add files and commit the change and provide information on the submission. ```CMD - git commit -m "Submitting ContosoApp version 1.0.0" + git commit -m "Submitting ContosoApp version 1.0.0" --all ``` 3. Use the `push` command to push the changes to the remote repository. diff --git a/doc/windows/package-manager/package/winget-validation.md b/doc/windows/package-manager/package/winget-validation.md index 2db71a1261..89c8ebcb66 100644 --- a/doc/windows/package-manager/package/winget-validation.md +++ b/doc/windows/package-manager/package/winget-validation.md @@ -39,8 +39,8 @@ encounter: | | | | **Azure-Pipeline-Passed** | The manifest has completed the test pass. It is waiting for approval. If no issues are encountered during the test pass it will automatically be approved. If a test fails, it may be flagged for manual review.| | **Blocking-Issue** | This label indicates that the **Pull Request** cannot be approved because there is a blocking issue. You can often tell what the blocking issue is by the included error label as well. | -| **Needs: Attention** | This label indicates that the **Pull Request** needs to be investigated by the Windows Package Manager development team. This is either due to a test failure that needs manual review, or a comment added to the **Pull Request** by the community. | -| **Needs: author feedback** | Indicates there is a failure with the submission. We will reassign **Pull Request** back to you. If you do not address the issue within 10 days, the bot will close the **pull request**. **Needs: author feedback** labels are typically added when there was a failure with the Pull Request that should be updated, or if the person reviewing the Pull Request has a question. | +| **Needs-Attention** | This label indicates that the **Pull Request** needs to be investigated by the Windows Package Manager development team. This is either due to a test failure that needs manual review, or a comment added to the **Pull Request** by the community. | +| **Needs-Author-Feedback** | Indicates there is a failure with the submission. We will reassign **Pull Request** back to you. If you do not address the issue within 10 days, the bot will close the **pull request**. **Needs-Author-Feedback** labels are typically added when there was a failure with the Pull Request that should be updated, or if the person reviewing the Pull Request has a question. | | **Validation-Completed** | Indicates that the test pass has been completed successfully and your **Pull Request** will be merged.| ### Error Labels diff --git a/doc/windows/package-manager/winget/export.md b/doc/windows/package-manager/winget/export.md index b17e03be7a..02094be816 100644 --- a/doc/windows/package-manager/winget/export.md +++ b/doc/windows/package-manager/winget/export.md @@ -8,8 +8,6 @@ ms.localizationpriority: medium # export command (winget) -[!INCLUDE [preview-note](../../includes/package-manager-preview.md)] - The **export** command of the [winget](index.md) tool exports a JSON file of apps to a specified file. The **export** command users JSON as the format. The JSON schema used by **winget** can be found [here](https://aka.ms/winget-packages.schema.1.0.json). The **export** combined with the [**import**](import.md) command allows you to batch install applications on your PC. @@ -33,8 +31,8 @@ The following arguments are available. The options allow you to customize the export experience to meet your needs. -|
Option
| Description | -|----------------|-------------| +| Option | Description | +|--------|-------------| | **-s, --source** | [optional] Specifies a source to export files from. Use this option when you only want files from a specific source. | | **--include-versions** | [optional] Includes the version of the app currently installed. Use this option if you want a specific version. By default, unless specified, [**import**](import.md) will use latest. | @@ -42,12 +40,12 @@ The options allow you to customize the export experience to meet your needs. The driving force behind the **export** command is the JSON file. As mentioned, you can find the schema for the JSON file [here](https://aka.ms/winget-packages.schema.1.0.json). The JSON file includes the following hierarchy: -| Entry | Description | +| Entry | Description | |-------------|-------------| | **Sources** | The sources application manifests come from. | | **Packages** | The collection of packages to install. | -| **Id** | The Windows Package Manager package identifier used to specify the package. | -| **Version** | [optional] The specific version of the package to install. | +| **PackageIdentifier** | The Windows Package Manager package identifier used to specify the package. | +| **Version** | [Optional] The specific version of the package to install. | ## exporting files @@ -55,8 +53,13 @@ When the Windows Package Manager exports the JSON file, it attempts to export al Note: matching an application depends on metadata in the manifest from a configured source, and metadata in Add / Remove Programs in Windows based on the package installer. -In the example below, you will see warnings for _reSearch_ and _Angry Birds_. +In the example below, you will see warnings for **WhatsApp Desktop** and **7-Zip**. ![export](images/export-command.png) -Once the export is complete, you can edit the resulting JSON file in your favorite editor. You can remove apps you do not wish to import in the future. +Once the export is complete, you can edit the resulting JSON file in your favorite editor. You can remove apps you do not wish to import in the future. + +## Related topics + +* [Use the winget tool to install and manage applications](index.md) + diff --git a/doc/windows/package-manager/winget/features.md b/doc/windows/package-manager/winget/features.md index e287b7c3e0..0ceac6082b 100644 --- a/doc/windows/package-manager/winget/features.md +++ b/doc/windows/package-manager/winget/features.md @@ -8,18 +8,14 @@ ms.localizationpriority: medium # features command (winget) -[!INCLUDE [preview-note](../../includes/package-manager-preview.md)] - The **features** command of the [winget](index.md) tool displays a list of the experimental features available with your version of the Windows Package Manager. Each feature can be turned on individually by enabling the features through [**settings**](settings.md). -You can find the latest up to date information features on the [experimental features](https://aka.ms/winget-experimentalfeatures) web page. +You can find the latest up to date information on the [experimental features](/doc/Settings.md#experimental-features) web page. ## Usage -`winget features` - ![features command](images/features.png) Notice above that the status of each feature is listed. If the feature is **disabled** you will not be able to use it. If the feature is **enabled** you will notice that the command will be available to you through winget. diff --git a/doc/windows/package-manager/winget/hash.md b/doc/windows/package-manager/winget/hash.md index 00a56fb18d..861ae1bbcc 100644 --- a/doc/windows/package-manager/winget/hash.md +++ b/doc/windows/package-manager/winget/hash.md @@ -8,15 +8,15 @@ ms.localizationpriority: medium # hash command (winget) -[!INCLUDE [preview-note](../../includes/package-manager-preview.md)] - The **hash** command of the [winget](index.md) tool generates the SHA256 hash for an installer. This command is used if you need to create a [manifest file](../package/manifest.md) for submitting software to the **Microsoft Community Package Manifest Repository** on GitHub. In addition, the **hash** command also supports generating a SHA256 certificate hash for MSIX files. ## Usage -`winget hash [-f] \ [\]` +`winget hash [--file] []` + +![hash](images/hash.png) -The **hash** sub command can only run on a local file. To use the **hash** sub command, download your installer to a known location. Then pass in the file path as an argument to the **hash** sub command. +The **hash** sub-command can only run on a local file. To use the **hash** sub-command, download your installer to a known location. Then pass in the file path as an argument to the **hash** sub-command. ## Arguments @@ -25,7 +25,7 @@ The following arguments are available: | Argument | Description | |--------------|-------------| | **-f,--file** | The path to the file to be hashed. | -| **-m,--msix** | Specifies that the hash command will also create the SHA 256 SignatureSha256 for use with MSIX installers. | +| **-m,--msix** | Specifies that the hash command will also create the SHA-256 SignatureSha256 for use with MSIX installers. | | **-?, --help** | Gets additional help on this command. | ## Related topics diff --git a/doc/windows/package-manager/winget/help.md b/doc/windows/package-manager/winget/help.md index 9653289043..3bb1010901 100644 --- a/doc/windows/package-manager/winget/help.md +++ b/doc/windows/package-manager/winget/help.md @@ -8,14 +8,12 @@ ms.localizationpriority: medium # help command (winget) -[!INCLUDE [preview-note](../../includes/package-manager-preview.md)] - The **help** command of the [winget](index.md) tool displays help for all the supported commands and sub commands. In addition, you can pass the **--help** argument to any other command to get details about all additional command options. ## Usage -* Display help for all commands: `winget --help` -* View options for a command: `winget --help` +* Display help for all commands: `winget --help` or `winget -?` +* View options for a command: `winget --help` or `winget -?` ## Related topics diff --git a/doc/windows/package-manager/winget/images/export-command.png b/doc/windows/package-manager/winget/images/export-command.png index de74ade0fd..43258b8614 100644 Binary files a/doc/windows/package-manager/winget/images/export-command.png and b/doc/windows/package-manager/winget/images/export-command.png differ diff --git a/doc/windows/package-manager/winget/images/export.png b/doc/windows/package-manager/winget/images/export.png index 7d35102c30..06dbf7fe52 100644 Binary files a/doc/windows/package-manager/winget/images/export.png and b/doc/windows/package-manager/winget/images/export.png differ diff --git a/doc/windows/package-manager/winget/images/features.png b/doc/windows/package-manager/winget/images/features.png index 271b39492d..3e56825f90 100644 Binary files a/doc/windows/package-manager/winget/images/features.png and b/doc/windows/package-manager/winget/images/features.png differ diff --git a/doc/windows/package-manager/winget/images/hash.png b/doc/windows/package-manager/winget/images/hash.png new file mode 100644 index 0000000000..78b27fe160 Binary files /dev/null and b/doc/windows/package-manager/winget/images/hash.png differ diff --git a/doc/windows/package-manager/winget/images/help.png b/doc/windows/package-manager/winget/images/help.png index 4e14af52eb..0f06d2491e 100644 Binary files a/doc/windows/package-manager/winget/images/help.png and b/doc/windows/package-manager/winget/images/help.png differ diff --git a/doc/windows/package-manager/winget/images/import-command.png b/doc/windows/package-manager/winget/images/import-command.png index a2232b2c16..afcb9ead14 100644 Binary files a/doc/windows/package-manager/winget/images/import-command.png and b/doc/windows/package-manager/winget/images/import-command.png differ diff --git a/doc/windows/package-manager/winget/images/import.png b/doc/windows/package-manager/winget/images/import.png index 2cb88dd92d..c0c162ec7f 100644 Binary files a/doc/windows/package-manager/winget/images/import.png and b/doc/windows/package-manager/winget/images/import.png differ diff --git a/doc/windows/package-manager/winget/images/install.png b/doc/windows/package-manager/winget/images/install.png index aae3a86531..4af39e3791 100644 Binary files a/doc/windows/package-manager/winget/images/install.png and b/doc/windows/package-manager/winget/images/install.png differ diff --git a/doc/windows/package-manager/winget/images/list-count.png b/doc/windows/package-manager/winget/images/list-count.png index 3f7c8987a1..1a7f13e356 100644 Binary files a/doc/windows/package-manager/winget/images/list-count.png and b/doc/windows/package-manager/winget/images/list-count.png differ diff --git a/doc/windows/package-manager/winget/images/list-id-source.png b/doc/windows/package-manager/winget/images/list-id-source.png new file mode 100644 index 0000000000..1dc91af519 Binary files /dev/null and b/doc/windows/package-manager/winget/images/list-id-source.png differ diff --git a/doc/windows/package-manager/winget/images/list-name.png b/doc/windows/package-manager/winget/images/list-name.png new file mode 100644 index 0000000000..6cee08990a Binary files /dev/null and b/doc/windows/package-manager/winget/images/list-name.png differ diff --git a/doc/windows/package-manager/winget/images/list-update.png b/doc/windows/package-manager/winget/images/list-update.png index 1e8b36eba3..41d9d182a2 100644 Binary files a/doc/windows/package-manager/winget/images/list-update.png and b/doc/windows/package-manager/winget/images/list-update.png differ diff --git a/doc/windows/package-manager/winget/images/list.png b/doc/windows/package-manager/winget/images/list.png index a6000da4e0..9c5e812408 100644 Binary files a/doc/windows/package-manager/winget/images/list.png and b/doc/windows/package-manager/winget/images/list.png differ diff --git a/doc/windows/package-manager/winget/images/search.png b/doc/windows/package-manager/winget/images/search.png index fcf240d3ce..11f9457efc 100644 Binary files a/doc/windows/package-manager/winget/images/search.png and b/doc/windows/package-manager/winget/images/search.png differ diff --git a/doc/windows/package-manager/winget/images/settings.png b/doc/windows/package-manager/winget/images/settings.png index 9426ed64e3..4fe8185a05 100644 Binary files a/doc/windows/package-manager/winget/images/settings.png and b/doc/windows/package-manager/winget/images/settings.png differ diff --git a/doc/windows/package-manager/winget/images/show.png b/doc/windows/package-manager/winget/images/show.png index 1f81f775aa..7324340989 100644 Binary files a/doc/windows/package-manager/winget/images/show.png and b/doc/windows/package-manager/winget/images/show.png differ diff --git a/doc/windows/package-manager/winget/images/source-list-winget.png b/doc/windows/package-manager/winget/images/source-list-winget.png new file mode 100644 index 0000000000..04996166a6 Binary files /dev/null and b/doc/windows/package-manager/winget/images/source-list-winget.png differ diff --git a/doc/windows/package-manager/winget/images/source-list.png b/doc/windows/package-manager/winget/images/source-list.png new file mode 100644 index 0000000000..f3d3598ca8 Binary files /dev/null and b/doc/windows/package-manager/winget/images/source-list.png differ diff --git a/doc/windows/package-manager/winget/images/source.png b/doc/windows/package-manager/winget/images/source.png index 8dcd2d0a61..5385b0d79f 100644 Binary files a/doc/windows/package-manager/winget/images/source.png and b/doc/windows/package-manager/winget/images/source.png differ diff --git a/doc/windows/package-manager/winget/images/uninstall-execute.png b/doc/windows/package-manager/winget/images/uninstall-execute.png index dbd2b38a86..7050a4896d 100644 Binary files a/doc/windows/package-manager/winget/images/uninstall-execute.png and b/doc/windows/package-manager/winget/images/uninstall-execute.png differ diff --git a/doc/windows/package-manager/winget/images/uninstall-multiple.png b/doc/windows/package-manager/winget/images/uninstall-multiple.png index 45e89cfda7..6b593a96f1 100644 Binary files a/doc/windows/package-manager/winget/images/uninstall-multiple.png and b/doc/windows/package-manager/winget/images/uninstall-multiple.png differ diff --git a/doc/windows/package-manager/winget/images/uninstall-with-list.png b/doc/windows/package-manager/winget/images/uninstall-with-list.png index 0d03830a21..e4bd84a68b 100644 Binary files a/doc/windows/package-manager/winget/images/uninstall-with-list.png and b/doc/windows/package-manager/winget/images/uninstall-with-list.png differ diff --git a/doc/windows/package-manager/winget/images/uninstall.png b/doc/windows/package-manager/winget/images/uninstall.png index ea05e5ad6c..af863d28ba 100644 Binary files a/doc/windows/package-manager/winget/images/uninstall.png and b/doc/windows/package-manager/winget/images/uninstall.png differ diff --git a/doc/windows/package-manager/winget/images/upgrade.gif b/doc/windows/package-manager/winget/images/upgrade.gif index ab86c0c5a4..0edfca89cb 100644 Binary files a/doc/windows/package-manager/winget/images/upgrade.gif and b/doc/windows/package-manager/winget/images/upgrade.gif differ diff --git a/doc/windows/package-manager/winget/images/upgrade.png b/doc/windows/package-manager/winget/images/upgrade.png index 04917cd374..9940b91018 100644 Binary files a/doc/windows/package-manager/winget/images/upgrade.png and b/doc/windows/package-manager/winget/images/upgrade.png differ diff --git a/doc/windows/package-manager/winget/import.md b/doc/windows/package-manager/winget/import.md index 1cc4905fa8..0d49559f4c 100644 --- a/doc/windows/package-manager/winget/import.md +++ b/doc/windows/package-manager/winget/import.md @@ -8,8 +8,6 @@ ms.localizationpriority: medium # import command (winget) -[!INCLUDE [preview-note](../../includes/package-manager-preview.md)] - The **import** command of the [winget](index.md) tool imports a JSON file of apps to install. The **import** command combined with the [**export**](export.md) command allows you to batch install applications on your PC. The **import** command is often used to share your developer environment or build up your PC image with your favorite apps. @@ -31,10 +29,10 @@ The following arguments are available. The options allow you to customize the import experience to meet your needs. -| Option | Description | +| Option | Description | |-------------|-------------| -| **--ignore-unavailable** | Suppresses errors if the app requested is unavailable | -| **--ignore-versions** | Ignores versions specified in the JSON file and installs the latest available version | +| **--ignore-unavailable** | Suppresses errors if the app requested is unavailable | +| **--ignore-versions** | Ignores versions specified in the JSON file and installs the latest available version | ## JSON Schema The driving force behind the **import** command is the JSON file. You can find the schema for the JSON file [here](https://aka.ms/winget-packages.schema.1.0.json). @@ -44,13 +42,13 @@ The JSON file includes the following hierarchy: |-------------|-------------| | **Sources** | The sources application manifests come from. | | **Packages** | The collection of packages to install. | -| **Id** | The Windows Package Manager package identifier used to specify the package. | +| **PackageIdentifier** | The Windows Package Manager package identifier used to specify the package. | | **Version** | [optional] The specific version of the package to install. | ## Importing files -When the Windows Package Manager imports the JSON file, it attempts to install the specified applications in a serial fashion. If the application is not available or the application is already installed, it will notify the user of that case. +When the Windows Package Manager imports the JSON file, it attempts to install the specified applications in a serial fashion. If the application is not available or the application is already installed, it will notify the user of that case. ![import](images/import-command.png) -You will notice in the example above, the Microsoft.WindowsTerminal was already installed. Therefore the import command skipped passed the installation. +You will notice in the example above, **Microsoft.VisualStudioCode** and **JanDeDobbeleer.OhMyPosh** were already installed. Therefore the import command skipped the installation. diff --git a/doc/windows/package-manager/winget/index.md b/doc/windows/package-manager/winget/index.md index 36dc4f6fa4..6bca02cab1 100644 --- a/doc/windows/package-manager/winget/index.md +++ b/doc/windows/package-manager/winget/index.md @@ -8,11 +8,7 @@ ms.localizationpriority: medium # Use the winget tool to install and manage applications -[!INCLUDE [preview-note](../../includes/package-manager-preview.md)] - -The **winget** command line tool enables developers to discover, install, upgrade, remove and configure applications on Windows 10 computers. This tool is the client interface to the Windows Package Manager service. - -The **winget** tool is currently a preview, so not all planned functionality is available at this time. +The **winget** command line tool enables users to discover, install, upgrade, remove and configure applications on Windows 10 and 11 computers. This tool is the client interface to the Windows Package Manager service. ## Install winget @@ -20,12 +16,11 @@ There are several ways to install the **winget** tool: * The **winget** tool is included in the flight or preview version of [Windows App Installer](https://www.microsoft.com/p/app-installer/9nblggh4nns1?ocid=9nblggh4nns1_ORSEARCH_Bing&rtc=1&activetab=pivot:overviewtab). You must install the preview version of **App Installer** to use **winget**. To gain early access, submit your request to the [Windows Package Manager Insiders Program](https://aka.ms/AppInstaller_InsiderProgram). Participating in the flight ring will guarantee you see the latest preview updates. -* Participate in the [Windows Insider flight ring](https://insider.windows.com). +* Participate in the [Windows Insider Dev Channel](https://insider.windows.com/understand-flighting). * Install the Windows Desktop App Installer package located on the [Releases page for the winget repository](https://github.com/microsoft/winget-cli/releases). -> [!NOTE] -> The **winget** tool requires Windows 10, version 1709 (10.0.16299), or a later version of Windows 10. +> The **winget** tool is supported on Windows 10, version 1809 (build 17763) and above. ## Administrator considerations @@ -44,7 +39,6 @@ One of the most common usage scenarios is to search for and install a favorite t 1. To [search](search.md) for a tool, type `winget search `. 2. After you have confirmed that the tool you want is available, you can [install](install.md) the tool by typing `winget install `. The **winget** tool will launch the installer and install the application on your PC. ![winget commandline](images/install.png) - 3. In addition to install and search, **winget** provides a number of other commands that enable you to [show details](show.md) on applications, [change sources](source.md), and [validate packages](validate.md). To get a complete list of commands, type: `winget --help`. ![winget help](images/help.png) @@ -54,19 +48,19 @@ The current preview of the **winget** tool supports the following commands. | Command | Description | |---------|-------------| -| [export](export.md) | Exports a list of the installed packages. | -| [features](features.md) | Shows the status of experimental features. | -| [hash](hash.md) | Generates the SHA256 hash for the installer. | -| [import](import.md) | Installs all the packages in a file. | | [install](install.md) | Installs the specified application. | -| [list](list.md) | Display installed packages. | -| [search](search.md) | Searches for an application. | -| [settings](settings.md) | Open settings. | | [show](show.md) | Displays details for the specified application. | | [source](source.md) | Adds, removes, and updates the Windows Package Manager repositories accessed by the **winget** tool. | -| [validate](validate.md) | Validates a manifest file for submission to the Windows Package Manager repository. | -| [uninstall](uninstall.md) | Uninstalls the given package. | +| [search](search.md) | Searches for an application. | +| [list](list.md) | Display installed packages. | | [upgrade](upgrade.md) | Upgrades the given package. | +| [uninstall](uninstall.md) | Uninstalls the given package. | +| [hash](hash.md) | Generates the SHA256 hash for the installer. | +| [validate](validate.md) | Validates a manifest file for submission to the Windows Package Manager repository. | +| [settings](settings.md) | Open settings. | +| [features](features.md) | Shows the status of experimental features. | +| [export](export.md) | Exports a list of the installed packages. | +| [import](import.md) | Installs all the packages in a file. | ### Options @@ -80,17 +74,21 @@ The current preview of the **winget** tool supports the following options. ## Supported installer formats -The current preview of the **winget** tool supports the following types of installers: +The current version of the **winget** tool supports the following types of installers: -* EXE -* MSIX +* EXE (with **Silent** and **SilentWithProgress** flags) +* INNO +* NULLSOFT * MSI +* APPX +* MSIX +* BURN ## Scripting winget You can author batch scripts and PowerShell scripts to install multiple applications. -``` CMD +```CMD @echo off Echo Install Powertoys and Terminal REM Powertoys @@ -98,10 +96,9 @@ winget install Microsoft.Powertoys if %ERRORLEVEL% EQU 0 Echo Powertoys installed successfully. REM Terminal winget install Microsoft.WindowsTerminal -if %ERRORLEVEL% EQU 0 Echo Terminal installed successfully. %ERRORLEVEL% +if %ERRORLEVEL% EQU 0 Echo Terminal installed successfully. %ERRORLEVEL% ``` -> [!NOTE] > When scripted, **winget** will launch the applications in the specified order. When an installer returns success or failure, **winget** will launch the next installer. If an installer launches another process, it is possible that it will return to **winget** prematurely. This will cause **winget** to install the next installer before the previous installer has completed. ## Missing tools diff --git a/doc/windows/package-manager/winget/install.md b/doc/windows/package-manager/winget/install.md index 746f59b55f..07dbcbb84f 100644 --- a/doc/windows/package-manager/winget/install.md +++ b/doc/windows/package-manager/winget/install.md @@ -8,15 +8,13 @@ ms.localizationpriority: medium # install command (winget) -[!INCLUDE [preview-note](../../includes/package-manager-preview.md)] - The **install** command of the [winget](index.md) tool installs the specified application. Use the [**search**](search.md) command to identify the application you want to install. The **install** command requires that you specify the exact string to install. If there is any ambiguity, you will be prompted to further filter the **install** command to an exact application. ## Usage -`winget install [[-q] \] [\]` +`winget install [[-q] ] []` ![search command](images/install.png) @@ -24,29 +22,31 @@ The **install** command requires that you specify the exact string to install. I The following arguments are available. -| Argument | Description | +| Argument | Description | |-------------|-------------| -| **-q,--query** | The query used to search for an app. | -| **-?, --help** | Get additional help on this command. | +| **-q,--query** | The query used to search for an app. | +| **-?, --help** | Get additional help on this command. | ## Options The options allow you to customize the install experience to meet your needs. -| Option | Description | +| Option | Description | |-------------|-------------| -| **-m, --manifest** | Must be followed by the path to the manifest (YAML) file. You can use the manifest to run the install experience from a [local YAML file](#local-install). | -| **--id** | Limits the install to the ID of the application. | -| **--name** | Limits the search to the name of the application. | -| **--moniker** | Limits the search to the moniker listed for the application. | -| **-v, --version** | Enables you to specify an exact version to install. If not specified, latest will install the highest versioned application. | -| **-s, --source** | Restricts the search to the source name provided. Must be followed by the source name. | -| **-e, --exact** | Uses the exact string in the query, including checking for case-sensitivity. It will not use the default behavior of a substring. | -| **-i, --interactive** | Runs the installer in interactive mode. The default experience shows installer progress. | -| **-h, --silent** | Runs the installer in silent mode. This suppresses all UI. The default experience shows installer progress. | -| **-o, --log** | Directs the logging to a log file. You must provide a path to a file that you have the write rights to. | -| **--override** | A string that will be passed directly to the installer. | -| **-l, --location** | Location to install to (if supported). | +| **-m, --manifest** | Must be followed by the path to the manifest (YAML) file. You can use the manifest to run the install experience from a [local YAML file](#local-install). | +| **--id** | Limits the install to the ID of the application. | +| **--name** | Limits the search to the name of the application. | +| **--moniker** | Limits the search to the moniker listed for the application. | +| **-v, --version** | Enables you to specify an exact version to install. If not specified, latest will install the highest versioned application. | +| **-s, --source** | Restricts the search to the source name provided. Must be followed by the source name. | +| **--scope** | Select install scope (user or machine) | +| **-e, --exact** | Uses the exact string in the query, including checking for case-sensitivity. It will not use the default behavior of a substring. | +| **-i, --interactive** | Runs the installer in interactive mode. The default experience shows installer progress. | +| **-h, --silent** | Runs the installer in silent mode. This suppresses all UI. The default experience shows installer progress. | +| **-o, --log** | Directs the logging to a log file. You must provide a path to a file that you have the write rights to. | +| **--override** | A string that will be passed directly to the installer. | +| **-l, --location** | Location to install to (if supported). | +| **--force** | Override the installer hash check. | ### Example queries @@ -56,7 +56,7 @@ The following example installs a specific version of an application. winget install powertoys --version 0.15.2 ``` -The following example installs an application from its ID. +The following example installs an application from its **Package Identifier**. ```CMD winget install --id Microsoft.PowerToys @@ -81,18 +81,18 @@ winget install --id Git.Git -e If multiple sources are configured, it is possible to have duplicate entries. Specifying a source is required to further disambiguate. ```CMD -winget install --id Git.Git -e -source winget +winget install --id Git.Git -e --source winget ``` ## Local install The **manifest** option enables you to install an application by passing in a YAML file directly to the client. If the manifest is a multi file manifest, the directory containing the files must be used. The **manifest** option has the following usage. -Usage: `winget install --manifest \` +Usage: `winget install --manifest ` | Option | Description | -|-------------|-------------| -| **-m, --manifest** | The path to the manifest of the application to install. | +|---------|-------------| +| **-m, --manifest** | The path to the manifest of the application to install. | ### Log files diff --git a/doc/windows/package-manager/winget/list.md b/doc/windows/package-manager/winget/list.md index 74b948390d..8d51e86c4d 100644 --- a/doc/windows/package-manager/winget/list.md +++ b/doc/windows/package-manager/winget/list.md @@ -8,8 +8,6 @@ ms.localizationpriority: medium # list command (winget) -[!INCLUDE [preview-note](../../includes/package-manager-preview.md)] - The **list** command of the [winget](index.md) tool displays a list of the applications currently installed on your computer. The list command will show apps that were installed through the Windows Package Manager as well as apps that were installed by other means. In addition, the **list** command will also display if an update is available for an app, and you can use the [**upgrade**](upgrade.md) command to update the app. @@ -18,7 +16,7 @@ The **list** command also supports filters which can be used to limit your list ## Usage -`winget list [[-q] \] [\]` +`winget list [[-q] ] []` ![list help command](images/list.png) @@ -26,10 +24,10 @@ The **list** command also supports filters which can be used to limit your list The following arguments are available. -| Argument | Description | +| Argument | Description | |-------------|-------------| -| **-q,--query** | The query used to search for an app. | -| **-?, --help** | Get additional help on this command. | +| **-q,--query** | The query used to search for an app. | +| **-?, --help** | Get additional help on this command. | ## Options @@ -37,47 +35,39 @@ The options allow you to customize the list experience to meet your needs. | Option | Description | |-------------|-------------| -| **--id** | Limits the list to the ID of the application. | -| **--name** | Limits the list to the name of the application. | -| **--moniker** | Limits the list to the moniker listed for the application. | -| **-s, --source** | Restricts the list to the source name provided. Must be followed by the source name. | -| **--tag** | Filters results by tags. | -| **--command** | Filters results by command specified by the application. | -| **-n, --count** | Limits the number of apps displayed in one query. | -| **-l, --location** | Location to list to (if supported). | -| **-e, --exact** | Uses the exact string in the list query, including checking for case-sensitivity. It will not use the default behavior of a substring. | +| **--id** | Limits the list to the ID of the application. | +| **--name** | Limits the list to the name of the application. | +| **--moniker** | Limits the list to the moniker listed for the application. | +| **-s, --source** | Restricts the list to the source name provided. Must be followed by the source name. | +| **--tag** | Filters results by tags. | +| **--command** | Filters results by command specified by the application. | +| **-n, --count** | Limits the number of apps displayed in one query. | +| **-e, --exact** | Uses the exact string in the list query, including checking for case-sensitivity. It will not use the default behavior of a substring. | ### Example queries The following example lists a specific version of an application. -```CMD -winget list --name powertoys - -``` +![list name command](images/list-name.png) The following example lists all application by ID from a specific source. -```CMD -winget list --id Microsoft.PowerToys --source winget -``` +![list id with source command](images/list-id-source.png) -The following example limits the output of list to 12 apps. +The following example limits the output of list to 9 apps. -```CMD -winget list -n 12 -``` - -![list output command](images/list-count.png) +![list count command](images/list-count.png) ## List with Update As stated above, the **list** command allows you to see what apps you have installed that have updates available. -In the image below, you will notice the preview version of Terminal has an update available. +In the image below, you will notice the current version of **Google Chrome** has an update available. -![list output command](images/list-update.png) +![list update command](images/list-update.png) The **list** command will show not only the update version available, but the source that the update is available from. -* [Use the winget tool to list and manage applications](index.md) +## Related topics + +* [Use the winget tool to install and manage applications](index.md) diff --git a/doc/windows/package-manager/winget/search.md b/doc/windows/package-manager/winget/search.md index ebec86eb1f..60f11003e0 100644 --- a/doc/windows/package-manager/winget/search.md +++ b/doc/windows/package-manager/winget/search.md @@ -8,15 +8,13 @@ ms.localizationpriority: medium # search command (winget) -[!INCLUDE [preview-note](../../includes/package-manager-preview.md)] - The **search** command of the [winget](index.md) tool queries the sources for available applications that can be installed. The **search** command can show all applications available, or it can be filtered down to a specific application. The **search** command is used typically to identify the string to use to install a specific application. ## Usage -`winget search [[-q] \] [\]` +`winget search [[-q] ] []` ![Screenshot of the Windows Power Shell window displaying the results of the winget search.](images/search.png) @@ -39,16 +37,16 @@ Search strings can be filtered with the following options. | Option | Description | --------------|-------------| -| **--id** | Limits the search to the ID of the application. The ID includes the publisher and the application name. | -| **--name** | Limits the search to the name of the application. | -| **--moniker** | Limits the search to the moniker specified. | -| **--tag** | Limits the search to the tags listed for the application. | -| **--command** | Limits the search to the commands listed for the application. | +| **--id** | Limits the search to the ID of the application. The ID includes the publisher and the application name. | +| **--name** | Limits the search to the name of the application. | +| **--moniker** | Limits the search to the moniker specified. | +| **--tag** | Limits the search to the tags listed for the application. | +| **--command** | Limits the search to the commands listed for the application. | The string will be treated as a substring. The search by default is also case insensitive. For example, `winget search micro` could return the following: * Microsoft -* microscope +* Microscope * MyMicro ## Search options @@ -57,9 +55,9 @@ The search commands supports a number of options or filters to help limit the re | Option | Description | --------------|-------------| -| **-e, --exact** | Uses the exact string in the query, including checking for case-sensitivity. It will not use the default behavior of a substring. | -| **-n, --count** | Restricts the output of the display to the specified count. | -| **-s, --source** | Restricts the search to the specified [source](source.md) name. | +| **-e, --exact** | Uses the exact string in the query, including checking for case-sensitivity. It will not use the default behavior of a substring. | +| **-n, --count** | Restricts the output of the display to the specified count. | +| **-s, --source** | Restricts the search to the specified [source](source.md) name. | ## Related topics diff --git a/doc/windows/package-manager/winget/settings.md b/doc/windows/package-manager/winget/settings.md index 6d55e51e07..109312158b 100644 --- a/doc/windows/package-manager/winget/settings.md +++ b/doc/windows/package-manager/winget/settings.md @@ -6,15 +6,12 @@ ms.topic: article ms.localizationpriority: medium --- -# help command (winget) - -[!INCLUDE [preview-note](../../includes/package-manager-preview.md)] +# settings command (winget) The **settings** command of the [winget](index.md) tool allows you to customize your Windows Package Manager client experience. You can change defaults and try out experimental features that are enabled in your client. -The **settings** command will launch your default MD editor. Windows by default will launch Notepad as an option. We recommend using a tool like [Visual Studio code](https://code.visualstudio.com/). +The **settings** command will launch your default JSON editor. Windows by default will launch Notepad as an option. We recommend using a tool like [Visual Studio code](https://code.visualstudio.com/). ->[!NOTE] ->You can easily install Visual Studio Code, by typing `winget install Microsoft.VisualStudioCode` +> You can easily install Visual Studio Code, by typing `winget install Microsoft.VisualStudioCode` ## Usage @@ -109,7 +106,7 @@ See [details on telemetry](https://github.com/microsoft/winget-cli/blob/master/R #### disable -``` +```json "telemetry": { "disable": true }, diff --git a/doc/windows/package-manager/winget/show.md b/doc/windows/package-manager/winget/show.md index 5835ac9da3..b34150bb6a 100644 --- a/doc/windows/package-manager/winget/show.md +++ b/doc/windows/package-manager/winget/show.md @@ -8,15 +8,13 @@ ms.localizationpriority: medium # show command (winget) -[!INCLUDE [preview-note](../../includes/package-manager-preview.md)] - The **show** command of the [winget](index.md) tool displays details for the specified application, including details on the source of the application as well as the metadata associated with the application. The **show** command only shows metadata that was submitted with the application. If the submitted application excludes some metadata, then the data will not be displayed. ## Usage -`winget show [[-q] \] [\]` +`winget show [[-q] ] []` ![show command](images/show.png) @@ -56,31 +54,21 @@ If a single application is detected, the following data will be displayed. | Value | Description | |--------------|-------------| -| **Id** | Id of the application. | -| **Name** | Name of the application. | -| **Publisher** | Publisher of the application. | | **Version** | Version of the application. | -| **Author** | Author of the application. | -| **AppMoniker** | AppMoniker of the application. | +| **Publisher** | Publisher of the application. | +| **Moniker** | AppMoniker of the application. | | **Description** | Description of the application. | +| **Homepage** | Homepage of the application. | | **License** | License of the application. | | **LicenseUrl** | The URL to the license file of the application. | -| **Homepage** | Homepage of the application. | -| **Tags** | The tags provided to assist in searching. | -| **Command** | The commands supported by the application. | -| **Channel** | The details on whether the application is preview or release. | -| **Minimum OS Version** | The minimum OS version supported by the application. | ### Installer details | Value | Description | |--------------|-------------| -| **Arch** | The architecture of the installer. | -| **Language** | The language of the installer. | -| **Installer Type** | The type of installer. | +| **Type** | The type of installer. | | **Download Url** | The Url of the installer. | -| **Hash** | The Sha-256 of the installer. | -| **Scope** | Displays whether the installer is per machine or per user. | +| **SHA256** | The Sha-256 of the installer. | ## Related topics diff --git a/doc/windows/package-manager/winget/source.md b/doc/windows/package-manager/winget/source.md index d30cc9c27e..725af1b355 100644 --- a/doc/windows/package-manager/winget/source.md +++ b/doc/windows/package-manager/winget/source.md @@ -8,9 +8,6 @@ ms.localizationpriority: medium # source command (winget) -[!INCLUDE [preview-note](../../includes/package-manager-preview.md)] - -> [!NOTE] > The **source** command is currently for internal use only. Additional sources are not supported at this time. The **source** command of the [winget](index.md) tool manages the repositories accessed by Windows Package Manager. With the **source** command you can **add**, **remove**, **list**, and **update** the repositories. @@ -19,7 +16,7 @@ A source provides the data for you to discover and install applications. Only ad ## Usage -`winget source \ \` +`winget source ` ![Source image](images/source.png) @@ -31,21 +28,22 @@ The following arguments are available. |--------------|-------------| | **-?, --help** | Gets additional help on this command. | -## Sub commands +## Sub-commands -Source supports the following sub commands for manipulating the sources. +Source supports the following sub-commands for manipulating the sources. -| Sub command | Description | +| Sub-command | Description | |--------------|-------------| | **add** | Adds a new source. | | **list** | Enumerates the list of enabled sources. | | **update** | Updates a source. | | **remove** | Removes a source. | | **reset** | Resets **winget** back to the initial configuration. | +| **export** | Export current sources | ## Options -The **source** command supports the following options. +The **source** command supports the following options. | Option | Description | |--------------|-------------| @@ -56,13 +54,13 @@ The **source** command supports the following options. ## add -The **add** sub command adds a new source. This sub command requires the **--name** option and the **name** argument. +The **add** sub-command adds a new source. This sub-command requires the **--name** option and the **name** argument. -Usage: `winget source add [-n, --name] \ [-a] \ [[-t] \]` +Usage: `winget source add [-n, --name] [-a] [[-t] ]` -Example: `winget source add --name Contoso https://www.contoso.com/cache` +Example: `winget source add --name Contoso https://www.contoso.com/cache` -The **add** sub command also supports the optional **type** parameter. The **type** parameter communicates to the client what type of repository it is connecting to. The following types are supported. +The **add** sub-command also supports the optional **type** parameter. The **type** parameter communicates to the client what type of repository it is connecting to. The following types are supported. | Type | Description | |--------------|-------------| @@ -70,34 +68,21 @@ The **add** sub command also supports the optional **type** parameter. The **typ ## list -the **list** sub command enumerates the currently enabled sources. This sub-command also provides details on a specific source. +the **list** sub-command enumerates the currently enabled sources. This sub-command also provides details on a specific source. -Usage: `winget source list [-n, --name] \` +Usage: `winget source list [-n, --name] ` ### list all The **list** sub-command by itself will reveal the complete list of supported sources. For example: -```CMD -> C:\winget source list -> Name Arg -> ----------------------------------------- -> winget https://winget.azureedge.net/cache - -``` +![Source list image](images/source-list.png) ### list source details In order to get complete details on the source, pass in the name used to identify the source. For example: -```CMD -> C:\winget source list --name contoso -> Name : contoso -> Type : Microsoft.PreIndexed.Package -> Arg : https://pkgmgr-int.azureedge.net/cache -> Data : AppInstallerSQLiteIndex-int_g4ype1skzj3jy -> Updated: 2020-4-14 17:45:32.000 -``` +![Source list winget image](images/source-list-winget.png) **Name** displays the name to identify the source by. **Type** displays the type of repo. @@ -107,34 +92,32 @@ In order to get complete details on the source, pass in the name used to identif ## update -The **update** sub command forces an update to an individual source or for all. +The **update** sub-command forces an update to an individual source or for all. -usage: `winget source update [-n, --name] \` +usage: `winget source update [-n, --name] ` ### update all -The **update** sub command by itself will request and update to each repo. For example: `C:\winget update` +The **update** sub-command by itself will request and update to each repo. For example: `C:\winget update` ### update source -The **update** sub command combined with the **--name** option can direct and update to an individual source. For example: `C:\winget source update --name contoso` +The **update** sub-command combined with the **--name** option can direct and update to an individual source. For example: `C:\winget source update --name winget` ## remove -The **remove** sub command removes a source. This sub command requires the **--name** option and **name argument** in order to identify the source. +The **remove** sub-command removes a source. This sub-command requires the **--name** option and **name argument** in order to identify the source. -Usage: `winget source remove [-n, --name] \` +Usage: `winget source remove [-n, --name] ` For example: `winget source remove --name Contoso` ## reset -The **reset** sub-command resets the client back to its original configuration. The **reset** sub-command removes all sources and sets the source to the default. This sub command should only be used in rare cases. +The **reset** sub-command resets the client back to its original configuration. The **reset** sub-command removes all sources and sets the source to the default. This sub-command should only be used in rare cases. Usage: `winget source reset` -For example: `winget source reset` - ## Default repository Windows Package Manager specifies a default repository. You can identify the repository by using the **list** command. For example: `winget source list` diff --git a/doc/windows/package-manager/winget/uninstall.md b/doc/windows/package-manager/winget/uninstall.md index a6c1abfa82..309f794fdf 100644 --- a/doc/windows/package-manager/winget/uninstall.md +++ b/doc/windows/package-manager/winget/uninstall.md @@ -8,15 +8,13 @@ ms.localizationpriority: medium # uninstall command (winget) -[!INCLUDE [preview-note](../../includes/package-manager-preview.md)] - The **uninstall** command of the [winget](index.md) tool uninstalls the specified application. The **uninstall** command requires that you specify the exact string to uninstall. If there is any ambiguity, you will be prompted to further filter the **uninstall** command to an exact application. ## Usage -`winget uninstall [[-q] \] [\]` +`winget uninstall [[-q] ] []` ![uninstall command](images/uninstall.png) @@ -24,7 +22,7 @@ The **uninstall** command requires that you specify the exact string to uninstal The following arguments are available. -| Argument | Description | +| Argument | Description | |-------------|-------------| | **-q,--query** | The query used to search for an app. | | **-?, --help** | Get additional help on this command. | @@ -33,15 +31,15 @@ The following arguments are available. The options allow you to customize the uninstall experience to meet your needs. -| Option | Description | +| Option | Description | |-------------|-------------| -| **-m, --manifest** | Must be followed by the path to the manifest (YAML) file. You can use the manifest to run the uninstall experience from a [local YAML file](#local-uninstall). | -| **--id** | Limits the uninstall to the ID of the application. | +| **-m, --manifest** | Must be followed by the path to the manifest (YAML) file. You can use the manifest to run the uninstall experience from a [local YAML file](#local-uninstall). | +| **--id** | Limits the uninstall to the ID of the application. | | **--name** | Limits the search to the name of the application. | | **--moniker** | Limits the search to the moniker listed for the application. | | **-v, --version** | Enables you to specify an exact version to uninstall. If not specified, latest will uninstall the highest versioned application. | -| **-s, --source** | Restricts the search to the source name provided. Must be followed by the source name. | -| **-e, --exact** | Uses the exact string in the query, including checking for case-sensitivity. It will not use the default behavior of a substring. | +| **-s, --source** | Restricts the search to the source name provided. Must be followed by the source name. | +| **-e, --exact** | Uses the exact string in the query, including checking for case-sensitivity. It will not use the default behavior of a substring. | | **-i, --interactive** | Runs the uninstaller in interactive mode. The default experience shows uninstaller progress. | | **-h, --silent** | Runs the uninstaller in silent mode. This suppresses all UI. The default experience shows uninstaller progress. | | **-o, --log** | Directs the logging to a log file. You must provide a path to a file that you have the write rights to. | @@ -78,3 +76,6 @@ In this example, **list** was used to find the application, and then the **id** ![uninstall with list command](images/uninstall-with-list.png) +## Related topics + +* [Use the winget tool to install and manage applications](index.md) diff --git a/doc/windows/package-manager/winget/upgrade.md b/doc/windows/package-manager/winget/upgrade.md index 60b6b36b07..15041d5b09 100644 --- a/doc/windows/package-manager/winget/upgrade.md +++ b/doc/windows/package-manager/winget/upgrade.md @@ -8,23 +8,21 @@ ms.localizationpriority: medium # upgrade command (winget) -[!INCLUDE [preview-note](../../includes/package-manager-preview.md)] - The **upgrade** command of the [winget](index.md) tool upgrades the specified application. Optionally, you may use the [**list**](list.md) command to identify the application you want to upgrade. The **upgrade** command requires that you specify the exact string to upgrade. If there is any ambiguity, you will be prompted to further filter the **upgrade** command to an exact application. ## Usage -`winget upgrade [[-q] \] [\]` +`winget upgrade [[-q] ] []` -![search command](images/upgrade.png) +![upgrade command](images/upgrade.png) ## Arguments The following arguments are available. -| Argument | Description | +| Argument | Description | |-------------|-------------| | **-q,--query** | The query used to search for an app. | | **-?, --help** | Get additional help on this command. | @@ -33,21 +31,21 @@ The following arguments are available. The options allow you to customize the upgrade experience to meet your needs. -| Option | Description | +| Option | Description | |-------------|-------------| -| **-m, --manifest** | Must be followed by the path to the manifest (YAML) file. You can use the manifest to run the upgrade experience from a [local YAML file](#local-upgrade). | -| **--id** | Limits the upgrade to the ID of the application. | -| **--name** | Limits the search to the name of the application. | -| **--moniker** | Limits the search to the moniker listed for the application. | -| **-v, --version** | Enables you to specify an exact version to upgrade. If not specified, latest will upgrade the highest versioned application. | -| **-s, --source** | Restricts the search to the source name provided. Must be followed by the source name. | -| **-e, --exact** | Uses the exact string in the query, including checking for case-sensitivity. It will not use the default behavior of a substring. | -| **-i, --interactive** | Runs the installer in interactive mode. The default experience shows installer progress. | -| **-h, --silent** | Runs the installer in silent mode. This suppresses all UI. The default experience shows installer progress. | -| **-o, --log** | Directs the logging to a log file. You must provide a path to a file that you have the write rights to. | -| **--override** | A string that will be passed directly to the installer. | -| **-l, --location** | Location to upgrade to (if supported). | -| **--force** | When a hash mismatch is discovered will ignore the error and attempt to install the package. | +| **-m, --manifest** | Must be followed by the path to the manifest (YAML) file. You can use the manifest to run the upgrade experience from a [local YAML file](#local-upgrade). | +| **--id** | Limits the upgrade to the ID of the application. | +| **--name** | Limits the search to the name of the application. | +| **--moniker** | Limits the search to the moniker listed for the application. | +| **-v, --version** | Enables you to specify an exact version to upgrade. If not specified, latest will upgrade the highest versioned application. | +| **-s, --source** | Restricts the search to the source name provided. Must be followed by the source name. | +| **-e, --exact** | Uses the exact string in the query, including checking for case-sensitivity. It will not use the default behavior of a substring. | +| **-i, --interactive** | Runs the installer in interactive mode. The default experience shows installer progress. | +| **-h, --silent** | Runs the installer in silent mode. This suppresses all UI. The default experience shows installer progress. | +| **-o, --log** | Directs the logging to a log file. You must provide a path to a file that you have the write rights to. | +| **--override** | A string that will be passed directly to the installer. | +| **-l, --location** | Location to upgrade to (if supported). | +| **--force** | When a hash mismatch is discovered will ignore the error and attempt to install the package. | | **--all** | Updates all available packages to the latest application. | ### Example queries @@ -73,13 +71,14 @@ winget upgrade --all It is common to use the [**list**](list.md) command to identify apps in need of an update, and then to use **upgrade** to install the latest. -In the example below you will see [**list**](list.md) identifies that an update is available for Microsoft.WindowsTerminalPreview, and then the user uses **upgrade** to update the application. +In the example below you will see [**list**](list.md) identifies that an update is available for **JetBrains.Toolbox**, and then the user uses **upgrade** to update the application. -![search command](images/upgrade.gif) +![upgrade command usage](images/upgrade.gif) ## **upgrade** --all **upgrade --all** will identify all the applications with upgrades available. When you run **winget upgrade --all** the Windows Package Manager will look for all applications that have updates available and attempt to install the. ->[!NOTE] -Some applications do not provide a version. They are always latest. Because the Windows Package Manager cannot identify if their is a newer version of the app, an upgrade will not be possible. +## Related topics + +* [Use the winget tool to install and manage applications](index.md) diff --git a/doc/windows/package-manager/winget/validate.md b/doc/windows/package-manager/winget/validate.md index f2418c9204..29c54693d9 100644 --- a/doc/windows/package-manager/winget/validate.md +++ b/doc/windows/package-manager/winget/validate.md @@ -8,13 +8,11 @@ ms.localizationpriority: medium # validate command (winget) -[!INCLUDE [preview-note](../../includes/package-manager-preview.md)] - The **validate** command of the [winget](index.md) tool validates a [manifest](../package/manifest.md) for submitting software to the **Microsoft Community Package Manifest Repository** on GitHub. The manifest must be a YAML file that follows the [specification](/doc/ManifestSpecv1.0.md). ## Usage -`winget validate [--manifest] \` +`winget validate [--manifest] ` ## Arguments