winget-cli
winget-cli copied to clipboard
Support downloading packages in parallel, with multiple connections per package (similar to apt-fast)
Description of the new feature/enhancement
Support downloading packages in parallel, with multiple connections per package. Concept is similar to apt-fast. Especially useful for folks with intermittent/slow internet connections.
Bonus points for downloading the same package in parallel from different mirrors, or at least one package per mirror.
It would be nice if the download process uses something like torrent or other peer to peer method.
I support it!
I'd say it's useful for people with fast connections as they can saturate one source easily and/or get severely slowed down by handshakes
#151 Support Delivery Optimization includes the technology for parallel downloads. We will have some service side work necessary to enable this, and not all servers support range requests (so it will not work for all packages).
This work is in progress for Delivery Optimization. This issue will be used to track the remainder of the client work to take new keys being added to the schema for the required metadata.
Any news on this? I have several packages that are either quite large or download on a slow connection. It's a shame I have to wait for them while other packages could have been downloaded (and installed!) in the meantime. Also, could downloading the next package already begin while installing another package? I think that would speed up the process significantly, at least in my situation.
If parallelized downloads are tricky (because it depends on the users connection speed, etc.) and parallelized installations are difficult too (which is just the case, I think), at least two parallel processes/threads could be considered:
- Download queue: download all packages serially and place on...
- Installation queue: install packages sequentially
Having downloads running in the background while installing packages would be a huge advantage.
@mrwensveen There are limits in Windows with respect to how many things can be installed in parallel. MSIX limits to six, MSI is one at a time, and for the sake of "safety" .exe-based installers are also one at a time. Portable packages shouldn't step on each other so those should also be safe "in parallel".
When we think about doing things in parallel, winget upgrade --all and winget import <packages.json> are the two flows that this would apply to. We've also got to reason through anything related to Delivery Optimization from the download perspective. We should be able to download "all" packages, and then sequence installs.
Some possible caveats
If you can handle parallel downloads, unfortunately we cannot make use of installations, finally MSI will prevent this (already mentioned).
Link saturation can be only determined per endpoint, so WAN might clog up, if a serious number of clients going to update simulaneously.
Mind winget will form the base for many Intune related App deployments in the future. Also should see broader use for on-premises implementations.
Limiting the bandwidth per clients via settings catalog or GPO might still cause unpredictable results with implementation of parallel downloads.
How about NAT? Could this cause a saturation of dynamic ports? Not an expert here.
What's the current status of this issue? It's already 3 years old and it would be great to have implemented...
Is this still in progress? This would be great to have.
Any news ?
@denelon actually bumping this comes at a feasible time.
Recently noticed that winget now handles msi correctly and will not cancel but patiently wait for installations to finish when another native or wrapped msi is running. This means it seems to handle feedback from msi installer message, suppresses the state.
For inno, installshield and exe there are no requirements of avoidance of parallel Installation I am doing that since Windows 95, even with skipping the "requirement to restart" after every install / registry change. It was all good. A thing we do not have inherited in modern OS.
Every time i upgrade windows i come back to check this. Hoping it gets added just for downloading, installing of course could be done 1 by 1.
Added another discussion without knowing about this.This one's a feature that should be implemented. It would make downloads faster and winget better.
bump :)