From efee984708c007fc79f0d74740cec7f0f7365ac5 Mon Sep 17 00:00:00 2001 From: Kaleb Luedtke Date: Sun, 11 Sep 2022 16:08:24 -0500 Subject: [PATCH] Standardize Whitespace (#77880) * Fix Spellcheck * Standardize Whitespace * Additional Whitespace fixes * Fix more whitespace --- .gitattributes | 18 +- .github/ISSUE_TEMPLATE/package_request.yml | 17 +- .github/PULL_REQUEST_TEMPLATE.md | 2 +- .github/fabricbot.json | 4 +- .gitignore | 666 +++++++++--------- AUTHORING_MANIFESTS.md | 2 +- CONTRIBUTING.md | 2 +- .../publish-pipeline.yaml | 36 +- .../rebuild-pipeline.yaml | 20 +- .../rebuild-rest-pipeline.yaml | 6 +- .../validation-pipeline.yaml | 50 +- FAQ.md | 2 +- LICENSE | 42 +- Moderation.md | 2 +- README.md | 14 +- SECURITY.md | 4 +- Tools/SandboxTest.ps1 | 4 +- Tools/WingetVersionManager.ps1 | 2 +- Tools/YamlCreate.ps1 | 30 +- Troubleshoot.md | 21 +- doc/manifest/schema/1.0.0/README.md | 2 +- doc/manifest/schema/1.0.0/defaultLocale.md | 22 +- doc/manifest/schema/1.0.0/installer.md | 24 +- doc/manifest/schema/1.0.0/locale.md | 28 +- doc/manifest/schema/1.0.0/version.md | 2 +- doc/manifest/schema/1.1.0/README.md | 18 +- doc/manifest/schema/1.1.0/defaultLocale.md | 24 +- doc/manifest/schema/1.1.0/installer.md | 54 +- doc/manifest/schema/1.1.0/locale.md | 28 +- doc/manifest/schema/1.1.0/singleton.md | 74 +- doc/manifest/schema/1.1.0/version.md | 10 +- doc/manifest/schema/1.2.0/README.md | 18 +- doc/manifest/schema/1.2.0/defaultLocale.md | 34 +- doc/manifest/schema/1.2.0/installer.md | 56 +- doc/manifest/schema/1.2.0/locale.md | 38 +- doc/manifest/schema/1.2.0/singleton.md | 88 +-- doc/manifest/schema/1.2.0/version.md | 10 +- doc/tools/SandboxTest.md | 4 +- 38 files changed, 737 insertions(+), 741 deletions(-) diff --git a/.gitattributes b/.gitattributes index 3fe430d219f..576f8a24f96 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,9 +1,9 @@ -.editorconfig text eol=crlf -*.json text eol=crlf -*.md text eol=crlf -*.ps1 text eol=crlf -*.txt text eol=crlf -*.validation text eol=crlf -*.yml text=auto -*.yaml text=auto -.github/actions/spelling/** text eol=lf +.editorconfig text eol=crlf +*.json text eol=crlf +*.md text eol=crlf +*.ps1 text eol=crlf +*.txt text eol=crlf +*.validation text eol=crlf +*.yml text=auto +*.yaml text=auto +.github/actions/spelling/** text eol=lf diff --git a/.github/ISSUE_TEMPLATE/package_request.yml b/.github/ISSUE_TEMPLATE/package_request.yml index c11b7cd963d..9df91535092 100644 --- a/.github/ISSUE_TEMPLATE/package_request.yml +++ b/.github/ISSUE_TEMPLATE/package_request.yml @@ -23,12 +23,11 @@ body: label: Please provide the following information description: If you can provide the following information, it will be easy for us to add the package to the repository. value: | - Publisher: - Publisher Url: - Package Name: - Description: - Package Version: - Installer URL: - - Current Package Identifier (for new versions): - + Publisher: + Publisher Url: + Package Name: + Description: + Package Version: + Installer URL: + + Current Package Identifier (for new versions): diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 5359bebcf0d..0dd3f80dec6 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,6 +1,6 @@ - [ ] Have you signed the [Contributor License Agreement](https://cla.opensource.microsoft.com/microsoft/winget-pkgs)? - [ ] Have you checked that there aren't other open [pull requests](https://github.com/microsoft/winget-pkgs/pulls) for the same manifest update/change? -- [ ] Have you [validated](https://github.com/microsoft/winget-pkgs/blob/master/AUTHORING_MANIFESTS.md#validation) your manifest locally with `winget validate --manifest `? +- [ ] Have you [validated](https://github.com/microsoft/winget-pkgs/blob/master/AUTHORING_MANIFESTS.md#validation) your manifest locally with `winget validate --manifest `? - [ ] Have you tested your manifest locally with `winget install --manifest `? - [ ] Does your manifest conform to the [1.2 schema](https://github.com/microsoft/winget-pkgs/tree/master/doc/manifest/schema/1.2.0)? diff --git a/.github/fabricbot.json b/.github/fabricbot.json index 9a4cd8132fa..8bd0676fb18 100644 --- a/.github/fabricbot.json +++ b/.github/fabricbot.json @@ -49,7 +49,7 @@ "name": "addReply", "parameters": { "reviewer": "You cannot make a change to the validation-pipeline.yml. Please file an issue so that we can discuss.", - "comment": "Hello @${issueAuthor},\n\nSorry we cannot process ${number} because you are changing validation-pipeline.yaml. Please remove that file from your PR. If you would like to discuss changes to validation-pipeline.yml, please file an issue.\n\nTemplate: msftbot/pipelineModified" + "comment": "Hello @${issueAuthor},\n\nSorry we cannot process ${number} because you are changing validation-pipeline.yaml. Please remove that file from your PR. If you would like to discuss changes to validation-pipeline.yml, please file an issue.\n\nTemplate: msftbot/pipelineModified" } }, { @@ -835,7 +835,7 @@ { "name": "addReply", "parameters": { - "comment": "Hello @${issueAuthor},\n\nAn issue was identified during the manual review, and the PR request cannot be approved. Please see comments for more information.\nPlease address the issue and resubmit, or if you disagree with this resolution, please raise an issue and flag this PR for further discussion.\n\nTemplate: msftbot/validationError/manualReview" + "comment": "Hello @${issueAuthor},\n\nAn issue was identified during the manual review, and the PR request cannot be approved. Please see comments for more information.\nPlease address the issue and resubmit, or if you disagree with this resolution, please raise an issue and flag this PR for further discussion.\n\nTemplate: msftbot/validationError/manualReview" } }, { diff --git a/.gitignore b/.gitignore index e9ed81cd44c..fe015ab08e0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,333 +1,333 @@ -## Ignore Visual Studio temporary files, build results, and -## files generated by popular Visual Studio add-ons. -## -## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore - -# User-specific files -*.suo -*.user -*.userosscache -*.sln.docstates - -# User-specific files (MonoDevelop/Xamarin Studio) -*.userprefs - -# Build results -[Dd]ebug/ -[Dd]ebugPublic/ -[Rr]elease/ -[Rr]eleases/ -x64/ -x86/ -bld/ -[Bb]in/ -[Oo]bj/ -[Ll]og/ - -# Visual Studio 2015/2017 cache/options directory -.vs/ -# Uncomment if you have tasks that create the project's static files in wwwroot -#wwwroot/ - -# Visual Studio 2017 auto generated files -Generated\ Files/ - -# MSTest test Results -[Tt]est[Rr]esult*/ -[Bb]uild[Ll]og.* - -# NUNIT -*.VisualState.xml -TestResult.xml - -# Build Results of an ATL Project -[Dd]ebugPS/ -[Rr]eleasePS/ -dlldata.c - -# Benchmark Results -BenchmarkDotNet.Artifacts/ - -# .NET Core -project.lock.json -project.fragment.lock.json -artifacts/ -**/Properties/launchSettings.json - -# StyleCop -StyleCopReport.xml - -# Files built by Visual Studio -*_i.c -*_p.c -*_i.h -*.ilk -*.meta -*.obj -*.iobj -*.pch -*.pdb -*.ipdb -*.pgc -*.pgd -*.rsp -*.sbr -*.tlb -*.tli -*.tlh -*.tmp -*.tmp_proj -*.log -*.vspscc -*.vssscc -.builds -*.pidb -*.svclog -*.scc - -# Chutzpah Test files -_Chutzpah* - -# Visual C++ cache files -ipch/ -*.aps -*.ncb -*.opendb -*.opensdf -*.sdf -*.cachefile -*.VC.db -*.VC.VC.opendb - -# Visual Studio profiler -*.psess -*.vsp -*.vspx -*.sap - -# Visual Studio Trace Files -*.e2e - -# TFS 2012 Local Workspace -$tf/ - -# Guidance Automation Toolkit -*.gpState - -# ReSharper is a .NET coding add-in -_ReSharper*/ -*.[Rr]e[Ss]harper -*.DotSettings.user - -# JustCode is a .NET coding add-in -.JustCode - -# TeamCity is a build add-in -_TeamCity* - -# DotCover is a Code Coverage Tool -*.dotCover - -# AxoCover is a Code Coverage Tool -.axoCover/* -!.axoCover/settings.json - -# Visual Studio code coverage results -*.coverage -*.coveragexml - -# NCrunch -_NCrunch_* -.*crunch*.local.xml -nCrunchTemp_* - -# MightyMoose -*.mm.* -AutoTest.Net/ - -# Web workbench (sass) -.sass-cache/ - -# Installshield output folder -[Ee]xpress/ - -# DocProject is a documentation generator add-in -DocProject/buildhelp/ -DocProject/Help/*.HxT -DocProject/Help/*.HxC -DocProject/Help/*.hhc -DocProject/Help/*.hhk -DocProject/Help/*.hhp -DocProject/Help/Html2 -DocProject/Help/html - -# Click-Once directory -publish/ - -# Publish Web Output -*.[Pp]ublish.xml -*.azurePubxml -# Note: Comment the next line if you want to checkin your web deploy settings, -# but database connection strings (with potential passwords) will be unencrypted -*.pubxml -*.publishproj - -# Microsoft Azure Web App publish settings. Comment the next line if you want to -# checkin your Azure Web App publish settings, but sensitive information contained -# in these scripts will be unencrypted -PublishScripts/ - -# NuGet Packages -*.nupkg -# The packages folder can be ignored because of Package Restore -**/[Pp]ackages/* -# except build/, which is used as an MSBuild target. -!**/[Pp]ackages/build/ -# Uncomment if necessary however generally it will be regenerated when needed -#!**/[Pp]ackages/repositories.config -# NuGet v3's project.json files produces more ignorable files -*.nuget.props -*.nuget.targets - -# Microsoft Azure Build Output -csx/ -*.build.csdef - -# Microsoft Azure Emulator -ecf/ -rcf/ - -# Windows Store app package directories and files -AppPackages/ -BundleArtifacts/ -Package.StoreAssociation.xml -_pkginfo.txt -*.appx - -# Visual Studio cache files -# files ending in .cache can be ignored -*.[Cc]ache -# but keep track of directories ending in .cache -!*.[Cc]ache/ - -# Others -ClientBin/ -~$* -*~ -*.dbmdl -*.dbproj.schemaview -*.jfm -*.pfx -*.publishsettings -orleans.codegen.cs - -# Including strong name files can present a security risk -# (https://github.com/github/gitignore/pull/2483#issue-259490424) -#*.snk - -# Since there are multiple workflows, uncomment next line to ignore bower_components -# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) -#bower_components/ - -# RIA/Silverlight projects -Generated_Code/ - -# Backup & report files from converting an old project file -# to a newer Visual Studio version. Backup files are not needed, -# because we have git ;-) -_UpgradeReport_Files/ -Backup*/ -UpgradeLog*.XML -UpgradeLog*.htm -ServiceFabricBackup/ -*.rptproj.bak - -# SQL Server files -*.mdf -*.ldf -*.ndf - -# Business Intelligence projects -*.rdl.data -*.bim.layout -*.bim_*.settings -*.rptproj.rsuser - -# Microsoft Fakes -FakesAssemblies/ - -# GhostDoc plugin setting file -*.GhostDoc.xml - -# Node.js Tools for Visual Studio -.ntvs_analysis.dat -node_modules/ - -# Visual Studio 6 build log -*.plg - -# Visual Studio 6 workspace options file -*.opt - -# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) -*.vbw - -# Visual Studio LightSwitch build output -**/*.HTMLClient/GeneratedArtifacts -**/*.DesktopClient/GeneratedArtifacts -**/*.DesktopClient/ModelManifest.xml -**/*.Server/GeneratedArtifacts -**/*.Server/ModelManifest.xml -_Pvt_Extensions - -# Paket dependency manager -.paket/paket.exe -paket-files/ - -# FAKE - F# Make -.fake/ - -# JetBrains Rider -.idea/ -*.sln.iml - -# CodeRush -.cr/ - -# Python Tools for Visual Studio (PTVS) -__pycache__/ -*.pyc - -# Cake - Uncomment if you are using it -# tools/** -# !tools/packages.config - -# Tabs Studio -*.tss - -# Telerik's JustMock configuration file -*.jmconfig - -# BizTalk build output -*.btp.cs -*.btm.cs -*.odx.cs -*.xsd.cs - -# OpenCover UI analysis results -OpenCover/ - -# Azure Stream Analytics local run output -ASALocalRun/ - -# MSBuild Binary and Structured Log -*.binlog - -# NVidia Nsight GPU debugger configuration file -*.nvuser - -# MFractors (Xamarin productivity tool) working folder -.mfractor/ - -# Anything under the manifests folder should be included -!manifests/** \ No newline at end of file +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. +## +## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore + +# User-specific files +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ + +# Visual Studio 2015/2017 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# Visual Studio 2017 auto generated files +Generated\ Files/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUNIT +*.VisualState.xml +TestResult.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# Benchmark Results +BenchmarkDotNet.Artifacts/ + +# .NET Core +project.lock.json +project.fragment.lock.json +artifacts/ +**/Properties/launchSettings.json + +# StyleCop +StyleCopReport.xml + +# Files built by Visual Studio +*_i.c +*_p.c +*_i.h +*.ilk +*.meta +*.obj +*.iobj +*.pch +*.pdb +*.ipdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# Visual Studio Trace Files +*.e2e + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# JustCode is a .NET coding add-in +.JustCode + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# AxoCover is a Code Coverage Tool +.axoCover/* +!.axoCover/settings.json + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# Note: Comment the next line if you want to checkin your web deploy settings, +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# The packages folder can be ignored because of Package Restore +**/[Pp]ackages/* +# except build/, which is used as an MSBuild target. +!**/[Pp]ackages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/[Pp]ackages/repositories.config +# NuGet v3's project.json files produces more ignorable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt +*.appx + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +orleans.codegen.cs + +# Including strong name files can present a security risk +# (https://github.com/github/gitignore/pull/2483#issue-259490424) +#*.snk + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm +ServiceFabricBackup/ +*.rptproj.bak + +# SQL Server files +*.mdf +*.ldf +*.ndf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings +*.rptproj.rsuser + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat +node_modules/ + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# JetBrains Rider +.idea/ +*.sln.iml + +# CodeRush +.cr/ + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc + +# Cake - Uncomment if you are using it +# tools/** +# !tools/packages.config + +# Tabs Studio +*.tss + +# Telerik's JustMock configuration file +*.jmconfig + +# BizTalk build output +*.btp.cs +*.btm.cs +*.odx.cs +*.xsd.cs + +# OpenCover UI analysis results +OpenCover/ + +# Azure Stream Analytics local run output +ASALocalRun/ + +# MSBuild Binary and Structured Log +*.binlog + +# NVidia Nsight GPU debugger configuration file +*.nvuser + +# MFractors (Xamarin productivity tool) working folder +.mfractor/ + +# Anything under the manifests folder should be included +!manifests/** diff --git a/AUTHORING_MANIFESTS.md b/AUTHORING_MANIFESTS.md index 3d2d9474665..eb709dcb8c1 100644 --- a/AUTHORING_MANIFESTS.md +++ b/AUTHORING_MANIFESTS.md @@ -51,7 +51,7 @@ winget install wingetcreate ``` ### Creating your manifest with Winget-Create -Now that you have Winget-Create installed onto your machine, you are ready to generate your first manifest by running the [New command](https://github.com/microsoft/winget-create/blob/main/doc/new.md). To do so, simply run the following command in your terminal: +Now that you have Winget-Create installed onto your machine, you are ready to generate your first manifest by running the [New command](https://github.com/microsoft/winget-create/blob/main/doc/new.md). To do so, simply run the following command in your terminal: ```powershell wingetcreate new diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ab5bd869752..22fbed2c745 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -115,7 +115,7 @@ Once you've discussed your proposed feature/fix/etc. with a team member, and you 1. Fork the repository if you haven't already. 2. Clone your fork locally. -> NOTE: Using a shallow clone can significantly speed up the initial clone command. Pass `--depth=1` to git if you do not need any history in your local repo. +> NOTE: Using a shallow clone can significantly speed up the initial clone command.Pass `--depth=1` to git if you do not need any history in your local repo. 3. Create & push a feature branch. 4. Create a [Draft Pull Request (PR)](https://github.blog/2019-02-14-introducing-draft-pull-requests/). 5. Work on your changes. diff --git a/DevOpsPipelineDefinitions/publish-pipeline.yaml b/DevOpsPipelineDefinitions/publish-pipeline.yaml index fffdc8e9e8e..4e8a51a24a3 100644 --- a/DevOpsPipelineDefinitions/publish-pipeline.yaml +++ b/DevOpsPipelineDefinitions/publish-pipeline.yaml @@ -64,7 +64,7 @@ jobs: WinGet:AppConfig:Primary: $(AppConfigPrimary) WinGet:AppConfig:Secondary: $(AppConfigSecondary) -# Agentless phase. Depends on previous job. +# Agentless phase. Depends on previous job. - job: 'SignPackage' pool: server timeoutInMinutes: 1500 @@ -90,9 +90,9 @@ jobs: "HubName": "$(system.HostType)", "pipelineType": "CommitPipeline", "ProjectId": "$(system.TeamProjectId)", - "PlanId": "$(system.PlanId)", - "JobId": "$(system.JobId)", - "TimelineId": "$(system.TimelineId)", + "PlanId": "$(system.PlanId)", + "JobId": "$(system.JobId)", + "TimelineId": "$(system.TimelineId)", "TaskInstanceId": "$(system.TaskInstanceId)", "AuthToken": "$(system.AccessToken)" } @@ -136,7 +136,7 @@ jobs: WinGet:AppConfig:Primary: $(AppConfigPrimary) WinGet:AppConfig:Secondary: $(AppConfigSecondary) -# Agentless phase. Depends on previous job. +# Agentless phase. Depends on previous job. - job: 'PublishToRestSource' pool: server timeoutInMinutes: 1500 @@ -163,15 +163,15 @@ jobs: "HubName": "$(system.HostType)", "pipelineType": "CommitPipeline", "ProjectId": "$(system.TeamProjectId)", - "PlanId": "$(system.PlanId)", - "JobId": "$(system.JobId)", - "TimelineId": "$(system.TimelineId)", + "PlanId": "$(system.PlanId)", + "JobId": "$(system.JobId)", + "TimelineId": "$(system.TimelineId)", "TaskInstanceId": "$(system.TaskInstanceId)", "AuthToken": "$(system.AccessToken)" } waitForCompletion: "true" -# Agentless phase. Depends on previous job. +# Agentless phase. Depends on previous job. - job: 'PostPublish' pool: server timeoutInMinutes: 1500 @@ -201,9 +201,9 @@ jobs: "HubName": "$(system.HostType)", "pipelineType": "CommitPipeline", "ProjectId": "$(system.TeamProjectId)", - "PlanId": "$(system.PlanId)", - "JobId": "$(system.JobId)", - "TimelineId": "$(system.TimelineId)", + "PlanId": "$(system.PlanId)", + "JobId": "$(system.JobId)", + "TimelineId": "$(system.TimelineId)", "TaskInstanceId": "$(system.TaskInstanceId)", "AuthToken": "$(system.AccessToken)", "BuildRepositoryId": "$(build.repository.id)" @@ -223,9 +223,9 @@ jobs: "HubName": "$(system.HostType)", "pipelineType": "CommitPipeline", "ProjectId": "$(system.TeamProjectId)", - "PlanId": "$(system.PlanId)", - "JobId": "$(system.JobId)", - "TimelineId": "$(system.TimelineId)", + "PlanId": "$(system.PlanId)", + "JobId": "$(system.JobId)", + "TimelineId": "$(system.TimelineId)", "TaskInstanceId": "$(system.TaskInstanceId)", "AuthToken": "$(system.AccessToken)", "BuildRepositoryId": "$(build.repository.id)" @@ -246,9 +246,9 @@ jobs: "HubName": "$(system.HostType)", "pipelineType": "CommitPipeline", "ProjectId": "$(system.TeamProjectId)", - "PlanId": "$(system.PlanId)", - "JobId": "$(system.JobId)", - "TimelineId": "$(system.TimelineId)", + "PlanId": "$(system.PlanId)", + "JobId": "$(system.JobId)", + "TimelineId": "$(system.TimelineId)", "TaskInstanceId": "$(system.TaskInstanceId)", "AuthToken": "$(system.AccessToken)", "BuildRepositoryId": "$(build.repository.id)" diff --git a/DevOpsPipelineDefinitions/rebuild-pipeline.yaml b/DevOpsPipelineDefinitions/rebuild-pipeline.yaml index fa6e3fe3313..d16d2620a23 100644 --- a/DevOpsPipelineDefinitions/rebuild-pipeline.yaml +++ b/DevOpsPipelineDefinitions/rebuild-pipeline.yaml @@ -70,7 +70,7 @@ jobs: DevOpsProjectName: $(DevOpsProjectName) DevOpsPublishPipelineDefinitionId: $(DevOpsPublishPipelineDefinitionId) -# Agentless phase. Depends on previous job. +# Agentless phase. Depends on previous job. - job: 'SignPackage' pool: server timeoutInMinutes: 1500 @@ -96,9 +96,9 @@ jobs: "HubName": "$(system.HostType)", "pipelineType": "RebuildPipeline", "ProjectId": "$(system.TeamProjectId)", - "PlanId": "$(system.PlanId)", - "JobId": "$(system.JobId)", - "TimelineId": "$(system.TimelineId)", + "PlanId": "$(system.PlanId)", + "JobId": "$(system.JobId)", + "TimelineId": "$(system.TimelineId)", "TaskInstanceId": "$(system.TaskInstanceId)", "AuthToken": "$(system.AccessToken)" } @@ -131,9 +131,9 @@ jobs: "HubName": "$(system.HostType)", "pipelineType": "RebuildPipeline", "ProjectId": "$(system.TeamProjectId)", - "PlanId": "$(system.PlanId)", - "JobId": "$(system.JobId)", - "TimelineId": "$(system.TimelineId)", + "PlanId": "$(system.PlanId)", + "JobId": "$(system.JobId)", + "TimelineId": "$(system.TimelineId)", "TaskInstanceId": "$(system.TaskInstanceId)", "AuthToken": "$(system.AccessToken)", "ContainerName": "$(CacheContainerName)", @@ -174,9 +174,9 @@ jobs: "HubName": "$(system.HostType)", "pipelineType": "RebuildPipeline", "ProjectId": "$(system.TeamProjectId)", - "PlanId": "$(system.PlanId)", - "JobId": "$(system.JobId)", - "TimelineId": "$(system.TimelineId)", + "PlanId": "$(system.PlanId)", + "JobId": "$(system.JobId)", + "TimelineId": "$(system.TimelineId)", "TaskInstanceId": "$(system.TaskInstanceId)", "AuthToken": "$(system.AccessToken)", } diff --git a/DevOpsPipelineDefinitions/rebuild-rest-pipeline.yaml b/DevOpsPipelineDefinitions/rebuild-rest-pipeline.yaml index f4c257a51d7..84522881917 100644 --- a/DevOpsPipelineDefinitions/rebuild-rest-pipeline.yaml +++ b/DevOpsPipelineDefinitions/rebuild-rest-pipeline.yaml @@ -68,9 +68,9 @@ jobs: "HubName": "$(system.HostType)", "pipelineType": "RebuildPipeline", "ProjectId": "$(system.TeamProjectId)", - "PlanId": "$(system.PlanId)", - "JobId": "$(system.JobId)", - "TimelineId": "$(system.TimelineId)", + "PlanId": "$(system.PlanId)", + "JobId": "$(system.JobId)", + "TimelineId": "$(system.TimelineId)", "TaskInstanceId": "$(system.TaskInstanceId)", "AuthToken": "$(system.AccessToken)" } diff --git a/DevOpsPipelineDefinitions/validation-pipeline.yaml b/DevOpsPipelineDefinitions/validation-pipeline.yaml index ca0257ac66b..c1a9694ab86 100644 --- a/DevOpsPipelineDefinitions/validation-pipeline.yaml +++ b/DevOpsPipelineDefinitions/validation-pipeline.yaml @@ -109,9 +109,9 @@ jobs: "PlanUrl": "$(system.CollectionUri)", "HubName": "$(system.HostType)", "ProjectId": "$(system.TeamProjectId)", - "PlanId": "$(system.PlanId)", - "JobId": "$(system.JobId)", - "TimelineId": "$(system.TimelineId)", + "PlanId": "$(system.PlanId)", + "JobId": "$(system.JobId)", + "TimelineId": "$(system.TimelineId)", "TaskInstanceId": "$(system.TaskInstanceId)", "AuthToken": "$(system.AccessToken)" } @@ -130,9 +130,9 @@ jobs: "PlanUrl": "$(system.CollectionUri)", "HubName": "$(system.HostType)", "ProjectId": "$(system.TeamProjectId)", - "PlanId": "$(system.PlanId)", - "JobId": "$(system.JobId)", - "TimelineId": "$(system.TimelineId)", + "PlanId": "$(system.PlanId)", + "JobId": "$(system.JobId)", + "TimelineId": "$(system.TimelineId)", "TaskInstanceId": "$(system.TaskInstanceId)", "AuthToken": "$(system.AccessToken)" } @@ -151,9 +151,9 @@ jobs: "PlanUrl": "$(system.CollectionUri)", "HubName": "$(system.HostType)", "ProjectId": "$(system.TeamProjectId)", - "PlanId": "$(system.PlanId)", - "JobId": "$(system.JobId)", - "TimelineId": "$(system.TimelineId)", + "PlanId": "$(system.PlanId)", + "JobId": "$(system.JobId)", + "TimelineId": "$(system.TimelineId)", "TaskInstanceId": "$(system.TaskInstanceId)", "AuthToken": "$(system.AccessToken)" } @@ -186,9 +186,9 @@ jobs: "PlanUrl": "$(system.CollectionUri)", "HubName": "$(system.HostType)", "ProjectId": "$(system.TeamProjectId)", - "PlanId": "$(system.PlanId)", - "JobId": "$(system.JobId)", - "TimelineId": "$(system.TimelineId)", + "PlanId": "$(system.PlanId)", + "JobId": "$(system.JobId)", + "TimelineId": "$(system.TimelineId)", "TaskInstanceId": "$(system.TaskInstanceId)", "AuthToken": "$(system.AccessToken)" } @@ -207,9 +207,9 @@ jobs: "PlanUrl": "$(system.CollectionUri)", "HubName": "$(system.HostType)", "ProjectId": "$(system.TeamProjectId)", - "PlanId": "$(system.PlanId)", - "JobId": "$(system.JobId)", - "TimelineId": "$(system.TimelineId)", + "PlanId": "$(system.PlanId)", + "JobId": "$(system.JobId)", + "TimelineId": "$(system.TimelineId)", "TaskInstanceId": "$(system.TaskInstanceId)", "AuthToken": "$(system.AccessToken)" } @@ -242,15 +242,15 @@ jobs: "PlanUrl": "$(system.CollectionUri)", "HubName": "$(system.HostType)", "ProjectId": "$(system.TeamProjectId)", - "PlanId": "$(system.PlanId)", - "JobId": "$(system.JobId)", - "TimelineId": "$(system.TimelineId)", + "PlanId": "$(system.PlanId)", + "JobId": "$(system.JobId)", + "TimelineId": "$(system.TimelineId)", "TaskInstanceId": "$(system.TaskInstanceId)", "AuthToken": "$(system.AccessToken)" } waitForCompletion: "true" -# Agentless phase. Runs even if previous jobs failed. +# Agentless phase. Runs even if previous jobs failed. - job: 'postvalidation' pool: server displayName: 'Post Validation' @@ -282,9 +282,9 @@ jobs: "BuildId": "$(Build.BuildId)", "HubName": "$(system.HostType)", "ProjectId": "$(system.TeamProjectId)", - "PlanId": "$(system.PlanId)", - "JobId": "$(system.JobId)", - "TimelineId": "$(system.TimelineId)", + "PlanId": "$(system.PlanId)", + "JobId": "$(system.JobId)", + "TimelineId": "$(system.TimelineId)", "TaskInstanceId": "$(system.TaskInstanceId)", "AuthToken": "$(system.AccessToken)", "BuildRepositoryId": "$(RepositoryId)", @@ -305,9 +305,9 @@ jobs: "BuildId": "$(Build.BuildId)", "HubName": "$(system.HostType)", "ProjectId": "$(system.TeamProjectId)", - "PlanId": "$(system.PlanId)", - "JobId": "$(system.JobId)", - "TimelineId": "$(system.TimelineId)", + "PlanId": "$(system.PlanId)", + "JobId": "$(system.JobId)", + "TimelineId": "$(system.TimelineId)", "TaskInstanceId": "$(system.TaskInstanceId)", "AuthToken": "$(system.AccessToken)" } diff --git a/FAQ.md b/FAQ.md index eed353fc1d8..007d6f9ac30 100644 --- a/FAQ.md +++ b/FAQ.md @@ -16,7 +16,7 @@ ARP stands for `A`dd and `R`emove `P`rograms. In Windows, installer files put in ## **What is the difference between a Marketing Version and Package Version?** Sometimes publishers use two different versions to refer to software. The version most commonly seen on the website or download page for a package is the Marketing Version. This is generally is used for the `PackageVersion` field of manifests, but there are exceptions. The Package Version, sometimes referred to as `Build Version`,`Actual Version`, or `DisplayVersion` is the version which is written to the ARP entry. This value is what the Windows Package Manager uses to determine which version of an application is currently installed on your system, and should be mapped to the `AppsAndFeaturesEntries >> DisplayVersion` in a manifest. ## **How do I submit a package?** -Getting started is the hard part. There are several tools which we recommend for both creating and submitting packages. +Getting started is the hard part. There are several tools which we recommend for both creating and submitting packages. First is the [Windows Package Manager Manifest Creator (a.k.a Winget-Create)](https://github.com/microsoft/winget-create). Winget-Create is a command line tool that will prompt you for relevant metadata related to your package. Once you are done, Winget-Create will validate your manifest to verify that it is correct and allow you to submit your newly-created manifest directly to the winget-pkgs repository by linking your GitHub account. diff --git a/LICENSE b/LICENSE index 21071075c24..4b1ad51b2f0 100644 --- a/LICENSE +++ b/LICENSE @@ -1,21 +1,21 @@ - MIT License - - Copyright (c) Microsoft Corporation. All rights reserved. - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE + MIT License + + Copyright (c) Microsoft Corporation. All rights reserved. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE diff --git a/Moderation.md b/Moderation.md index c5f8194c906..f3c900cb28f 100644 --- a/Moderation.md +++ b/Moderation.md @@ -20,4 +20,4 @@ Moderators should review PRs to ensure the metadata is accurate and that the Win ### Providing Feedback -Moderators are often on the front line when new issues are identified. They should collaborate with each other, the community, and the product team. This will help ensure the Windows Package Manager continues to improve. Sometimes this could be by creating an Issue or a Discussion. Other times this may just be discussion in a PR. Moderators are ambassadors for the Windows Package Manager. Their tone sets the example others will follow. +Moderators are often on the front line when new issues are identified. They should collaborate with each other, the community, and the product team. This will help ensure the Windows Package Manager continues to improve. Sometimes this could be by creating an Issue or a Discussion. Other times this may just be discussion in a PR. Moderators are ambassadors for the Windows Package Manager. Their tone sets the example others will follow. diff --git a/README.md b/README.md index c8de4437883..8d0b46d9f34 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ [![Validation Pipeline Badge](https://img.shields.io/endpoint?url=https://winget-pme.azurefd.net/api/GetServiceComponentStatusBadge?component=ValidationPipeline "Validation Pipeline Badge")](https://dev.azure.com/ms/winget-pkgs/_build?definitionId=337) [![Publish Pipeline Badge](https://img.shields.io/endpoint?url=https://winget-pme.azurefd.net/api/GetServiceComponentStatusBadge?component=PublishPipeline "Publish Pipeline Badge")](https://dev.azure.com/ms/winget-pkgs/_build?definitionId=338) -This repository contains the manifest files for the **Windows Package Manager** default source. You are highly encouraged to submit manifests for your favorite application. +This repository contains the manifest files for the **Windows Package Manager** default source. You are highly encouraged to submit manifests for your favorite application. > Note: At this time installers must either be MSIX, MSI or .exe application installers. Compressed .zip files and fonts are not currently supported. The **Windows Package Manager** is an [open source client](https://github.com/microsoft/winget-cli) designed for command-line usage. If you are interested in exploring third-party repositories offering private winget package hosting, see [third-party repositories](THIRD_PARTY.md). @@ -25,7 +25,7 @@ You may either use the [Windows Package Manager Manifest Creator](https://github > Note: Only one manifest may be submitted per PR. ### Using the YamlCreate.ps1 -To help author manifest files, we have provided a YamlCreate.ps1 [PowerShell script](Tools/YamlCreate.ps1) located in the Tools folder. The script will prompt you for the URL to the installer, then will prompt you to fill in metadata. Additional information regarding the YamlCreate script can be found in the [documentation for the script](doc/tools/YamlCreate.md). +To help author manifest files, we have provided a YamlCreate.ps1 [PowerShell script](Tools/YamlCreate.ps1) located in the Tools folder. The script will prompt you for the URL to the installer, then will prompt you to fill in metadata. Additional information regarding the YamlCreate script can be found in the [documentation for the script](doc/tools/YamlCreate.md). > You can use the script by cloning the repository on your PC and running the script directly from the **Tools** folder. @@ -55,23 +55,23 @@ Just provide the path to manifest as parameter: ``` ## Submit your PR -With the manifest verified, you will need to submit a PR. Your manifest should be located in the folder path matching +With the manifest verified, you will need to submit a PR. Your manifest should be located in the folder path matching ``` manifests\\\\\ ``` ### Validation Process The PR request will go through a validation process. The core team or the Microsoft bot (BOT) will use [labels](https://docs.microsoft.com/windows/package-manager/package/winget-validation#pull-request-labels) to help during the process. In the event of a failure, the BOT will suggest the problem with the submission and assign the PR back to you. - + ### Respond to PR feedback -If the PR has been assigned to you, a timer is triggered. You will have 7 days to resolve the issue, or the BOT will automatically close the PR. +If the PR has been assigned to you, a timer is triggered. You will have 7 days to resolve the issue, or the BOT will automatically close the PR. -Submissions to the repository are reviewed by Windows Package Manager administrators and/or community moderators. We've provided a [Public Service Announcement](https://github.com/microsoft/winget-pkgs/issues/15674) to help identify these individuals. +Submissions to the repository are reviewed by Windows Package Manager administrators and/or community moderators. We've provided a [Public Service Announcement](https://github.com/microsoft/winget-pkgs/issues/15674) to help identify these individuals. # Contributing -This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.opensource.microsoft.com. +This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.opensource.microsoft.com. When you submit a pull request, a CLA bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., status check, comment). Follow the instructions provided by the bot. You will only need to do this once across all Microsoft repositories using our CLA. diff --git a/SECURITY.md b/SECURITY.md index a3e2d25f893..b6ce6891b01 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -12,9 +12,9 @@ If you believe you have found a security vulnerability in any Microsoft-owned re Instead, please report them to the Microsoft Security Response Center (MSRC) at [https://msrc.microsoft.com/create-report](https://msrc.microsoft.com/create-report). -If you prefer to submit without logging in, send email to [secure@microsoft.com](mailto:secure@microsoft.com). If possible, encrypt your message with our PGP key; please download it from the [Microsoft Security Response Center PGP Key page](https://www.microsoft.com/msrc/pgp-key-msrc). +If you prefer to submit without logging in, send email to [secure@microsoft.com](mailto:secure@microsoft.com). If possible, encrypt your message with our PGP key; please download it from the [Microsoft Security Response Center PGP Key page](https://www.microsoft.com/msrc/pgp-key-msrc). -You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Additional information can be found at [https://microsoft.com/msrc](https://www.microsoft.com/msrc). +You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Additional information can be found at [https://microsoft.com/msrc](https://www.microsoft.com/msrc). Please include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue: diff --git a/Tools/SandboxTest.ps1 b/Tools/SandboxTest.ps1 index a146a3616a1..96b2a0bc1e6 100644 --- a/Tools/SandboxTest.ps1 +++ b/Tools/SandboxTest.ps1 @@ -158,7 +158,7 @@ foreach ($dependency in $dependencies) { if (-Not (Test-Path (Join-Path -Path $tempFolder -ChildPath \Microsoft.UI.Xaml.2.7\tools\AppX\x64\Release\Microsoft.UI.Xaml.2.7.appx))) { Expand-Archive -Path $uiLibsUwp.file -DestinationPath ($tempFolder + '\Microsoft.UI.Xaml.2.7') -Force -} +} $uiLibsUwp.file = (Join-Path -Path $tempFolder -ChildPath \Microsoft.UI.Xaml.2.7\tools\AppX\x64\Release\Microsoft.UI.Xaml.2.7.appx) $uiLibsUwp.pathInSandbox = Join-Path -Path $desktopInSandbox -ChildPath (Join-Path -Path $tempFolderName -ChildPath \Microsoft.UI.Xaml.2.7\tools\AppX\x64\Release\Microsoft.UI.Xaml.2.7.appx) Write-Host @@ -201,7 +201,7 @@ function Update-EnvironmentVariables { function Get-ARPTable { $registry_paths = @('HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*','HKLM:\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*', 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*', 'HKCU:\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*') - return Get-ItemProperty $registry_paths -ErrorAction SilentlyContinue | + return Get-ItemProperty $registry_paths -ErrorAction SilentlyContinue | Select-Object DisplayName, DisplayVersion, Publisher, @{N='ProductCode'; E={$_.PSChildName}} | Where-Object {$null -ne $_.DisplayName } } diff --git a/Tools/WingetVersionManager.ps1 b/Tools/WingetVersionManager.ps1 index 103b896dd5f..1315c0ff3bc 100644 --- a/Tools/WingetVersionManager.ps1 +++ b/Tools/WingetVersionManager.ps1 @@ -72,4 +72,4 @@ if (!$msixFile){ } Add-AppxPackage $msixFile.FullName -ForceUpdateFromAnyVersion Write-Output 'Checking winget version . . .' -& winget -v \ No newline at end of file +& winget -v diff --git a/Tools/YamlCreate.ps1 b/Tools/YamlCreate.ps1 index e7172d9d020..b700a75ac11 100644 --- a/Tools/YamlCreate.ps1 +++ b/Tools/YamlCreate.ps1 @@ -91,7 +91,7 @@ if (Get-Command 'git.exe' -ErrorAction SilentlyContinue) { DefaultString = '' } switch (Invoke-KeypressMenu -Prompt $_menu['Prompt'] -Entries $_menu['Entries'] -DefaultString $_menu['DefaultString'] -HelpText $_menu['HelpText']) { - 'Y' { + 'Y' { Write-Host try { winget upgrade --id Git.Git --exact @@ -387,7 +387,7 @@ Function Request-InstallerUrl { } switch ($(if ($ScriptSettings.UseRedirectedURL -eq 'always') { 'Y' } else { Invoke-KeypressMenu -Prompt $_menu['Prompt'] -Entries $_menu['Entries'] -DefaultString $_menu['DefaultString'] -HelpText $_menu['HelpText'] })) { 'N' { Write-Host -ForegroundColor 'Green' "`nOriginal URL Retained - Proceeding with $NewInstallerUrl`n" } #Continue without replacing URL - default { + default { $NewInstallerUrl = $script:ResponseUri $script:_returnValue = [ReturnValue]::new(409, 'URL Changed', 'The URL was changed during processing and will be re-validated', 1) Write-Host @@ -614,7 +614,7 @@ Function Get-PathInstallerType { if (Test-IsWix -Database $ObjectDatabase -MetaDataObject $ObjectMetadata ) { return 'wix' } - return 'msi' + return 'msi' } if ($Path -match '\.appx(bundle){0,1}$') { return 'appx' } if ($Path -match '\.zip$') { return 'zip' } @@ -642,7 +642,7 @@ Function Read-InstallerEntry { $_Installer = [ordered] @{} # Request user enter Installer URL $_Installer['InstallerUrl'] = Request-InstallerUrl - + if ($_Installer.InstallerUrl -in ($script:Installers).InstallerUrl) { $_MatchingInstaller = $script:Installers | Where-Object { $_.InstallerUrl -eq $_Installer.InstallerUrl } | Select-Object -First 1 if ($_MatchingInstaller.InstallerSha256) { $_Installer['InstallerSha256'] = $_MatchingInstaller.InstallerSha256 } @@ -655,7 +655,7 @@ Function Read-InstallerEntry { # Get or request Installer Sha256 # Check the settings to see if we need to display this menu if ($_Installer.Keys -notcontains 'InstallerSha256') { - + $script:SaveOption = Get-UserSavePreference # If user did not select manual entry for Sha256, download file and calculate hash # Also attempt to detect installer type and architecture @@ -1008,7 +1008,7 @@ Function Read-QuickInstallerEntry { if ($_NewInstaller.InstallerUrl -in ($_NewInstallers).InstallerUrl) { $_MatchingInstaller = $_NewInstallers | Where-Object { $_.InstallerUrl -eq $_NewInstaller.InstallerUrl } | Select-Object -First 1 - if ($_MatchingInstaller.InstallerSha256) { $_NewInstaller['InstallerSha256'] = $_MatchingInstaller.InstallerSha256 } + if ($_MatchingInstaller.InstallerSha256) { $_NewInstaller['InstallerSha256'] = $_MatchingInstaller.InstallerSha256 } if ($_MatchingInstaller.InstallerType) { $_NewInstaller['InstallerType'] = $_MatchingInstaller.InstallerType } if ($_MatchingInstaller.ProductCode) { $_NewInstaller['ProductCode'] = $_MatchingInstaller.ProductCode } elseif ( ($_NewInstaller.Keys -contains 'ProductCode') -and ($script:dest -notmatch '.exe$')) { $_NewInstaller.Remove('ProductCode') } @@ -1190,7 +1190,7 @@ Function Read-InstallerMetadata { do { if (!$Commands) { $Commands = '' } else { $Commands = $Commands | UniqueItems } - $script:Commands = Read-InstallerMetadataValue -Variable $Commands -Key 'Commands' -Prompt "[Optional] Enter any Commands or aliases to run the application. For example: msedge (Max $($Patterns.MaxItemsCommands))" | UniqueItems + $script:Commands = Read-InstallerMetadataValue -Variable $Commands -Key 'Commands' -Prompt "[Optional] Enter any Commands or aliases to run the application. For example: msedge (Max $($Patterns.MaxItemsCommands))" | UniqueItems if (($script:Commands -split ',').Count -le $Patterns.MaxItemsCommands) { $script:_returnValue = [ReturnValue]::Success() } else { @@ -1495,7 +1495,7 @@ Function Read-LocaleMetadata { $script:Tags = $script:Tags | ToLower | UniqueItems Write-Host -ForegroundColor 'DarkGray' "Old Variable: $script:Tags" } - $NewTags = Read-Host -Prompt 'Tags' | TrimString | ToLower | UniqueItems + $NewTags = Read-Host -Prompt 'Tags' | TrimString | ToLower | UniqueItems if (Test-String -not $NewTags -IsNull) { $script:Tags = $NewTags } if (($script:Tags -split ',').Count -le $Patterns.TagsMaxItems) { $script:_returnValue = [ReturnValue]::Success() @@ -1630,7 +1630,7 @@ Function Read-PRBody { } '*schema*' { - $_Match = ($_line | Select-String -Pattern 'https://+.+(?=\))').Matches.Value + $_Match = ($_line | Select-String -Pattern 'https://+.+(?=\))').Matches.Value $_menu = @{ Prompt = $_line.TrimStart('- [ ]') -replace '\[|\]|\(.+\)', '' Entries = @('[Y] Yes'; '*[N] No') @@ -1788,7 +1788,7 @@ Function Get-DebugString { }) $debug += $PSVersionTable.PSVersion -Replace '\.', '-' $debug += '.' - $debug += [System.Environment]::OSVersion.Platform + $debug += [System.Environment]::OSVersion.Platform return $debug } @@ -1921,7 +1921,7 @@ Function Write-InstallerManifest { foreach ($_Installer in $InstallerManifest.Installers) { if ($_Installer.Keys -contains 'InstallerSwitches') { $_Installer['InstallerSwitches'] = Restore-YamlKeyOrder $_Installer.InstallerSwitches $InstallerSwitchProperties -NoComments } } - + # Clean up the existing files just in case if ($InstallerManifest['Commands']) { $InstallerManifest['Commands'] = @($InstallerManifest['Commands'] | UniqueItems | NoWhitespace | Sort-Object) } if ($InstallerManifest['Protocols']) { $InstallerManifest['Protocols'] = @($InstallerManifest['Protocols'] | ToLower | UniqueItems | NoWhitespace | Sort-Object) } @@ -2102,7 +2102,7 @@ if (!$script:UsingAdvancedOption) { '3' { $script:Option = 'EditMetadata' } '4' { $script:Option = 'NewLocale' } '5' { $script:Option = 'RemoveManifest' } - default { + default { Write-Host [Threading.Thread]::CurrentThread.CurrentUICulture = $callingUICulture exit @@ -2234,7 +2234,7 @@ if ($script:Option -in @('NewLocale'; 'EditMetadata'; 'RemoveManifest')) { if ($PromptVersion -eq 'exit') { [Threading.Thread]::CurrentThread.CurrentUICulture = $callingUICulture [Threading.Thread]::CurrentThread.CurrentCulture = $callingCulture - exit + exit } if (Test-Path -Path "$AppFolder\..\$PromptVersion") { $script:OldManifests = Get-ChildItem -Path "$AppFolder\..\$PromptVersion" @@ -2253,7 +2253,7 @@ if (-not (Test-Path -Path "$AppFolder\..")) { Write-Host -ForegroundColor Red 'This option requires manifest of previous version of the package. If you want to create a new package, please select Option 1.' [Threading.Thread]::CurrentThread.CurrentUICulture = $callingUICulture [Threading.Thread]::CurrentThread.CurrentCulture = $callingCulture - exit + exit } $script:OldManifestType = 'None' } @@ -2453,7 +2453,7 @@ Switch ($script:Option) { Write-Host; [Threading.Thread]::CurrentThread.CurrentUICulture = $callingUICulture [Threading.Thread]::CurrentThread.CurrentCulture = $callingCulture - exit 1 + exit 1 } } diff --git a/Troubleshoot.md b/Troubleshoot.md index f4332af4360..3d3d53e918f 100644 --- a/Troubleshoot.md +++ b/Troubleshoot.md @@ -1,18 +1,18 @@ # Troubleshooting Errors Many of the issues can be caught before submitting your PR, if you follow these steps: 1) Validate the manifest file by running ```winget validate ``` -2) Install the manifest on your local machine. This will verify the Sha256 Hash and check whether the application is able to install silently (without any human interaction) or not. You can do this by running: ```winget install --manifest ``` or ```winget install -m ``` +2) Install the manifest on your local machine. This will verify the Sha256 Hash and check whether the application is able to install silently (without any human interaction) or not. You can do this by running: ```winget install --manifest ``` or ```winget install -m ``` Once those steps pass, here are some troubleshooting tips: -## Manifest-Validation-Error -Manifest validation errors indicate that there is a problem with the manifest file. Many of the issues can be caught before submitting your PR, when you validate the manifests before submission: ```winget validate ``` +## Manifest-Validation-Error +Manifest validation errors indicate that there is a problem with the manifest file. Many of the issues can be caught before submitting your PR, when you validate the manifests before submission: ```winget validate ``` For documentation on the manifest specification, please see the [manifest schema](/doc/manifest/schema) Here are some common mistakes not discovered by the winget validation. -1) Check the publisher folder and application name folder. +1) Check the publisher folder and application name folder. 2) Check for typos in the filename. Both of them should match the `PackageIdentifier` of the manifest. @@ -22,26 +22,23 @@ PackageIdentifier: `.` Manifest Path: `\\\` -Filenames: +Filenames: - For singleton manifest: `..yaml` - For multi-manifests - Installer: `.installer.yaml` - Locale: `.locale..yaml` - Version: `.yaml` - + ## Binary-Validation-Error -Binary validation errors indicate that the installer failed static analysis. +Binary validation errors indicate that the installer failed static analysis. Here are some common causes for the Binary-Validation-Error label: 1) The Sha256 HASH in the manifest does not match the HASH of the installer. Run ```winget hash ``` to generate the hash. 2) The URL is not valid. Make sure the URL to the installer is publicly available and valid. -3) The installer has been identified as malware. If the installer is detected as malware, you can submit the installer to the defender team for [analysis](https://docs.microsoft.com/windows/security/threat-protection/windows-defender-antivirus/antivirus-false-positives-negatives#submit-a-file-to-microsoft-for-analysis) as a potential false positive. +3) The installer has been identified as malware. If the installer is detected as malware, you can submit the installer to the defender team for [analysis](https://docs.microsoft.com/windows/security/threat-protection/windows-defender-antivirus/antivirus-false-positives-negatives#submit-a-file-to-microsoft-for-analysis) as a potential false positive. ## SmartScreen-Validation-Error Windows Defender SmartScreen validation errors indicate that the URL you provided has a bad reputation. ## Internal-Error -Internal-Errors indicate there was an error hit by the service. Microsoft will investigate these and pursue a fix. For a list of known issues, see our repository [issues](https://github.com/microsoft/winget-pkgs/issues) - - - +Internal-Errors indicate there was an error hit by the service. Microsoft will investigate these and pursue a fix. For a list of known issues, see our repository [issues](https://github.com/microsoft/winget-pkgs/issues) diff --git a/doc/manifest/schema/1.0.0/README.md b/doc/manifest/schema/1.0.0/README.md index 6db9428fe95..fd594227c32 100644 --- a/doc/manifest/schema/1.0.0/README.md +++ b/doc/manifest/schema/1.0.0/README.md @@ -14,4 +14,4 @@ A multi-file manifest contains: * One [version](version.md) ([JSON Schema][versionSchema]) file * One [default locale](defaultLocale.md) ([JSON Schema][defaultLocaleSchema]) file * One [installer](installer.md) ([JSON Schema][installerSchema]) file -* Additional optional [locale](locale.md) ([JSON Schema][localeSchema]) files \ No newline at end of file +* Additional optional [locale](locale.md) ([JSON Schema][localeSchema]) files diff --git a/doc/manifest/schema/1.0.0/defaultLocale.md b/doc/manifest/schema/1.0.0/defaultLocale.md index 418d8605533..2846127e85f 100644 --- a/doc/manifest/schema/1.0.0/defaultLocale.md +++ b/doc/manifest/schema/1.0.0/defaultLocale.md @@ -29,7 +29,7 @@ All Windows Package Manager manifests in the Microsoft community repository are #### Required Field This key represents the version of the package. It is related to the specific release this manifests targets. In some cases you will see a perfectly formed [semantic version] number, and in other cases you might see something different. These may be date driven, or they might have other characters with some package specific meaning for example. - The Windows Package Manager client uses this version to determine whether or not an upgrade for a package is available. In some cases, packages may be released with a marketing driven version, and that causes trouble with the `winget upgrade` command. + The Windows Package Manager client uses this version to determine whether or not an upgrade for a package is available. In some cases, packages may be released with a marketing driven version, and that causes trouble with the `winget upgrade` command. The current best practice is to use the value reported in Add / Remove Programs when this version of the package is installed. In some cases, packages do not report a version resulting in an upgrade loop or other unwanted behavior. @@ -99,7 +99,7 @@ All Windows Package Manager manifests in the Microsoft community repository are >Note: With the 1.0 release of the Windows Package Manager, this name affects how packages from a source are mapped to Apps installed in Windows 10 via Add / Remove Programs (ARP). The best practice is to ensure this matches the ARP entry for the package name when it has been installed. The impact is associated with `winget upgrade` and `winget list`. - + #### PackageUrl
The package home page @@ -122,7 +122,7 @@ All Windows Package Manager manifests in the Microsoft community repository are #### Optional Field This key represents the license web site or specific web page provided the publisher or ISV. If there is a license web site or specific web page for the package it is preferred over a generic license page for the publisher. - + If this is a link to the license file for an open source project, it should be specific to the version for the package. Some open source projects change their license over time.
@@ -140,7 +140,7 @@ All Windows Package Manager manifests in the Microsoft community repository are #### Optional Field This key represents the copyright web site or specific web page provided the publisher or ISV. If there is a copyright web site or specific web page for the package it is preferred over a generic copyright page for the publisher. - + If this is a link to the copyright file for an open source project, it should be specific to the version for the package. Some open source projects change their copyright over time. @@ -153,7 +153,7 @@ All Windows Package Manager manifests in the Microsoft community repository are >Note: This should be something descriptive about what the package does, and it should not simply state something like "<package name> installer" or "<package name> setup". - + #### Description
The full package description @@ -163,27 +163,27 @@ All Windows Package Manager manifests in the Microsoft community repository are >Note: This was included for future integration with the Microsoft Store source to provide the ability to display the full package description.
- + #### Moniker
The most common package term #### Optional Field - This key represents the most common term users would search for when installing or upgrading a package. If only one package uses this moniker, then the [install], [list] and [upgrade] command may match with this package. - + This key represents the most common term users would search for when installing or upgrading a package. If only one package uses this moniker, then the [install], [list] and [upgrade] command may match with this package. + >Note:Moniker is the third property evaluated when searching for a matching package.
- + #### Tags
List of additional package search terms #### Optional Field - This key represents other common term users would search for when looking for packages. + This key represents other common term users would search for when looking for packages. >Note: The best practice is to present these terms in all lower case with hyphens rather than spaces.
- + ### ManifestType
diff --git a/doc/manifest/schema/1.0.0/installer.md b/doc/manifest/schema/1.0.0/installer.md index d760caf3a7a..9c32ccd398f 100644 --- a/doc/manifest/schema/1.0.0/installer.md +++ b/doc/manifest/schema/1.0.0/installer.md @@ -33,7 +33,7 @@ All Windows Package Manager manifests in the Microsoft community repository are #### Required Field This key represents the version of the package. It is related to the specific release this manifests targets. In some cases you will see a perfectly formed [semantic version] number, and in other cases you might see something different. These may be date driven, or they might have other characters with some package specific meaning for example. - The Windows Package Manager client uses this version to determine if an upgrade for a package is available. In some cases, packages may be released with a marketing driven version, and that causes trouble with the [`winget upgrade`] command. + The Windows Package Manager client uses this version to determine if an upgrade for a package is available. In some cases, packages may be released with a marketing driven version, and that causes trouble with the [`winget upgrade`] command. >Note: The current best practice is to use the value reported in Add / Remove Programs when this version of the package is installed. In some cases, packages do not report a version resulting in an upgrade loop or other unwanted behavior. This practice may seem contrary to using semantic versioning, but it provides the best end to end experience for customers. It will take time for publishers and ISVs to migrate to semantic versioning, and some may intentionally choose to preserve other versioning schemes.
@@ -64,7 +64,7 @@ All Windows Package Manager manifests in the Microsoft community repository are #### Optional Field This key represents the minimum version of the Windows operating system supported by the package. - + >Note: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply. @@ -78,7 +78,7 @@ All Windows Package Manager manifests in the Microsoft community repository are >Note: The Windows Package Manager defaults to the install mode providing install progress. A best practice is to determine if one of the supported installer technologies was used to build an installer with the .exe file extension. The [Windows Package Manager Manifest Creator] tool can be used to determine if one of the known tools was used to build an installer with the .exe file extension. >Note: The Windows Package Manager does not support loose executables with the .exe or .com file extension directly. Compressed files containing installers, loose executables, and Progressive Web Applications (PWAs) are also not supported. - + >Note: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply. @@ -88,7 +88,7 @@ All Windows Package Manager manifests in the Microsoft community repository are #### Optional Field This key represents the scope the package is installed under. The two configurations are "user" and "machine". Some installers support only one of these scopes while others support both via arguments passed to the installer using "InstallerSwitches". - + >Note: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply. @@ -109,7 +109,7 @@ All Windows Package Manager manifests in the Microsoft community repository are Switches passed to installers #### Optional Field - This key represents the set of switches passed to installers. + This key represents the set of switches passed to installers. >Note: The Microsoft community repository currently requires support for silent and silent with progress installation. Many custom .exe installers will require the proper switches to meet this requirement. The [Windows Package Manager Manifest Creator] tool can be used to determine if one of the known tools was used to build an installer with the .exe file extension. In the event the tool is unable to determine the tool used to build the installer, the publisher may have documentation for the proper switches. @@ -122,7 +122,7 @@ All Windows Package Manager manifests in the Microsoft community repository are This key represents switches passed to the installer to provide a silent install experience. These would be used when the command `winget install --silent` is executed. >Note: When the Windows Package Manager installs a package using the "silent" install mode, any custom switches will also be passed to the installer. If a user applies override switches via command line via the Windows Package Manager, none of the switches from the manifest will be passed to the installer. - + >Note: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply. @@ -179,7 +179,7 @@ All Windows Package Manager manifests in the Microsoft community repository are #### Optional Field This key represents any switches the Windows Package Manager will pass to the installer in addition to "Silent", "SilentWithProgress", and "Interactive". - + >Note: If a user applies override switches via command line via the Windows Package Manager, none of the switches from the manifest will be passed to the installer. @@ -191,7 +191,7 @@ All Windows Package Manager manifests in the Microsoft community repository are This key represents any status codes returned by the installer representing a success condition other than zero. >Note: Some return codes indicate a reboot is suggested or required. The Windows Package Manager does not support the reboot behavior currently. Some installers will force a reboot, and the Windows Package Manager does not currently suppress reboot behavior. - + >Note: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply. @@ -213,7 +213,7 @@ All Windows Package Manager manifests in the Microsoft community repository are This key represents any commands or aliases used to execute the package after it has been installed. >Note: The Windows Package Manager does not update the path during the install workflow. In those cases, the user may need to restart their shell or terminal before the command will execute the newly installed package. The Windows Package Manager does not support any behavior related to commands or aliases. - + >Note: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply. @@ -295,7 +295,7 @@ All Windows Package Manager manifests in the Microsoft community repository are #### Optional Field This key represents the package family name specified in an MSIX installer. This value is used to assist with matching packages from a source to the program installed in Windows via Add / Remove Programs for list, and upgrade behavior. - + >Note: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply. @@ -305,7 +305,7 @@ All Windows Package Manager manifests in the Microsoft community repository are #### Optional Field This key represents the product code specified in an MSI installer. This value is used to assist with matching packages from a source to the program installed in Windows via Add / Remove Programs for list, and upgrade behavior. - + >Note: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply. @@ -345,7 +345,7 @@ All Windows Package Manager manifests in the Microsoft community repository are #### Optional Field This key represents the locale for an installer *not* the package meta-data. Some installers are compiled with locale or language specific properties. If this key is present, it is used to represent the package locale for an installer. - + >Note: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply. diff --git a/doc/manifest/schema/1.0.0/locale.md b/doc/manifest/schema/1.0.0/locale.md index 185184b9aff..525ecc83204 100644 --- a/doc/manifest/schema/1.0.0/locale.md +++ b/doc/manifest/schema/1.0.0/locale.md @@ -154,7 +154,7 @@ ManifestVersion: 1.0.0 # The manifest syntax version **Optional Field** This key represents the license web site or specific web page provided the publisher or ISV. If there is a license web site or specific web page for the package, it is preferred over a generic license page for the publisher. - + If this is a link to the license file for an open source project, it should be specific to the version for the package. Some open source projects change their license over time. @@ -172,7 +172,7 @@ ManifestVersion: 1.0.0 # The manifest syntax version **Optional Field** This key represents the copyright web site or specific web page provided the publisher or ISV. If there is a copyright web site or specific web page for the package it is preferred over a generic copyright page for the publisher. - + If this is a link to the copyright file for an open source project, it should be specific to the version for the package. Some open source projects change their copyright over time. @@ -201,21 +201,21 @@ ManifestVersion: 1.0.0 # The manifest syntax version **Optional Field** - This key represents the most common term users would search for when installing or upgrading a package. If only one package uses this moniker, then the [install], [list] and [upgrade] command may match with this package. - + This key represents the most common term users would search for when installing or upgrading a package. If only one package uses this moniker, then the [install], [list] and [upgrade] command may match with this package. + >Note:Moniker is the third property evaluated when searching for a matching package. - +
Tags - List of additional package search terms **Optional Field** - This key represents other common term users would search for when looking for packages. + This key represents other common term users would search for when looking for packages. >Note: The best practice is to present these terms in all lower case with hyphens rather than spaces.
- +
Agreement - List of package agreements @@ -225,10 +225,10 @@ ManifestVersion: 1.0.0 # The manifest syntax version >Note: In the Windows Package Manager Community Repository, these are only allowed to be submitted by verified developers.
- +
AgreementLabel - The label for a package agreement - + **Optional Field** This key represents the label for a package agreement. @@ -236,7 +236,7 @@ ManifestVersion: 1.0.0 # The manifest syntax version
Agreement - The text for a package agreement - + **Optional Field** This key represents the text or body of a package agreement. @@ -244,7 +244,7 @@ ManifestVersion: 1.0.0 # The manifest syntax version
AgreementUrl - The URL for a package agreement - + **Optional Field** This key represents the URL for a package agreement. @@ -252,7 +252,7 @@ ManifestVersion: 1.0.0 # The manifest syntax version
ReleaseDate - The Release Date for a package. - + **Optional Field** This key represents the release date for a package. @@ -260,7 +260,7 @@ ManifestVersion: 1.0.0 # The manifest syntax version
ReleaseNotes - The Release Notes for a package. - + **Optional Field** This key represents release notes for a package. @@ -268,7 +268,7 @@ ManifestVersion: 1.0.0 # The manifest syntax version
ReleaseNotesUrl - The Release Notes web page for a package. - + **Optional Field** This key represents release notes web page for a package. diff --git a/doc/manifest/schema/1.0.0/version.md b/doc/manifest/schema/1.0.0/version.md index dbe19fd407d..470b4509db7 100644 --- a/doc/manifest/schema/1.0.0/version.md +++ b/doc/manifest/schema/1.0.0/version.md @@ -24,7 +24,7 @@ All Windows Package Manager manifests in the Microsoft community repository are #### Required Field This key represents the version of the package. It is related to the specific release this manifests targets. In some cases you will see a perfectly formed [semantic version] number, and in other cases you might see something different. These may be date driven, or they might have other characters with some package specific meaning for example. - The Windows Package Manager client uses this version to determine whether or not an upgrade for a package is available. In some cases, packages may be released with a marketing driven version, and that causes trouble with the `winget upgrade` command. + The Windows Package Manager client uses this version to determine whether or not an upgrade for a package is available. In some cases, packages may be released with a marketing driven version, and that causes trouble with the `winget upgrade` command. The current best practice is to use the value reported in Add / Remove Programs when this version of the package is installed. In some cases, packages do not report a version resulting in an upgrade loop or other unwanted behavior.
diff --git a/doc/manifest/schema/1.1.0/README.md b/doc/manifest/schema/1.1.0/README.md index ddf6b2af257..f9c7ab31ee5 100644 --- a/doc/manifest/schema/1.1.0/README.md +++ b/doc/manifest/schema/1.1.0/README.md @@ -30,28 +30,28 @@ Example: `manifests/m/Microsoft/WindowsTerminal/1.9.1942/Microsoft.WindowsTerminal.installer.yaml` * Manifests are partitioned by the first letter of the publisher name (in lower case). For example: m. -* Publisher folder is the name of the company that publishes the tool. For example: Microsoft. -* The child folder package is the name of the application or tool. For example: WindowsTerminal. +* Publisher folder is the name of the company that publishes the tool. For example: Microsoft. +* The child folder package is the name of the application or tool. For example: WindowsTerminal. * The child folder package version is the version of the package. For example: 1.6.10571.0. * The filename must be a combination of the publisher name and the application name. For example: Microsoft.WindowsTerminal.yaml. -The publisher and application folders MUST match the values used to define the Id. See PackageIdentifier: in the YAML for more detail. -The version in the folder name MUST match the version field value in the YAML file. See PackageVersion: in the YAML for more detail. +The publisher and application folders MUST match the values used to define the Id. See PackageIdentifier: in the YAML for more detail. +The version in the folder name MUST match the version field value in the YAML file. See PackageVersion: in the YAML for more detail. -There are two primary types of manifests. A single file manifest (singleton) and a multi-file manifest. -[JSON schemas][schemaFolder] have been provided +There are two primary types of manifests. A single file manifest (singleton) and a multi-file manifest. +[JSON schemas][schemaFolder] have been provided to help strongly type attributes and requirements. ## YAML Syntax Each field in the file must be PascalCased and cannot be duplicated. ## Best Practices -The package identifier must be unique. You cannot have multiple submissions with the same package identifier. Only one pull request per package version is allowed. +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 to be permitted in the Windows Package Manager Community Repository. If you have an executable that does not support a silent install, then we cannot provide that tool at this time. -Provide as many fields as possible. The more meta-data you provide the better the user experience will be. In some cases, the fields may not yet be supported by the Windows Package Manager client (winget.exe). +Provide as many fields as possible. The more meta-data you provide the better the user experience will be. In some cases, the fields may not yet be supported by the Windows Package Manager client (winget.exe). The length of strings in this specification should be limited to 100 characters before a line break. diff --git a/doc/manifest/schema/1.1.0/defaultLocale.md b/doc/manifest/schema/1.1.0/defaultLocale.md index 34bf368ddf1..27c464f6066 100644 --- a/doc/manifest/schema/1.1.0/defaultLocale.md +++ b/doc/manifest/schema/1.1.0/defaultLocale.md @@ -156,7 +156,7 @@ ManifestVersion: 1.1.0 # The manifest syntax version **Optional Field** This key represents the license web site or specific web page provided the publisher or ISV. If there is a license web site or specific web page for the package it is preferred over a generic license page for the publisher. - + If this is a link to the license file for an open source project, it should be specific to the version for the package. Some open source projects change their license over time.
@@ -174,7 +174,7 @@ ManifestVersion: 1.1.0 # The manifest syntax version **Optional Field** This key represents the copyright web site or specific web page provided the publisher or ISV. If there is a copyright web site or specific web page for the package it is preferred over a generic copyright page for the publisher. - + If this is a link to the copyright file for an open source project, it should be specific to the version for the package. Some open source projects change their copyright over time.
@@ -203,8 +203,8 @@ ManifestVersion: 1.1.0 # The manifest syntax version **Optional Field** - This key represents the most common term users would search for when installing or upgrading a package. If only one package uses this moniker, then the [install], [list] and [upgrade] command may match with this package. - + This key represents the most common term users would search for when installing or upgrading a package. If only one package uses this moniker, then the [install], [list] and [upgrade] command may match with this package. + >Note:Moniker is the third property evaluated when searching for a matching package.
@@ -218,7 +218,7 @@ ManifestVersion: 1.1.0 # The manifest syntax version >Note: The best practice is to present these terms in all lower case with hyphens rather than spaces.
- +
Agreements - List of package agreements @@ -230,10 +230,10 @@ ManifestVersion: 1.1.0 # The manifest syntax version Agreements are only allowed in the community repository when the manifest is maintained by a verified developer.
- +
AgreementLabel - The label for a package agreement - + **Optional Field** This key represents the label for a package agreement. @@ -241,7 +241,7 @@ ManifestVersion: 1.1.0 # The manifest syntax version
Agreement - The text for a package agreement - + **Optional Field** This key represents the text or body of a package agreement. @@ -249,7 +249,7 @@ ManifestVersion: 1.1.0 # The manifest syntax version
AgreementUrl - The URL for a package agreement - + **Optional Field** This key represents the URL for a package agreement. @@ -257,7 +257,7 @@ ManifestVersion: 1.1.0 # The manifest syntax version
ReleaseDate - The Release Date for a package. - + **Optional Field** This key represents the release date for a package. @@ -265,7 +265,7 @@ ManifestVersion: 1.1.0 # The manifest syntax version
ReleaseNotes - The Release Notes for a package. - + **Optional Field** This key represents release notes for a package. @@ -273,7 +273,7 @@ ManifestVersion: 1.1.0 # The manifest syntax version
ReleaseNotesUrl - The Release Notes web page for a package. - + **Optional Field** This key represents release notes web page for a package. diff --git a/doc/manifest/schema/1.1.0/installer.md b/doc/manifest/schema/1.1.0/installer.md index ea374d78f94..9aaa6c60a4c 100644 --- a/doc/manifest/schema/1.1.0/installer.md +++ b/doc/manifest/schema/1.1.0/installer.md @@ -13,7 +13,7 @@ # Windows Package Manager ## Manifest Schema v1.1.0 Installer File -All Windows Package Manager manifests in the Microsoft community repository are submitted using [YAML] syntax. A [JSON schema] is provided to aid authoring these files in editors, and in the other tooling related to the Windows Package Manager. This document provides detailed information regarding the usage of the YAML keys in the installer file for multi-file manifests. +All Windows Package Manager manifests in the Microsoft community repository are submitted using [YAML] syntax. A [JSON schema] is provided to aid authoring these files in editors, and in the other tooling related to the Windows Package Manager. This document provides detailed information regarding the usage of the YAML keys in the installer file for multi-file manifests. >Note: The 1.1 manifest schema was released with the Windows Package Manager 1.2. Any fields marked *Not implemented* are not supported in the 1.2 client, but may be supported in a 1.3-preview client. @@ -141,7 +141,7 @@ ManifestVersion: 1.1.0 This key represents the version of the package. It is related to the specific release this manifests targets. In some cases you will see a perfectly formed [semantic version] number, and in other cases you might see something different. These may be date driven, or they might have other characters with some package specific meaning for example. - The Windows Package Manager client uses this version to determine if an upgrade for a package is available. In some cases, packages may be released with a marketing driven version, and that causes trouble with the [`winget upgrade`] command. + The Windows Package Manager client uses this version to determine if an upgrade for a package is available. In some cases, packages may be released with a marketing driven version, and that causes trouble with the [`winget upgrade`] command. >Note: The current best practice is to use the value reported in Add / Remove Programs when this version of the package is installed. In some cases, packages do not report a version resulting in an upgrade loop or other unwanted behavior. This practice may seem contrary to using semantic versioning, but it provides the best end to end experience for customers. It will take time for publishers and ISVs to migrate to semantic versioning, and some may intentionally choose to preserve other versioning schemes. In these cases, it is best practice to include the "AppsAndFeaturesEntries" section for each installer.
@@ -180,7 +180,7 @@ ManifestVersion: 1.1.0 **Optional Field** This key represents the locale for an installer *not* the package meta-data. Some installers are compiled with locale or language specific properties. If this key is present, it is used to represent the package locale for an installer. - + >Note: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply.
@@ -200,7 +200,7 @@ ManifestVersion: 1.1.0 **Optional Field** This key represents the minimum version of the Windows operating system supported by the package. - + >Note: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply.
@@ -214,7 +214,7 @@ ManifestVersion: 1.1.0 >Note: The Windows Package Manager defaults to the install mode providing install progress. A best practice is to determine if one of the supported installer technologies was used to build an installer with the .exe file extension. The [Windows Package Manager Manifest Creator] tool can be used to determine if one of the known tools was used to build an installer with the .exe file extension. >Note: The Windows Package Manager 1.2 does not support loose executables with the .exe or .com file extension directly. Compressed files containing installers, loose executables, and Progressive Web Applications (PWAs) are also not supported. - + >Note: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply.
@@ -252,7 +252,7 @@ ManifestVersion: 1.1.0 **Optional Field** This key represents the scope the package is installed under. The two configurations are "user" and "machine". Some installers support only one of these scopes while others support both via arguments passed to the installer using "InstallerSwitches". - + >Note: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply.
@@ -273,7 +273,7 @@ ManifestVersion: 1.1.0 **Optional Field** - This key represents the set of switches passed to installers. + This key represents the set of switches passed to installers. **Windows Package Manager Community Repository** @@ -288,7 +288,7 @@ ManifestVersion: 1.1.0 This key represents switches passed to the installer to provide a silent install experience. These would be used when the command `winget install --silent` is executed. >Note: When the Windows Package Manager installs a package using the "silent" install mode, any custom switches will also be passed to the installer. If a user applies override switches via command line via the Windows Package Manager, none of the switches from the manifest will be passed to the installer. - + >Note: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply.
@@ -344,7 +344,7 @@ ManifestVersion: 1.1.0 **Optional Field** This key represents any switches the Windows Package Manager will pass to the installer in addition to "Silent", "SilentWithProgress", and "Interactive". - + >Note: If a user applies override switches via command line via the Windows Package Manager, none of the switches from the manifest will be passed to the installer.
@@ -366,7 +366,7 @@ ManifestVersion: 1.1.0 This key represents any commands or aliases used to execute the package after it has been installed. >Note: The Windows Package Manager does not update the path during the install workflow. In those cases, the user may need to restart their shell or terminal before the command will execute the newly installed package. The Windows Package Manager does not support any behavior related to commands or aliases. - + >Note: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply. @@ -448,7 +448,7 @@ ManifestVersion: 1.1.0 **Optional Field** This key represents the package family name specified in an MSIX installer. This value is used to assist with matching packages from a source to the program installed in Windows via Add / Remove Programs for list, and upgrade behavior. - + >Note: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply. @@ -477,7 +477,7 @@ ManifestVersion: 1.1.0 **Optional Field** - This key represents the behavior associated with installers that abort the terminal. This most often occurs when a user is performing an upgrade of the running terminal. + This key represents the behavior associated with installers that abort the terminal. This most often occurs when a user is performing an upgrade of the running terminal. >Note: Windows Terminal no longer causes this to occur as the MSIX install behavior from the Windows Package Manager is deferred registration. @@ -504,7 +504,7 @@ ManifestVersion: 1.1.0 ElevationRequirement - Indicator for elevation requirements when installing or upgrading packages. **Optional Field** - + This key represents which scope a package is required to be executed under. Some packages require user level execution while others require administrative level execution. >Note: The behavior associated with this key is not implemented in the Windows Package Manager 1.2 client. @@ -513,16 +513,16 @@ ManifestVersion: 1.1.0
UnsupportedOSArchitectures - List of unsupported architectures for a package. - **Optional Field** - + **Optional Field** + This key represents any architectures a package is known not to be compatible with. Generally, this is associated with emulation modes.
Markets - List of supported markets for a package. - **Optional Field** - + **Optional Field** + This key represents any markets a package may be installed in. >Note: If a market is listed in both this key and the ExcludedMarkets key, the market will be excluded. Both keys are present to reduce the need to list the larger set of markets. @@ -531,8 +531,8 @@ ManifestVersion: 1.1.0
ExcludedMarkets - List of unsupported markets for a package. - **Optional Field** - + **Optional Field** + This key represents any markets a package may not be installed in. >Note: If a market is listed in both this key and the Markets key, the market will be excluded. Both keys are present to reduce the need to list the larger set of markets. @@ -546,19 +546,19 @@ ManifestVersion: 1.1.0 This key represents any status codes returned by the installer representing a success condition other than zero. >Note: Some return codes indicate a reboot is suggested or required. The Windows Package Manager does not support the reboot behavior currently. Some installers will force a reboot, and the Windows Package Manager does not currently suppress reboot behavior. - + >Note: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply.
- ExpectedReturnCodes - List of additional non-zero installer exit codes other than known default values by the Windows Package Manager. + ExpectedReturnCodes - List of additional non-zero installer exit codes other than known default values by the Windows Package Manager. **Optional Field** This key represents any status codes returned by the installer representing a condition other than zero. >Note: Some return codes indicate a reboot is suggested or required. The Windows Package Manager does not support the reboot behavior currently. Some installers will force a reboot, and the Windows Package Manager does not currently suppress reboot behavior. - + >Note: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply.
@@ -586,7 +586,7 @@ ManifestVersion: 1.1.0 **Optional Field** This key represents the product code specified in an MSI installer. This value is used to assist with matching packages from a source to the program installed in Windows via Add / Remove Programs for list, and upgrade behavior. - + >Note: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply.
@@ -595,7 +595,7 @@ ManifestVersion: 1.1.0 **Optional Field** - This key represents the values reported by Windows Apps & Features. When a package is installed, entries are made into the Windows Registry. + This key represents the values reported by Windows Apps & Features. When a package is installed, entries are made into the Windows Registry. >Note: The AppsAndFeatures behavior is not implemented in the Windows Package Manager 1.2 client. @@ -616,7 +616,7 @@ ManifestVersion: 1.1.0 **Optional Field** This key represents the package version as displayed in Windows Apps & Features. It is used to help correlate installed packages with manifests in configured sources. - + >Note: The AppsAndFeatures behavior is not implemented in the Windows Package Manager 1.2 client. @@ -626,9 +626,9 @@ ManifestVersion: 1.1.0 **Optional Field** This key represents the Publisher reported in the Windows registry. It is used to help correlate installed packages with manifests in configured sources. - + >Note: The AppsAndFeatures behavior is not implemented in the Windows Package Manager 1.2 client. - +
ProductCode - ProductCode is used for correlation of packages with manifests in configured sources. diff --git a/doc/manifest/schema/1.1.0/locale.md b/doc/manifest/schema/1.1.0/locale.md index c0c5c211a8b..b70384723c9 100644 --- a/doc/manifest/schema/1.1.0/locale.md +++ b/doc/manifest/schema/1.1.0/locale.md @@ -155,7 +155,7 @@ ManifestVersion: 1.1.0 # The manifest syntax version **Optional Field** This key represents the license web site or specific web page provided the publisher or ISV. If there is a license web site or specific web page for the package, it is preferred over a generic license page for the publisher. - + If this is a link to the license file for an open source project, it should be specific to the version for the package. Some open source projects change their license over time.
@@ -173,7 +173,7 @@ ManifestVersion: 1.1.0 # The manifest syntax version **Optional Field** This key represents the copyright web site or specific web page provided the publisher or ISV. If there is a copyright web site or specific web page for the package, it is preferred over a generic copyright page for the publisher. - + If this is a link to the copyright file for an open source project, it should be specific to the version for the package. Some open source projects change their copyright over time. @@ -202,21 +202,21 @@ ManifestVersion: 1.1.0 # The manifest syntax version **Optional Field** - This key represents the most common term users would search for when installing or upgrading a package. If only one package uses this moniker, then the [install], [list] and [upgrade] command may match with this package. - + This key represents the most common term users would search for when installing or upgrading a package. If only one package uses this moniker, then the [install], [list] and [upgrade] command may match with this package. + >Note:Moniker is the third property evaluated when searching for a matching package. - +
Tags - List of additional package search terms **Optional Field** - This key represents other common term users would search for when looking for packages. + This key represents other common term users would search for when looking for packages. >Note: The best practice is to present these terms in all lower case with hyphens rather than spaces.
- +
Agreements - List of package agreements @@ -226,10 +226,10 @@ ManifestVersion: 1.1.0 # The manifest syntax version >Note: In the Windows Package Manager Community Repository, these are only allowed to be submitted by verified developers.
- +
AgreementLabel - The label for a package agreement - + **Optional Field** This key represents the label for a package agreement. @@ -237,7 +237,7 @@ ManifestVersion: 1.1.0 # The manifest syntax version
Agreement - The text for a package agreement - + **Optional Field** This key represents the text or body of a package agreement. @@ -245,7 +245,7 @@ ManifestVersion: 1.1.0 # The manifest syntax version
AgreementUrl - The URL for a package agreement - + **Optional Field** This key represents the URL for a package agreement. @@ -253,7 +253,7 @@ ManifestVersion: 1.1.0 # The manifest syntax version
ReleaseDate - The Release Date for a package. - + **Optional Field** This key represents the release date for a package. @@ -261,7 +261,7 @@ ManifestVersion: 1.1.0 # The manifest syntax version
ReleaseNotes - The Release Notes for a package. - + **Optional Field** This key represents release notes for a package. @@ -269,7 +269,7 @@ ManifestVersion: 1.1.0 # The manifest syntax version
ReleaseNotesUrl - The Release Notes web page for a package. - + **Optional Field** This key represents release notes web page for a package. diff --git a/doc/manifest/schema/1.1.0/singleton.md b/doc/manifest/schema/1.1.0/singleton.md index c62a9722c95..323b691a825 100644 --- a/doc/manifest/schema/1.1.0/singleton.md +++ b/doc/manifest/schema/1.1.0/singleton.md @@ -102,7 +102,7 @@ Publisher: Microsoft PackageName: Windows Terminal License: MIT ShortDescription: The new Windows Terminal, a tabbed command line experience for Windows. -Installers: +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 @@ -159,8 +159,8 @@ ManifestVersion: 1.1.0 **Optional Field** - This key represents the most common term users would search for when installing or upgrading a package. If only one package uses this moniker, then the [install], [list] and [upgrade] command may match with this package. - + This key represents the most common term users would search for when installing or upgrading a package. If only one package uses this moniker, then the [install], [list] and [upgrade] command may match with this package. + >Note:Moniker is the third property evaluated when searching for a matching package.
@@ -169,11 +169,11 @@ ManifestVersion: 1.1.0 **Optional Field** - This key represents other common term users would search for when looking for packages. + This key represents other common term users would search for when looking for packages. >Note: The best practice is to present these terms in all lower case with hyphens rather than spaces.
- +
Agreements - List of package agreements @@ -183,10 +183,10 @@ ManifestVersion: 1.1.0 >Note: In the Windows Package Manager Community Repository, these are only allowed to be submitted by verified developers.
- +
AgreementLabel - The label for a package agreement - + **Optional Field** This key represents the label for a package agreement. @@ -194,7 +194,7 @@ ManifestVersion: 1.1.0
Agreement - The text for a package agreement - + **Optional Field** This key represents the text or body of a package agreement. @@ -202,7 +202,7 @@ ManifestVersion: 1.1.0
AgreementUrl - The URL for a package agreement - + **Optional Field** This key represents the URL for a package agreement. @@ -210,7 +210,7 @@ ManifestVersion: 1.1.0
ReleaseDate - The Release Date for a package. - + **Optional Field** This key represents the release date for a package. @@ -218,7 +218,7 @@ ManifestVersion: 1.1.0
ReleaseNotes - The Release Notes for a package. - + **Optional Field** This key represents release notes for a package. @@ -226,7 +226,7 @@ ManifestVersion: 1.1.0
ReleaseNotesUrl - The Release Notes web page for a package. - + **Optional Field** This key represents release notes web page for a package. @@ -256,7 +256,7 @@ ManifestVersion: 1.1.0 **Optional Field** This key represents the locale for an installer *not* the package meta-data. Some installers are compiled with locale or language specific properties. If this key is present, it is used to represent the package locale for an installer. - + >Note: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply.
@@ -277,7 +277,7 @@ ManifestVersion: 1.1.0 **Optional Field** This key represents the minimum version of the Windows operating system supported by the package. - + >Note: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply.
@@ -291,7 +291,7 @@ ManifestVersion: 1.1.0 >Note: The Windows Package Manager defaults to the install mode providing install progress. A best practice is to determine if one of the supported installer technologies was used to build an installer with the .exe file extension. The [Windows Package Manager Manifest Creator] tool can be used to determine if one of the known tools was used to build an installer with the .exe file extension. >Note: The Windows Package Manager does not support loose executables with the .exe or .com file extension directly. Compressed files containing installers, loose executables, and Progressive Web Applications (PWAs) are also not supported. - + >Note: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply.
@@ -329,7 +329,7 @@ ManifestVersion: 1.1.0 **Optional Field** This key represents the scope the package is installed under. The two configurations are "user" and "machine". Some installers support only one of these scopes while others support both via arguments passed to the installer using "InstallerSwitches". - + >Note: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply.
@@ -350,7 +350,7 @@ ManifestVersion: 1.1.0 **Optional Field** - This key represents the set of switches passed to installers. + This key represents the set of switches passed to installers. >Note: The Microsoft community repository currently requires support for silent and silent with progress installation. Many custom .exe installers will require the proper switches to meet this requirement. The [Windows Package Manager Manifest Creator] tool can be used to determine if one of the known tools was used to build an installer with the .exe file extension. In the event the tool is unable to determine the tool used to build the installer, the publisher may have documentation for the proper switches.
@@ -363,7 +363,7 @@ ManifestVersion: 1.1.0 This key represents switches passed to the installer to provide a silent install experience. These would be used when the command `winget install --silent` is executed. >Note: When the Windows Package Manager installs a package using the "silent" install mode, any custom switches will also be passed to the installer. If a user applies override switches via command line via the Windows Package Manager, none of the switches from the manifest will be passed to the installer. - + >Note: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply.
@@ -419,7 +419,7 @@ ManifestVersion: 1.1.0 **Optional Field** This key represents any switches the Windows Package Manager will pass to the installer in addition to "Silent", "SilentWithProgress", and "Interactive". - + >Note: If a user applies override switches via command line via the Windows Package Manager, none of the switches from the manifest will be passed to the installer.
@@ -441,7 +441,7 @@ ManifestVersion: 1.1.0 This key represents any commands or aliases used to execute the package after it has been installed. >Note: The Windows Package Manager does not update the path during the install workflow. In those cases, the user may need to restart their shell or terminal before the command will execute the newly installed package. The Windows Package Manager does not support any behavior related to commands or aliases. - + >Note: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply.
@@ -523,7 +523,7 @@ ManifestVersion: 1.1.0 **Optional Field** This key represents the package family name specified in an MSIX installer. This value is used to assist with matching packages from a source to the program installed in Windows via Add / Remove Programs for list, and upgrade behavior. - + >Note: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply.
@@ -552,7 +552,7 @@ ManifestVersion: 1.1.0 **Optional Field** - This key represents the behavior associated with installers that abort the terminal. This most often occurs when a user is performing an upgrade of the running terminal. + This key represents the behavior associated with installers that abort the terminal. This most often occurs when a user is performing an upgrade of the running terminal. >Note: Windows Terminal no longer causes this to occur as the MSIX install behavior from the Windows Package Manager is deferred registration.
@@ -578,8 +578,8 @@ ManifestVersion: 1.1.0
ElevationRequirement - Indicator for elevation requirements when installing or upgrading packages. - **Optional Field** - + **Optional Field** + This key represents which scope a package is required to be executed under. Some packages require user level execution while others require administrative level execution. >Note: The behavior associated with this key is not implemented in the Windows Package Manager 1.2 client. @@ -588,16 +588,16 @@ ManifestVersion: 1.1.0
UnsupportedOSArchitectures - List of unsupported architectures for a package. - **Optional Field** - + **Optional Field** + This key represents any architectures a package is known not to be compatible with. Generally, this is associated with emulation modes.
Markets - List of supported markets for a package. - **Optional Field** - + **Optional Field** + This key represents any markets a package may be installed in. >Note: If a market is listed in both this key and the ExcludedMarkets key, the market will be excluded. Both keys are present to reduce the need to list the larger set of markets. @@ -606,8 +606,8 @@ ManifestVersion: 1.1.0
ExcludedMarkets - List of unsupported markets for a package. - **Optional Field** - + **Optional Field** + This key represents any markets a package may not be installed in. >Note: If a market is listed in both this key and the Markets key, the market will be excluded. Both keys are present to reduce the need to list the larger set of markets. @@ -621,19 +621,19 @@ ManifestVersion: 1.1.0 This key represents any status codes returned by the installer representing a success condition other than zero. >Note: Some return codes indicate a reboot is suggested or required. The Windows Package Manager does not support the reboot behavior currently. Some installers will force a reboot, and the Windows Package Manager does not currently suppress reboot behavior. - + >Note: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply.
- ExpectedReturnCodes - List of additional non-zero installer exit codes other than known default values by the Windows Package Manager. + ExpectedReturnCodes - List of additional non-zero installer exit codes other than known default values by the Windows Package Manager. **Optional Field** This key represents any status codes returned by the installer representing a condition other than zero. >Note: Some return codes indicate a reboot is suggested or required. The Windows Package Manager does not support the reboot behavior currently. Some installers will force a reboot, and the Windows Package Manager does not currently suppress reboot behavior. - + >Note: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply.
@@ -661,7 +661,7 @@ ManifestVersion: 1.1.0 **Optional Field** This key represents the product code specified in an MSI installer. This value is used to assist with matching packages from a source to the program installed in Windows via Add / Remove Programs for list, and upgrade behavior. - + >Note: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply.
@@ -670,7 +670,7 @@ ManifestVersion: 1.1.0 **Optional Field** - This key represents the values reported by Windows Apps & Features. When a package is installed, entries are made into the Windows Registry. + This key represents the values reported by Windows Apps & Features. When a package is installed, entries are made into the Windows Registry. >Note: The AppsAndFeatures behavior is not implemented in the Windows Package Manager 1.2 client.
@@ -691,7 +691,7 @@ ManifestVersion: 1.1.0 **Optional Field** This key represents the package version as displayed in Windows Apps & Features. It is used to help correlate installed packages with manifests in configured sources. - + >Note: The AppsAndFeatures behavior is not implemented in the Windows Package Manager 1.2 client. @@ -701,7 +701,7 @@ ManifestVersion: 1.1.0 **Optional Field** This key represents the Publisher reported in the Windows registry. It is used to help correlate installed packages with manifests in configured sources. - + >Note: The AppsAndFeatures behavior is not implemented in the Windows Package Manager 1.2 client. diff --git a/doc/manifest/schema/1.1.0/version.md b/doc/manifest/schema/1.1.0/version.md index c35451a8cc5..420aa9dc63f 100644 --- a/doc/manifest/schema/1.1.0/version.md +++ b/doc/manifest/schema/1.1.0/version.md @@ -24,10 +24,10 @@ ManifestVersion: 1.1.0 # The manifest syntax version **Required Field** - This key is the unique identifier for a given package. - + This key is the unique identifier for a given package. + **Windows Package Manager Community Repository** - + This value is generally in the form of `Publisher.Package`. It is case sensitive, and this value must match the folder structure under the partition directory. @@ -38,7 +38,7 @@ ManifestVersion: 1.1.0 # The manifest syntax version This key represents the version of the package. It is related to the specific release this manifests targets. In some cases you will see a perfectly formed [semantic version] number, and in other cases you might see something different. These may be date driven, or they might have other characters with some package specific meaning for example. - The Windows Package Manager client uses this version to determine whether or not an upgrade for a package is available. In some cases, packages may be released with a marketing driven version, and that causes trouble with the `winget upgrade` command. + The Windows Package Manager client uses this version to determine whether or not an upgrade for a package is available. In some cases, packages may be released with a marketing driven version, and that causes trouble with the `winget upgrade` command. The current best practice is to use the value reported in Add / Remove Programs when this version of the package is installed. In some cases, packages do not report a version resulting in an upgrade loop or other unwanted behavior. @@ -59,7 +59,7 @@ ManifestVersion: 1.1.0 # The manifest syntax version ManifestType - The manifest type **Required Field** - + This key must have the value "version". The Microsoft community package repository validation pipelines also use this value to determine appropriate validation rules when evaluating this file. diff --git a/doc/manifest/schema/1.2.0/README.md b/doc/manifest/schema/1.2.0/README.md index 88a28ef14f1..c97186d9139 100644 --- a/doc/manifest/schema/1.2.0/README.md +++ b/doc/manifest/schema/1.2.0/README.md @@ -30,28 +30,28 @@ Example: `manifests/m/Microsoft/WindowsTerminal/1.9.1942/Microsoft.WindowsTerminal.installer.yaml` * Manifests are partitioned by the first letter of the publisher name (in lower case). For example: m. -* Publisher folder is the name of the company that publishes the tool. For example: Microsoft. -* The child folder package is the name of the application or tool. For example: WindowsTerminal. +* Publisher folder is the name of the company that publishes the tool. For example: Microsoft. +* The child folder package is the name of the application or tool. For example: WindowsTerminal. * The child folder package version is the version of the package. For example: 1.6.10571.0. * The filename must be a combination of the publisher name and the application name. For example: Microsoft.WindowsTerminal.yaml. -The publisher and application folders MUST match the values used to define the Id. See PackageIdentifier: in the YAML for more detail. -The version in the folder name MUST match the version field value in the YAML file. See PackageVersion: in the YAML for more detail. +The publisher and application folders MUST match the values used to define the Id. See PackageIdentifier: in the YAML for more detail. +The version in the folder name MUST match the version field value in the YAML file. See PackageVersion: in the YAML for more detail. -There are two primary types of manifests. A single file manifest (singleton) and a multi-file manifest. -[JSON schemas][schemaFolder] have been provided +There are two primary types of manifests. A single file manifest (singleton) and a multi-file manifest. +[JSON schemas][schemaFolder] have been provided to help strongly type attributes and requirements. ## YAML Syntax Each field in the file must be PascalCased and cannot be duplicated. ## Best Practices -The package identifier must be unique. You cannot have multiple submissions with the same package identifier. Only one pull request per package version is allowed. +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 to be permitted in the Windows Package Manager Community Repository. If you have an executable that does not support a silent install, then we cannot provide that tool at this time. -Provide as many fields as possible. The more meta-data you provide the better the user experience will be. In some cases, the fields may not yet be supported by the Windows Package Manager client (winget.exe). +Provide as many fields as possible. The more meta-data you provide the better the user experience will be. In some cases, the fields may not yet be supported by the Windows Package Manager client (winget.exe). The length of strings in this specification should be limited to 100 characters before a line break. diff --git a/doc/manifest/schema/1.2.0/defaultLocale.md b/doc/manifest/schema/1.2.0/defaultLocale.md index 51516a2879b..6e4bcc8fbd4 100644 --- a/doc/manifest/schema/1.2.0/defaultLocale.md +++ b/doc/manifest/schema/1.2.0/defaultLocale.md @@ -161,7 +161,7 @@ ManifestVersion: 1.2.0 # The manifest syntax version **Optional Field** This key represents the license web site or specific web page provided the publisher or ISV. If there is a license web site or specific web page for the package it is preferred over a generic license page for the publisher. - + If this is a link to the license file for an open source project, it should be specific to the version for the package. Some open source projects change their license over time. @@ -179,7 +179,7 @@ ManifestVersion: 1.2.0 # The manifest syntax version **Optional Field** This key represents the copyright web site or specific web page provided the publisher or ISV. If there is a copyright web site or specific web page for the package it is preferred over a generic copyright page for the publisher. - + If this is a link to the copyright file for an open source project, it should be specific to the version for the package. Some open source projects change their copyright over time. @@ -208,8 +208,8 @@ ManifestVersion: 1.2.0 # The manifest syntax version **Optional Field** - This key represents the most common term users would search for when installing or upgrading a package. If only one package uses this moniker, then the [install], [list] and [upgrade] command may match with this package. - + This key represents the most common term users would search for when installing or upgrading a package. If only one package uses this moniker, then the [install], [list] and [upgrade] command may match with this package. + >Note:Moniker is the third property evaluated when searching for a matching package. @@ -223,7 +223,7 @@ ManifestVersion: 1.2.0 # The manifest syntax version >Note: The best practice is to present these terms in all lower case with hyphens rather than spaces. - +
Agreements - List of package agreements @@ -235,10 +235,10 @@ ManifestVersion: 1.2.0 # The manifest syntax version Agreements are only allowed in the community repository when the manifest is maintained by a verified developer.
- +
AgreementLabel - The label for a package agreement - + **Optional Field** This key represents the label for a package agreement. @@ -246,7 +246,7 @@ ManifestVersion: 1.2.0 # The manifest syntax version
Agreement - The text for a package agreement - + **Optional Field** This key represents the text or body of a package agreement. @@ -254,7 +254,7 @@ ManifestVersion: 1.2.0 # The manifest syntax version
AgreementUrl - The URL for a package agreement - + **Optional Field** This key represents the URL for a package agreement. @@ -262,7 +262,7 @@ ManifestVersion: 1.2.0 # The manifest syntax version
Documentations - List of documentation - + **Optional Field** This key holds any documentation for providing software guides such as manuals and troubleshooting URLs. @@ -270,7 +270,7 @@ ManifestVersion: 1.2.0 # The manifest syntax version
DocumentLabel - The documentation label - + **Optional Field** This key represents the label for a documentation. @@ -278,7 +278,7 @@ ManifestVersion: 1.2.0 # The manifest syntax version
DocumentUrl - List of documentation - + **Optional Field** This key represents the URL for a documentation. @@ -286,7 +286,7 @@ ManifestVersion: 1.2.0 # The manifest syntax version
ReleaseDate - The Release Date for a package. - + **Optional Field** This key represents the release date for a package. @@ -294,7 +294,7 @@ ManifestVersion: 1.2.0 # The manifest syntax version
ReleaseNotes - The Release Notes for a package. - + **Optional Field** This key represents release notes for a package. @@ -302,7 +302,7 @@ ManifestVersion: 1.2.0 # The manifest syntax version
ReleaseNotesUrl - The Release Notes web page for a package. - + **Optional Field** This key represents release notes web page for a package. @@ -310,7 +310,7 @@ ManifestVersion: 1.2.0 # The manifest syntax version
PurchaseUrl - The Purchase URL for a package. - + **Optional Field** This key represents the purchase url for acquiring entitlement for a package. @@ -318,7 +318,7 @@ ManifestVersion: 1.2.0 # The manifest syntax version
InstallationNotes - The Installation Notes for a package. - + **Optional Field** This key represents the notes displayed to the user upon completion of a package installation. diff --git a/doc/manifest/schema/1.2.0/installer.md b/doc/manifest/schema/1.2.0/installer.md index 7852590f9af..2ec6ffc039d 100644 --- a/doc/manifest/schema/1.2.0/installer.md +++ b/doc/manifest/schema/1.2.0/installer.md @@ -13,7 +13,7 @@ # Windows Package Manager ## Manifest Schema v1.2.0 Installer File -All Windows Package Manager manifests in the Microsoft community repository are submitted using [YAML] syntax. A [JSON schema] is provided to aid authoring these files in editors, and in the other tooling related to the Windows Package Manager. This document provides detailed information regarding the usage of the YAML keys in the installer file for multi-file manifests. +All Windows Package Manager manifests in the Microsoft community repository are submitted using [YAML] syntax. A [JSON schema] is provided to aid authoring these files in editors, and in the other tooling related to the Windows Package Manager. This document provides detailed information regarding the usage of the YAML keys in the installer file for multi-file manifests. >Note: The 1.2 manifest schema was released with the Windows Package Manager 1.3. Any fields marked *Not implemented* are not supported in the 1.3 client, but may be supported in a 1.4-preview client. @@ -145,7 +145,7 @@ ManifestVersion: 1.2.0 This key represents the version of the package. It is related to the specific release this manifests targets. In some cases you will see a perfectly formed [semantic version] number, and in other cases you might see something different. These may be date driven, or they might have other characters with some package specific meaning for example. - The Windows Package Manager client uses this version to determine if an upgrade for a package is available. In some cases, packages may be released with a marketing driven version, and that causes trouble with the [`winget upgrade`] command. + The Windows Package Manager client uses this version to determine if an upgrade for a package is available. In some cases, packages may be released with a marketing driven version, and that causes trouble with the [`winget upgrade`] command. >Note: The current best practice is to use the value reported in Add / Remove Programs when this version of the package is installed. In some cases, packages do not report a version resulting in an upgrade loop or other unwanted behavior. This practice may seem contrary to using semantic versioning, but it provides the best end to end experience for customers. It will take time for publishers and ISVs to migrate to semantic versioning, and some may intentionally choose to preserve other versioning schemes. In these cases, it is best practice to include the "AppsAndFeaturesEntries" section for each installer.
@@ -184,7 +184,7 @@ ManifestVersion: 1.2.0 **Optional Field** This key represents the locale for an installer *not* the package meta-data. Some installers are compiled with locale or language specific properties. If this key is present, it is used to represent the package locale for an installer. - + >Note: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply.
@@ -204,7 +204,7 @@ ManifestVersion: 1.2.0 **Optional Field** This key represents the minimum version of the Windows operating system supported by the package. - + >Note: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply.
@@ -218,7 +218,7 @@ ManifestVersion: 1.2.0 >Note: The Windows Package Manager defaults to the install mode providing install progress. A best practice is to determine if one of the supported installer technologies was used to build an installer with the .exe file extension. The [Windows Package Manager Manifest Creator] tool can be used to determine if one of the known tools was used to build an installer with the .exe file extension. >Note: The Windows Package Manager 1.3 does not support loose executables with the .com file extension directly. Compressed files containing installers, loose executables, and Progressive Web Applications (PWAs) are also not supported. - + >Note: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply.
@@ -256,7 +256,7 @@ ManifestVersion: 1.2.0 **Optional Field** This key represents the scope the package is installed under. The two configurations are "user" and "machine". Some installers support only one of these scopes while others support both via arguments passed to the installer using "InstallerSwitches". - + >Note: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply.
@@ -277,7 +277,7 @@ ManifestVersion: 1.2.0 **Optional Field** - This key represents the set of switches passed to installers. + This key represents the set of switches passed to installers. **Windows Package Manager Community Repository** @@ -292,7 +292,7 @@ ManifestVersion: 1.2.0 This key represents switches passed to the installer to provide a silent install experience. These would be used when the command `winget install --silent` is executed. >Note: When the Windows Package Manager installs a package using the "silent" install mode, any custom switches will also be passed to the installer. If a user applies override switches via command line via the Windows Package Manager, none of the switches from the manifest will be passed to the installer. - + >Note: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply.
@@ -348,7 +348,7 @@ ManifestVersion: 1.2.0 **Optional Field** This key represents any switches the Windows Package Manager will pass to the installer in addition to "Silent", "SilentWithProgress", and "Interactive". - + >Note: If a user applies override switches via command line via the Windows Package Manager, none of the switches from the manifest will be passed to the installer.
@@ -370,7 +370,7 @@ ManifestVersion: 1.2.0 This key represents any commands or aliases used to execute the package after it has been installed. >Note: The Windows Package Manager does not update the path during the install workflow. In those cases, the user may need to restart their shell or terminal before the command will execute the newly installed package. The Windows Package Manager does not support any behavior related to commands or aliases. - + >Note: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply.
@@ -452,7 +452,7 @@ ManifestVersion: 1.2.0 **Optional Field** This key represents the package family name specified in an MSIX installer. This value is used to assist with matching packages from a source to the program installed in Windows via Add / Remove Programs for list, and upgrade behavior. - + >Note: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply.
@@ -481,7 +481,7 @@ ManifestVersion: 1.2.0 **Optional Field** - This key represents the behavior associated with installers that abort the terminal. This most often occurs when a user is performing an upgrade of the running terminal. + This key represents the behavior associated with installers that abort the terminal. This most often occurs when a user is performing an upgrade of the running terminal. >Note: Windows Terminal no longer causes this to occur as the MSIX install behavior from the Windows Package Manager is deferred registration.
@@ -508,23 +508,23 @@ ManifestVersion: 1.2.0 ElevationRequirement - Indicator for elevation requirements when installing or upgrading packages. **Optional Field** - + This key represents which scope a package is required to be executed under. Some packages require user level execution while others require administrative level execution.
UnsupportedOSArchitectures - List of unsupported architectures for a package. - **Optional Field** - + **Optional Field** + This key represents any architectures a package is known not to be compatible with. Generally, this is associated with emulation modes.
Markets - List of supported markets for a package. - **Optional Field** - + **Optional Field** + This key represents any markets a package may be installed in. >Note: If a market is listed in both this key and the ExcludedMarkets key, the market will be excluded. Both keys are present to reduce the need to list the larger set of markets. @@ -533,8 +533,8 @@ ManifestVersion: 1.2.0
ExcludedMarkets - List of unsupported markets for a package. - **Optional Field** - + **Optional Field** + This key represents any markets a package may not be installed in. >Note: If a market is listed in both this key and the Markets key, the market will be excluded. Both keys are present to reduce the need to list the larger set of markets. @@ -548,19 +548,19 @@ ManifestVersion: 1.2.0 This key represents any status codes returned by the installer representing a success condition other than zero. >Note: Some return codes indicate a reboot is suggested or required. The Windows Package Manager does not support the reboot behavior currently. Some installers will force a reboot, and the Windows Package Manager does not currently suppress reboot behavior. - + >Note: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply.
- ExpectedReturnCodes - List of additional non-zero installer exit codes other than known default values by the Windows Package Manager. + ExpectedReturnCodes - List of additional non-zero installer exit codes other than known default values by the Windows Package Manager. **Optional Field** This key represents any status codes returned by the installer representing a condition other than zero. >Note: Some return codes indicate a reboot is suggested or required. The Windows Package Manager does not support the reboot behavior currently. Some installers will force a reboot, and the Windows Package Manager does not currently suppress reboot behavior. - + >Note: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply.
@@ -598,7 +598,7 @@ ManifestVersion: 1.2.0 **Optional Field** This key represents the product code specified in an MSI installer. This value is used to assist with matching packages from a source to the program installed in Windows via Add / Remove Programs for list, and upgrade behavior. - + >Note: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply.
@@ -607,7 +607,7 @@ ManifestVersion: 1.2.0 **Optional Field** - This key represents the values reported by Windows Apps & Features. When a package is installed, entries are made into the Windows Registry. + This key represents the values reported by Windows Apps & Features. When a package is installed, entries are made into the Windows Registry. @@ -626,7 +626,7 @@ ManifestVersion: 1.2.0 **Optional Field** This key represents the package version as displayed in Windows Apps & Features. It is used to help correlate installed packages with manifests in configured sources. - +
@@ -635,8 +635,8 @@ ManifestVersion: 1.2.0 **Optional Field** This key represents the Publisher reported in the Windows registry. It is used to help correlate installed packages with manifests in configured sources. - -
+ +
ProductCode - ProductCode is used for correlation of packages with manifests in configured sources. @@ -699,4 +699,4 @@ This key represents whether a warning message is displayed to the user prior to **Required Field** This key must have the value "1.2.0". The Microsoft community package repository validation pipelines also use this value to determine appropriate validation rules when evaluating this file. -
\ No newline at end of file + diff --git a/doc/manifest/schema/1.2.0/locale.md b/doc/manifest/schema/1.2.0/locale.md index 3007ed68a48..550f7204d83 100644 --- a/doc/manifest/schema/1.2.0/locale.md +++ b/doc/manifest/schema/1.2.0/locale.md @@ -160,7 +160,7 @@ ManifestVersion: 1.2.0 # The manifest syntax version **Optional Field** This key represents the license web site or specific web page provided the publisher or ISV. If there is a license web site or specific web page for the package, it is preferred over a generic license page for the publisher. - + If this is a link to the license file for an open source project, it should be specific to the version for the package. Some open source projects change their license over time. @@ -178,7 +178,7 @@ ManifestVersion: 1.2.0 # The manifest syntax version **Optional Field** This key represents the copyright web site or specific web page provided the publisher or ISV. If there is a copyright web site or specific web page for the package, it is preferred over a generic copyright page for the publisher. - + If this is a link to the copyright file for an open source project, it should be specific to the version for the package. Some open source projects change their copyright over time. @@ -207,21 +207,21 @@ ManifestVersion: 1.2.0 # The manifest syntax version **Optional Field** - This key represents the most common term users would search for when installing or upgrading a package. If only one package uses this moniker, then the [install], [list] and [upgrade] command may match with this package. - + This key represents the most common term users would search for when installing or upgrading a package. If only one package uses this moniker, then the [install], [list] and [upgrade] command may match with this package. + >Note:Moniker is the third property evaluated when searching for a matching package. - +
Tags - List of additional package search terms **Optional Field** - This key represents other common term users would search for when looking for packages. + This key represents other common term users would search for when looking for packages. >Note: The best practice is to present these terms in all lower case with hyphens rather than spaces.
- +
Agreements/b> - List of package agreements @@ -231,10 +231,10 @@ ManifestVersion: 1.2.0 # The manifest syntax version >Note: In the Windows Package Manager Community Repository, these are only allowed to be submitted by verified developers.
- +
AgreementLabel - The label for a package agreement - + **Optional Field** This key represents the label for a package agreement. @@ -242,7 +242,7 @@ ManifestVersion: 1.2.0 # The manifest syntax version
Agreement - The text for a package agreement - + **Optional Field** This key represents the text or body of a package agreement. @@ -250,7 +250,7 @@ ManifestVersion: 1.2.0 # The manifest syntax version
AgreementUrl - The URL for a package agreement - + **Optional Field** This key represents the URL for a package agreement. @@ -258,7 +258,7 @@ ManifestVersion: 1.2.0 # The manifest syntax version
Documentations - List of documentation - + **Optional Field** This key holds any documentation for providing software guides such as manuals and troubleshooting URLs. @@ -266,7 +266,7 @@ ManifestVersion: 1.2.0 # The manifest syntax version
DocumentLabel - The documentation label - + **Optional Field** This key represents the label for a documentation. @@ -274,7 +274,7 @@ ManifestVersion: 1.2.0 # The manifest syntax version
DocumentUrl - List of documentation - + **Optional Field** This key represents the URL for a documentation. @@ -282,7 +282,7 @@ ManifestVersion: 1.2.0 # The manifest syntax version
ReleaseDate - The Release Date for a package. - + **Optional Field** This key represents the release date for a package. @@ -290,7 +290,7 @@ ManifestVersion: 1.2.0 # The manifest syntax version
ReleaseNotes - The Release Notes for a package. - + **Optional Field** This key represents release notes for a package. @@ -298,7 +298,7 @@ ManifestVersion: 1.2.0 # The manifest syntax version
ReleaseNotesUrl - The Release Notes web page for a package. - + **Optional Field** This key represents release notes web page for a package. @@ -306,7 +306,7 @@ ManifestVersion: 1.2.0 # The manifest syntax version
PurchaseUrl - The Purchase URL for a package. - + **Optional Field** This key represents the purchase url for acquiring entitlement for a package. @@ -314,7 +314,7 @@ ManifestVersion: 1.2.0 # The manifest syntax version
InstallationNotes - The Installation Notes for a package. - + **Optional Field** This key represents the notes displayed to the user upon completion of a package installation. diff --git a/doc/manifest/schema/1.2.0/singleton.md b/doc/manifest/schema/1.2.0/singleton.md index e4b745c33f4..9cbf34b26b7 100644 --- a/doc/manifest/schema/1.2.0/singleton.md +++ b/doc/manifest/schema/1.2.0/singleton.md @@ -85,7 +85,7 @@ Installers: # The package installer ExpectedReturnCodes: # Optional non-zero installer return codes - ExpectedReturnCode: # Optional non-zero installer return code ReturnResponse: # Optional response for an expected return code - ReturnResponseUrl: # Optional response URL for an expected return code + ReturnResponseUrl: # Optional response URL for an expected return code ProductCode: # Optional product code of the installer AppsAndFeaturesEntries: # *Not implemented* Optional entries from the Add and Remove Programs (ARP) table - DisplayName: # *Not implemented* Optional program name shown in the ARP entry @@ -96,7 +96,7 @@ Installers: # The package installer InstallerType: # *Not implemented* Optional installer type UnsupportedArguments: # Optional list of Windows Package Manager Client arguments the installer does not support - UnsupportedArgument: # Optional unsupported Windows Package Manager Client argument - DisplayInstallWarnings: # *Not implemented* Optional indicator for packages that are known to interfere with running application during install + DisplayInstallWarnings: # *Not implemented* Optional indicator for packages that are known to interfere with running application during install ManifestType: singleton # The manifest type ManifestVersion: 1.2.0 # The manifest syntax version ``` @@ -111,7 +111,7 @@ Publisher: Microsoft PackageName: Windows Terminal License: MIT ShortDescription: The new Windows Terminal, a tabbed command line experience for Windows. -Installers: +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 @@ -168,8 +168,8 @@ ManifestVersion: 1.2.0 **Optional Field** - This key represents the most common term users would search for when installing or upgrading a package. If only one package uses this moniker, then the [install], [list] and [upgrade] command may match with this package. - + This key represents the most common term users would search for when installing or upgrading a package. If only one package uses this moniker, then the [install], [list] and [upgrade] command may match with this package. + >Note:Moniker is the third property evaluated when searching for a matching package.
@@ -178,11 +178,11 @@ ManifestVersion: 1.2.0 **Optional Field** - This key represents other common term users would search for when looking for packages. + This key represents other common term users would search for when looking for packages. >Note: The best practice is to present these terms in all lower case with hyphens rather than spaces.
- +
Agreements - List of package agreements @@ -192,10 +192,10 @@ ManifestVersion: 1.2.0 >Note: In the Windows Package Manager Community Repository, these are only allowed to be submitted by verified developers.
- +
AgreementLabel - The label for a package agreement - + **Optional Field** This key represents the label for a package agreement. @@ -203,7 +203,7 @@ ManifestVersion: 1.2.0
Agreement - The text for a package agreement - + **Optional Field** This key represents the text or body of a package agreement. @@ -211,7 +211,7 @@ ManifestVersion: 1.2.0
AgreementUrl - The URL for a package agreement - + **Optional Field** This key represents the URL for a package agreement. @@ -219,7 +219,7 @@ ManifestVersion: 1.2.0
Documentations - List of documentation - + **Optional Field** This key holds any documentation for providing software guides such as manuals and troubleshooting URLs. @@ -227,7 +227,7 @@ ManifestVersion: 1.2.0
DocumentLabel - The documentation label - + **Optional Field** This key represents the label for a documentation. @@ -235,7 +235,7 @@ ManifestVersion: 1.2.0
DocumentUrl - List of documentation - + **Optional Field** This key represents the URL for a documentation. @@ -243,7 +243,7 @@ ManifestVersion: 1.2.0
ReleaseDate - The Release Date for a package. - + **Optional Field** This key represents the release date for a package. @@ -251,7 +251,7 @@ ManifestVersion: 1.2.0
ReleaseNotes - The Release Notes for a package. - + **Optional Field** This key represents release notes for a package. @@ -259,7 +259,7 @@ ManifestVersion: 1.2.0
ReleaseNotesUrl - The Release Notes web page for a package. - + **Optional Field** This key represents release notes web page for a package. @@ -267,7 +267,7 @@ ManifestVersion: 1.2.0
PurchaseUrl - The Purchase URL for a package. - + **Optional Field** This key represents the purchase url for acquiring entitlement for a package. @@ -275,7 +275,7 @@ ManifestVersion: 1.2.0
InstallationNotes - The Installation Notes for a package. - + **Optional Field** This key represents the notes displayed to the user upon completion of a package installation. @@ -305,7 +305,7 @@ ManifestVersion: 1.2.0 **Optional Field** This key represents the locale for an installer *not* the package meta-data. Some installers are compiled with locale or language specific properties. If this key is present, it is used to represent the package locale for an installer. - + >Note: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply.
@@ -326,7 +326,7 @@ ManifestVersion: 1.2.0 **Optional Field** This key represents the minimum version of the Windows operating system supported by the package. - + >Note: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply.
@@ -340,7 +340,7 @@ ManifestVersion: 1.2.0 >Note: The Windows Package Manager defaults to the install mode providing install progress. A best practice is to determine if one of the supported installer technologies was used to build an installer with the .exe file extension. The [Windows Package Manager Manifest Creator] tool can be used to determine if one of the known tools was used to build an installer with the .exe file extension. >Note: The Windows Package Manager does not support loose executables with the .exe or .com file extension directly. Compressed files containing installers, loose executables, and Progressive Web Applications (PWAs) are also not supported. - + >Note: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply.
@@ -378,7 +378,7 @@ ManifestVersion: 1.2.0 **Optional Field** This key represents the scope the package is installed under. The two configurations are "user" and "machine". Some installers support only one of these scopes while others support both via arguments passed to the installer using "InstallerSwitches". - + >Note: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply.
@@ -399,7 +399,7 @@ ManifestVersion: 1.2.0 **Optional Field** - This key represents the set of switches passed to installers. + This key represents the set of switches passed to installers. >Note: The Microsoft community repository currently requires support for silent and silent with progress installation. Many custom .exe installers will require the proper switches to meet this requirement. The [Windows Package Manager Manifest Creator] tool can be used to determine if one of the known tools was used to build an installer with the .exe file extension. In the event the tool is unable to determine the tool used to build the installer, the publisher may have documentation for the proper switches.
@@ -412,7 +412,7 @@ ManifestVersion: 1.2.0 This key represents switches passed to the installer to provide a silent install experience. These would be used when the command `winget install --silent` is executed. >Note: When the Windows Package Manager installs a package using the "silent" install mode, any custom switches will also be passed to the installer. If a user applies override switches via command line via the Windows Package Manager, none of the switches from the manifest will be passed to the installer. - + >Note: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply.
@@ -468,7 +468,7 @@ ManifestVersion: 1.2.0 **Optional Field** This key represents any switches the Windows Package Manager will pass to the installer in addition to "Silent", "SilentWithProgress", and "Interactive". - + >Note: If a user applies override switches via command line via the Windows Package Manager, none of the switches from the manifest will be passed to the installer.
@@ -490,7 +490,7 @@ ManifestVersion: 1.2.0 This key represents any commands or aliases used to execute the package after it has been installed. >Note: The Windows Package Manager does not update the path during the install workflow. In those cases, the user may need to restart their shell or terminal before the command will execute the newly installed package. The Windows Package Manager does not support any behavior related to commands or aliases. - + >Note: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply.
@@ -572,7 +572,7 @@ ManifestVersion: 1.2.0 **Optional Field** This key represents the package family name specified in an MSIX installer. This value is used to assist with matching packages from a source to the program installed in Windows via Add / Remove Programs for list, and upgrade behavior. - + >Note: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply.
@@ -601,7 +601,7 @@ ManifestVersion: 1.2.0 **Optional Field** - This key represents the behavior associated with installers that abort the terminal. This most often occurs when a user is performing an upgrade of the running terminal. + This key represents the behavior associated with installers that abort the terminal. This most often occurs when a user is performing an upgrade of the running terminal. >Note: Windows Terminal no longer causes this to occur as the MSIX install behavior from the Windows Package Manager is deferred registration.
@@ -627,8 +627,8 @@ ManifestVersion: 1.2.0
ElevationRequirement - Indicator for elevation requirements when installing or upgrading packages. - **Optional Field** - + **Optional Field** + This key represents which scope a package is required to be executed under. Some packages require user level execution while others require administrative level execution. >Note: The behavior associated with this key is not implemented in the Windows Package Manager 1.2 client. @@ -637,16 +637,16 @@ ManifestVersion: 1.2.0
UnsupportedOSArchitectures - List of unsupported architectures for a package. - **Optional Field** - + **Optional Field** + This key represents any architectures a package is known not to be compatible with. Generally, this is associated with emulation modes.
Markets - List of supported markets for a package. - **Optional Field** - + **Optional Field** + This key represents any markets a package may be installed in. >Note: If a market is listed in both this key and the ExcludedMarkets key, the market will be excluded. Both keys are present to reduce the need to list the larger set of markets. @@ -655,8 +655,8 @@ ManifestVersion: 1.2.0
ExcludedMarkets - List of unsupported markets for a package. - **Optional Field** - + **Optional Field** + This key represents any markets a package may not be installed in. >Note: If a market is listed in both this key and the Markets key, the market will be excluded. Both keys are present to reduce the need to list the larger set of markets. @@ -670,19 +670,19 @@ ManifestVersion: 1.2.0 This key represents any status codes returned by the installer representing a success condition other than zero. >Note: Some return codes indicate a reboot is suggested or required. The Windows Package Manager does not support the reboot behavior currently. Some installers will force a reboot, and the Windows Package Manager does not currently suppress reboot behavior. - + >Note: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply.
- ExpectedReturnCodes - List of additional non-zero installer exit codes other than known default values by the Windows Package Manager. + ExpectedReturnCodes - List of additional non-zero installer exit codes other than known default values by the Windows Package Manager. **Optional Field** This key represents any status codes returned by the installer representing a condition other than zero. >Note: Some return codes indicate a reboot is suggested or required. The Windows Package Manager does not support the reboot behavior currently. Some installers will force a reboot, and the Windows Package Manager does not currently suppress reboot behavior. - + >Note: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply.
@@ -720,7 +720,7 @@ ManifestVersion: 1.2.0 **Optional Field** This key represents the product code specified in an MSI installer. This value is used to assist with matching packages from a source to the program installed in Windows via Add / Remove Programs for list, and upgrade behavior. - + >Note: This key may be present in the root of the manifest as the default value for all installer nodes. This key may also be present in an individual installer node as well. If this key is in the manifest root and in an installer node, the value in the installer node will apply.
@@ -729,7 +729,7 @@ ManifestVersion: 1.2.0 **Optional Field** - This key represents the values reported by Windows Apps & Features. When a package is installed, entries are made into the Windows Registry. + This key represents the values reported by Windows Apps & Features. When a package is installed, entries are made into the Windows Registry. >Note: The AppsAndFeatures behavior is not implemented in the Windows Package Manager 1.2 client.
@@ -750,7 +750,7 @@ ManifestVersion: 1.2.0 **Optional Field** This key represents the package version as displayed in Windows Apps & Features. It is used to help correlate installed packages with manifests in configured sources. - + >Note: The AppsAndFeatures behavior is not implemented in the Windows Package Manager 1.2 client.
@@ -760,7 +760,7 @@ ManifestVersion: 1.2.0 **Optional Field** This key represents the Publisher reported in the Windows registry. It is used to help correlate installed packages with manifests in configured sources. - + >Note: The AppsAndFeatures behavior is not implemented in the Windows Package Manager 1.2 client.
diff --git a/doc/manifest/schema/1.2.0/version.md b/doc/manifest/schema/1.2.0/version.md index 7233f23586d..406f4f189da 100644 --- a/doc/manifest/schema/1.2.0/version.md +++ b/doc/manifest/schema/1.2.0/version.md @@ -24,10 +24,10 @@ ManifestVersion: 1.2.0 # The manifest syntax version **Required Field** - This key is the unique identifier for a given package. - + This key is the unique identifier for a given package. + **Windows Package Manager Community Repository** - + This value is generally in the form of `Publisher.Package`. It is case sensitive, and this value must match the folder structure under the partition directory.
@@ -38,7 +38,7 @@ ManifestVersion: 1.2.0 # The manifest syntax version This key represents the version of the package. It is related to the specific release this manifests targets. In some cases you will see a perfectly formed [semantic version] number, and in other cases you might see something different. These may be date driven, or they might have other characters with some package specific meaning for example. - The Windows Package Manager client uses this version to determine whether or not an upgrade for a package is available. In some cases, packages may be released with a marketing driven version, and that causes trouble with the `winget upgrade` command. + The Windows Package Manager client uses this version to determine whether or not an upgrade for a package is available. In some cases, packages may be released with a marketing driven version, and that causes trouble with the `winget upgrade` command. The current best practice is to use the value reported in Add / Remove Programs when this version of the package is installed. In some cases, packages do not report a version resulting in an upgrade loop or other unwanted behavior.
@@ -59,7 +59,7 @@ ManifestVersion: 1.2.0 # The manifest syntax version ManifestType - The manifest type **Required Field** - + This key must have the value "version". The Microsoft community package repository validation pipelines also use this value to determine appropriate validation rules when evaluating this file.
diff --git a/doc/tools/SandboxTest.md b/doc/tools/SandboxTest.md index 9c77c6ec8bb..7c764d7cd09 100644 --- a/doc/tools/SandboxTest.md +++ b/doc/tools/SandboxTest.md @@ -1,7 +1,7 @@ # Using SandboxTest.ps1 The sandbox test script is designed to allow you to test manifests locally without having to install the application to your Windows installation directly. To do this, it makes use of the [Windows Sandbox](https://docs.microsoft.com/windows/security/threat-protection/windows-sandbox/windows-sandbox-overview). -First, [create a fork](https://docs.github.com/get-started/quickstart/fork-a-repo) of this repository and then [clone it](https://docs.github.com/repositories/creating-and-managing-repositories/cloning-a-repository) to your computer. Once the repository has finished cloning, you will need to open a PowerShell terminal since the SandboxTest script is designed to be run from the command line. In the PowerShell terminal which you just opened, navigate to the folder the repository was cloned into and then into the `Tools` folder. You can do this by using `cd \\winget-pkgs\Tools`. Once you are here, you should be ready to run the script. +First, [create a fork](https://docs.github.com/get-started/quickstart/fork-a-repo) of this repository and then [clone it](https://docs.github.com/repositories/creating-and-managing-repositories/cloning-a-repository) to your computer. Once the repository has finished cloning, you will need to open a PowerShell terminal since the SandboxTest script is designed to be run from the command line. In the PowerShell terminal which you just opened, navigate to the folder the repository was cloned into and then into the `Tools` folder. You can do this by using `cd \\winget-pkgs\Tools`. Once you are here, you should be ready to run the script. To test a manifest, simply call the script with the full path to the manifest as an argument. This will validate the manifest, open Windows Sandbox, and attempt to install the package defined in the manifest. If you have already validated your package, you can skip the validation by adding `-SkipManifestValidation` when running the command. @@ -21,4 +21,4 @@ In order to use the SandboxTest script, you must have Windows Sandbox enabled. T To enable the sandbox, open PowerShell and run the command `Enable-WindowsOptionalFeature -FeatureName "Containers-DisposableClientVM" -All -Online`. Once the command completes, restart your computer to finish the installation. # References to SandboxTest.ps1 -The SandboxTest script has been integrated as part of the toolset here in the winget-pkgs repository. The [YamlCreate Script](/doc/tools/YamlCreate.md) uses SandboxTest to test the creation of new manifests when they are created. The [PRTest Script](/Tools/PRTest.ps1) also uses SandboxTest as a dependency to test manifests which have been submitted to the repository in PRs. \ No newline at end of file +The SandboxTest script has been integrated as part of the toolset here in the winget-pkgs repository. The [YamlCreate Script](/doc/tools/YamlCreate.md) uses SandboxTest to test the creation of new manifests when they are created. The [PRTest Script](/Tools/PRTest.ps1) also uses SandboxTest as a dependency to test manifests which have been submitted to the repository in PRs.