You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Allow multiple apps to be installed using a single command #219
Or via config file like Chocolatey (e.g. packages.config)
Reacted by Bruno, Marco Campos, Łukasz Zborek, Adam Kauffman, Paul Wojtysiak, Fujita Hitoshi, Jeremy Johnson, Sim Jun Hyeok, JCaldeira, Jerry Winkler and 10 more
managing multiple apps in a single command should be supported for all commands , not install only but for list / upgrade / uninstall too.
I definitely agree with you! At least uninstall should be covered as well for feature parity between installation and removal process of an app. But implementing this for upgrade too would be very much welcome!
modified the milestones: This milestone has been deleted, This milestone has been deleted, This milestone has been deleted, This milestone has been deletedon May 3, 2021
We're looking to cut another preview in the next week or two. It will show up in the releases as a "preview" and it will be published to Windows Insider Dev.
The below winget command do work for winget install-ing multiple packages at once via their ids.
As pointed above by Demitrius Nelon (@denelon)Bruno (@brunovieira97) and others, it would also be great to support multiple package ids for uninstall and maybe upgrade commands, for feature parity.
Indeed, I was using the same arguments for install and uninstall --disable-interactivity --accept-package-agreements --accept-source-agreements although uninstall does not support --accept-package-agreements (which makes sense). Great to hear!
And how does this work with the integrated Powershell module
Example:
install-wingetpackage JiriPolasek.ColorsforCommandPalette JiriPolasek.DevNumbersforCommandPalette
Error Message:
Install-WinGetPackage: No packages matched the given input criteria.
JasonCraneAdkins, have you tried passing an array to -ID, like -ID @('JiriPolasek.ColorsforCommandPalette', 'JiriPolasek.DevNumbersforCommandPalette')? If not, I'd say post Get-Error's CLIXML to a new Q&A discussion.
JasonCraneAdkins, I explicitly suggested that you discuss this in a new Q&A for a reason – until you've confirmed that you've located a bug, it's not worth filing an issue for, and even if you knew it was, it would be a separate issue to this, since the scope is the PowerShell module's translation later.
I still suggest that you re-file this there, asking whether this is possible, and if so, how. When you do, please link it here, and I'll try to assist.
Though, I can't easily assist you, because that log is unreadable: you need to render it with semantic markup. I suggest that you read the Markdown basics on fenced code blocks.
Activity
shawnwildermuth commentedon May 20, 2020
Or via config file like Chocolatey (e.g. packages.config)
masx200 commentedon May 24, 2020
I support it!
denelon commentedon Aug 19, 2020
This is not the same thing as #156
brunovieira97 commentedon May 3, 2021
I definitely agree with you! At least
uninstallshould be covered as well for feature parity between installation and removal process of an app. But implementing this forupgradetoo would be very much welcome!sanamhub commentedon Oct 6, 2021
I upvote (support) for this issue!
This is extremely needed thing 🚀
13 remaining items
emoxam commentedon Feb 7, 2023
When and how ill we get the new release ?
sanamhub commentedon Feb 7, 2023
This feature will land in
v1.5which isDue by April 30, 2023For more: https://github.com/microsoft/winget-cli/milestone/39
emoxam commentedon Feb 7, 2023
And if i joined the Windows Package Manager Insider program?
sanamhub commentedon Feb 7, 2023
I think this is it: https://devblogs.microsoft.com/commandline/windows-package-manager-preview/
emoxam commentedon Feb 7, 2023
Will it appears here ? https://github.com/microsoft/winget-cli/tags
How fast ?
denelon commentedon Feb 7, 2023
We're looking to cut another preview in the next week or two. It will show up in the releases as a "preview" and it will be published to Windows Insider Dev.
jo-chemla commentedon Sep 7, 2023
The below winget command do work for
winget install-ing multiple packages at once via their ids.As pointed above by Demitrius Nelon (@denelon) Bruno (@brunovieira97) and others, it would also be great to support multiple package ids for
uninstalland maybeupgradecommands, for feature parity.florelis commentedon Sep 7, 2023
Jonathan Chemla (@jo-chemla)
uninstallandupgradealready support multiple IDs. It was all part of the same change as multiple IDs forinstalljo-chemla commentedon Sep 8, 2023
Indeed, I was using the same arguments for install and uninstall
--disable-interactivity --accept-package-agreements --accept-source-agreementsalthough uninstall does not support--accept-package-agreements(which makes sense). Great to hear!JasonCraneAdkins commentedon Jun 24, 2025
And how does this work with the integrated Powershell module
Example:
install-wingetpackage JiriPolasek.ColorsforCommandPalette JiriPolasek.DevNumbersforCommandPalette
Error Message:
Install-WinGetPackage: No packages matched the given input criteria.
beedell-roke commentedon Jun 24, 2025
JasonCraneAdkins, have you tried passing an array to
-ID, like-ID @('JiriPolasek.ColorsforCommandPalette', 'JiriPolasek.DevNumbersforCommandPalette')? If not, I'd say postGet-Error's CLIXML to a new Q&A discussion.JasonCraneAdkins commentedon Jun 24, 2025
Now i Did.
Here is the output
`
#> install-wingetpackage -id @('JiriPolasek.MediaControlsforCommandPalet','JiriPolasek.RecentFilesforCommandPalette')
Install-WinGetPackage: Cannot convert 'System.Object[]' to the type 'System.String' required by parameter 'Id'. Specified method is not supported.
#> get-error
Exception :
Type : System.Management.Automation.ParameterBindingException
Message : Cannot convert 'System.Object[]' to the type 'System.String' required by parameter 'Id'. Specified method is not supported.
ParameterName : Id
ParameterType : [System.String]
TypeSpecified : [System.Object[]]
ErrorId : CannotConvertArgument
Line : 1
Offset : 27
CommandInvocation :
MyCommand : Install-WinGetPackage
ScriptLineNumber : 1
OffsetInLine : 1
HistoryId : 35
Line : install-wingetpackage -id @('JiriPolasek.MediaControlsforCommandPalet','JiriPolasek.RecentFilesforCommandPalette')
Statement : install-wingetpackage -id @('JiriPolasek.MediaControlsforCommandPalet','JiriPolasek.RecentFilesforCommandPalette')
PositionMessage : At line:1 char:1
+ install-wingetpackage -id @('JiriPolasek.MediaControlsforCommandPalet …
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
InvocationName : install-wingetpackage
PipelineLength : 1
PipelinePosition : 1
ErrorRecord :
Exception :
Type : System.Management.Automation.ParentContainsErrorRecordException
Message : Cannot convert 'System.Object[]' to the type 'System.String' required by parameter 'Id'. Specified method is not supported.
HResult : -2146233087
CategoryInfo : InvalidArgument: (:) [Install-WinGetPackage], ParentContainsErrorRecordException
FullyQualifiedErrorId : CannotConvertArgument,Microsoft.WinGet.Client.Commands.InstallPackageCmdlet
InvocationInfo :
MyCommand : Install-WinGetPackage
ScriptLineNumber : 1
OffsetInLine : 27
HistoryId : 35
Line : install-wingetpackage -id @('JiriPolasek.MediaControlsforCommandPalet','JiriPolasek.RecentFilesforCommandPalette')
Statement : @('JiriPolasek.MediaControlsforCommandPalet','JiriPolasek.RecentFilesforCommandPalette')
PositionMessage : At line:1 char:27
+ … package -id @('JiriPolasek.MediaControlsforCommandPalet','JiriPolasek …
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
CommandOrigin : Internal
ScriptStackTrace : at , : line 1
TargetSite :
Name : CoerceTypeAsNeeded
DeclaringType : [System.Management.Automation.ParameterBinderBase]
MemberType : Method
Module : System.Management.Automation.dll
Data : System.Collections.ListDictionaryInternal
InnerException :
Type : System.NotSupportedException
TargetSite :
Name : CoerceTypeAsNeeded
DeclaringType : [System.Management.Automation.ParameterBinderBase]
MemberType : Method
Module : System.Management.Automation.dll
Message : Specified method is not supported.
Source : System.Management.Automation
HResult : -2146233067
StackTrace :
at System.Management.Automation.ParameterBinderBase.CoerceTypeAsNeeded(CommandParameterInternal argument, String parameterName, Type toType, ParameterCollectionTypeInformation collectionTypeInfo, Object currentValue)
Source : System.Management.Automation
HResult : -2146233087
StackTrace :
at System.Management.Automation.ParameterBinderBase.CoerceTypeAsNeeded(CommandParameterInternal argument, String parameterName, Type toType, ParameterCollectionTypeInformation collectionTypeInfo, Object currentValue)
at System.Management.Automation.ParameterBinderBase.BindParameter(CommandParameterInternal parameter, CompiledCommandParameter parameterMetadata, ParameterBindingFlags flags)
at System.Management.Automation.CmdletParameterBinderController.BindParameter(CommandParameterInternal argument, MergedCompiledCommandParameter parameter, ParameterBindingFlags flags)
at System.Management.Automation.CmdletParameterBinderController.BindParameter(UInt32 parameterSets, CommandParameterInternal argument, MergedCompiledCommandParameter parameter, ParameterBindingFlags flags)
at System.Management.Automation.CmdletParameterBinderController.BindNamedParameter(UInt32 parameterSets, CommandParameterInternal argument, MergedCompiledCommandParameter parameter)
at System.Management.Automation.ParameterBinderController.BindNamedParameters(UInt32 parameterSets, Collection
1 arguments) at System.Management.Automation.CmdletParameterBinderController.BindCommandLineParametersNoValidation(Collection1 arguments)at System.Management.Automation.CmdletParameterBinderController.BindCommandLineParameters(Collection
1 arguments) at System.Management.Automation.CommandProcessor.BindCommandLineParameters() at System.Management.Automation.CommandProcessor.Prepare(IDictionary psDefaultParameterValues) at System.Management.Automation.CommandProcessorBase.DoPrepare(IDictionary psDefaultParameterValues) at System.Management.Automation.Internal.PipelineProcessor.Start(Boolean incomingStream) at System.Management.Automation.Internal.PipelineProcessor.SynchronousExecuteEnumerate(Object input) --- End of stack trace from previous location --- at System.Management.Automation.Internal.PipelineProcessor.SynchronousExecuteEnumerate(Object input) at System.Management.Automation.PipelineOps.InvokePipeline(Object input, Boolean ignoreInput, CommandParameterInternal[][] pipeElements, CommandBaseAst[] pipeElementAsts, CommandRedirection[][] commandRedirections, FunctionContext funcContext) at System.Management.Automation.Interpreter.ActionCallInstruction6.Run(InterpretedFrame frame)at System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame)
CategoryInfo : InvalidArgument: (:) [Install-WinGetPackage], ParameterBindingException
FullyQualifiedErrorId : CannotConvertArgument,Microsoft.WinGet.Client.Commands.InstallPackageCmdlet
InvocationInfo :
MyCommand : Install-WinGetPackage
ScriptLineNumber : 1
OffsetInLine : 27
HistoryId : 35
Line : install-wingetpackage -id @('JiriPolasek.MediaControlsforCommandPalet','JiriPolasek.RecentFilesforCommandPalette')
Statement : @('JiriPolasek.MediaControlsforCommandPalet','JiriPolasek.RecentFilesforCommandPalette')
PositionMessage : At line:1 char:27
+ … package -id @('JiriPolasek.MediaControlsforCommandPalet','JiriPolasek …
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
CommandOrigin : Internal
ScriptStackTrace : at , : line 1`
beedell-roke commentedon Jun 24, 2025
JasonCraneAdkins, I explicitly suggested that you discuss this in a new Q&A for a reason – until you've confirmed that you've located a bug, it's not worth filing an issue for, and even if you knew it was, it would be a separate issue to this, since the scope is the PowerShell module's translation later.
I still suggest that you re-file this there, asking whether this is possible, and if so, how. When you do, please link it here, and I'll try to assist.
Though, I can't easily assist you, because that log is unreadable: you need to render it with semantic markup. I suggest that you read the Markdown basics on fenced code blocks.