Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
nth10sd opened this issue May 19, 2020 · 14 comments
Labels
Issue-Feature This is a feature request for the Windows Package Manager client.

Comments

@nth10sd
Copy link

nth10sd commented May 19, 2020

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 nth10sd added the Issue-Feature This is a feature request for the Windows Package Manager client. label May 19, 2020
@MarkusTeufelberger
Copy link

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

@madcampos
Copy link

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

@masx200
Copy link

masx200 commented May 24, 2020

I support it!

@zakius
Copy link

zakius commented May 28, 2020

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

@denelon denelon added this to the Package Manager Backlog milestone May 28, 2020
@denelon denelon modified the milestones: Package Manager Backlog, Package Manager v0.29.x Aug 24, 2020
@denelon
Copy link
Contributor

denelon commented Apr 5, 2021

#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 denelon modified the milestones: Package Manager v0.29.x, Package Manager Backlog, Backlog - Windows Package Manager, v.Next - Windows Package Manager May 3, 2021
@denelon denelon modified the milestones: v.Next-Client, v1.3-Client Dec 1, 2021
@denelon
Copy link
Contributor

denelon commented Dec 1, 2021

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 denelon modified the milestones: v1.3-Client, v.Next-Client Mar 11, 2022
@mrwensveen
Copy link

mrwensveen commented Dec 3, 2022

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.

@denelon
Copy link
Contributor

denelon commented Dec 5, 2022

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

@Karl-WE
Copy link
Contributor

Karl-WE commented Dec 30, 2022

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.

@BullyWiiPlaza
Copy link

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

@beingmerry
Copy link

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

@GamerClassN7
Copy link

Any news ?

@Karl-WE
Copy link
Contributor

Karl-WE commented Jun 20, 2024

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

@Battler624
Copy link

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.

@denelon denelon removed this from the v.Next-Client milestone Nov 14, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Issue-Feature This is a feature request for the Windows Package Manager client.
Projects
None yet
Development

No branches or pull requests