winget-cli icon indicating copy to clipboard operation
winget-cli copied to clipboard

Support downloading packages in parallel, with multiple connections per package (similar to apt-fast)

Open nth10sd opened this issue 5 years ago • 16 comments

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.

nth10sd avatar May 19 '20 23:05 nth10sd

Bonus points for downloading the same package in parallel from different mirrors, or at least one package per mirror.

MarkusTeufelberger avatar May 20 '20 09:05 MarkusTeufelberger

It would be nice if the download process uses something like torrent or other peer to peer method.

madcampos avatar May 21 '20 04:05 madcampos

I support it!

masx200 avatar May 24 '20 12:05 masx200

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

zakius avatar May 28 '20 06:05 zakius

#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).

denelon avatar Apr 05 '21 19:04 denelon

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.

denelon avatar Dec 01 '21 18:12 denelon

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:

  1. Download queue: download all packages serially and place on...
  2. Installation queue: install packages sequentially

Having downloads running in the background while installing packages would be a huge advantage.

mrwensveen avatar Dec 03 '22 12:12 mrwensveen

@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.

denelon avatar Dec 05 '22 18:12 denelon

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.

Karl-WE avatar Dec 30 '22 22:12 Karl-WE

What's the current status of this issue? It's already 3 years old and it would be great to have implemented...

BullyWiiPlaza avatar Sep 29 '23 17:09 BullyWiiPlaza

Is this still in progress? This would be great to have.

beingmerry avatar May 15 '24 02:05 beingmerry

Any news ?

GamerClassN7 avatar Jun 17 '24 18:06 GamerClassN7

@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.

Karl-WE avatar Jun 20 '24 07:06 Karl-WE

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.

Battler624 avatar Oct 05 '24 03:10 Battler624

Added another discussion without knowing about this.This one's a feature that should be implemented. It would make downloads faster and winget better.

HeathKnowles avatar Mar 19 '25 19:03 HeathKnowles

bump :)

ka-iden avatar Jun 10 '25 17:06 ka-iden